diff options
author | Ralph Amissah <ralph@amissah.com> | 2012-02-14 21:32:53 -0500 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2012-02-14 21:33:13 -0500 |
commit | 6d898f1eb74160fbc7d6365b3ad8d6b9417d2f19 (patch) | |
tree | 066bf34901b3169eec6a573e58ce971ec2fbde8e | |
parent | v3dv: dal, remove sisu_manifest from document structure & toc (diff) |
v3dv: control hookssisu_3.1.14
* hooks to make it possible to control (via: the command line; the document
markup header, or; the command line) the likes of: toc, manifest,
manifest-links, metadata, html-minitoc, html-navigation, html-navigation-bar;
these are switched on by default and control takes the form of making it
possible to switch them off.
-rw-r--r-- | data/doc/sisu/CHANGELOG_v3 | 6 | ||||
-rw-r--r-- | lib/sisu/v3dv/html_segments.rb | 3 | ||||
-rw-r--r-- | lib/sisu/v3dv/options.rb | 64 | ||||
-rw-r--r-- | lib/sisu/v3dv/param.rb | 3 | ||||
-rw-r--r-- | lib/sisu/v3dv/sysenv.rb | 221 |
5 files changed, 294 insertions, 3 deletions
diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3 index bfbb5340..34757240 100644 --- a/data/doc/sisu/CHANGELOG_v3 +++ b/data/doc/sisu/CHANGELOG_v3 @@ -47,6 +47,12 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.1.14.orig.tar.xz * v3dv: dal, remove sisu_manifest from document structure & toc (metadata retained (provide link to sisu_manifest)), html & epub coding affected +* v3dv: hooks to make it possible to control (via: the command line; the + document markup header, or; the command line) the likes of: toc, manifest, + manifest-links, metadata, html-minitoc, html-navigation, html-navigation-bar; + these are switched on by default and control takes the form of making it + possible to switch them off. + * v3 v3dv: document --redirect, --dump, -j update sisu_commands.sst [documents not generated until v3.2.0 (when v3dv branch is merged into v3)] diff --git a/lib/sisu/v3dv/html_segments.rb b/lib/sisu/v3dv/html_segments.rb index 05f30cc4..b20d2271 100644 --- a/lib/sisu/v3dv/html_segments.rb +++ b/lib/sisu/v3dv/html_segments.rb @@ -138,6 +138,7 @@ module SiSU_HTML_Seg @seg_name_html=@@seg_name_html || nil @seg_name_html_tracker=@@tracker || nil @env=SiSU_Env::InfoEnv.new(@md.fns) if @md + @make=SiSU_Env::InfoSet.new(@md) if @md if @md @title_banner_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_seg_title_banner? end @@ -244,7 +245,7 @@ module SiSU_HTML_Seg SiSU_HTML_Seg::Seg.new(@md).tail segfilename="#{@file.output_path.html_seg.dir}/#{@@seg_name_html[tracking-1]}#{@md.lang_code_insert}#{Sfx[:html]}" output_seg_file=File.new(segfilename,'w') if @@seg_name_html[tracking-1] - minitoc=(@env.html_minitoc?) \ + minitoc=(@make.html_minitoc?) \ ? @minitoc : '' if dob.is==:heading \ diff --git a/lib/sisu/v3dv/options.rb b/lib/sisu/v3dv/options.rb index fbb3261e..b2b7ff15 100644 --- a/lib/sisu/v3dv/options.rb +++ b/lib/sisu/v3dv/options.rb @@ -486,8 +486,68 @@ module SiSU_Commandline || mod.inspect =~/"--maintenance|--keep-processing-files"/) \ ? { bool: true } : { bool: false } - act[:ocn]=if mod.inspect =~/"--no-ocn"/ - { bool: false } + act[:switch]=if mod.inspect =~/"--switch-off=/ + off_list=mod.join(';').gsub(/^.*--switch-off=['"]?(.+?)(?:['"];.+)?$/,'\1') + off_list=off_list.scan(/[^,;\s]+/) + { bool: false, off: off_list} + else { bool: true, off: [] } + end + act[:ocn]=if mod.inspect =~/"--no-ocn"/ \ + || act[:switch][:off].inspect =~/"ocn"/ + { bool: false } + else { bool: true } + end + act[:toc]=if mod.inspect =~/"--no-toc"/ \ + || act[:switch][:off].inspect =~/"toc"/ + { bool: false } + else { bool: true } + end + act[:manifest]=if mod.inspect =~/"--no-manifest"/ \ + || act[:switch][:off].inspect =~/"manifest"/ + #|| mod.inspect =~/"--(?:redirect|dump)/ + { bool: false } + else { bool: true } + end + act[:manifest_links]=if mod.inspect =~/"--no-manifest-links"/ \ + || act[:switch][:off].inspect =~/"manifest_links"/ \ + || mod.inspect =~/"--(?:redirect|dump)/ + { bool: false } + else { bool: true } + end + act[:manifest_minitoc]=if mod.inspect =~/"--no-manifest-minitoc"/ \ + || act[:switch][:off].inspect =~/"manifest_minitoc"|"minitoc"/ + #|| mod.inspect =~/"--(?:redirect|dump)/ + { bool: false } + else { bool: true } + end + act[:metadata]=if mod.inspect =~/"--no-metadata"/ \ + || act[:switch][:off].inspect =~/"metadata"/ + { bool: false } + else { bool: true } + end + act[:html_minitoc]=if mod.inspect =~/"--no-html-minitoc"/ \ + || act[:switch][:off].inspect =~/"html_minitoc"|"minitoc"/ + { bool: false } + else { bool: true } + end + act[:html_navigation]=if mod.inspect =~/"--no-html-navigation"/ \ + || act[:switch][:off].inspect =~/"html_navigation"|"nav"/ + { bool: false } + else { bool: true } + end + act[:html_navigation_bar]=if mod.inspect =~/"--no-html-navigation-bar"/ \ + || act[:switch][:off].inspect =~/"html_navigation_bar"|"navbar"/ + { bool: false } + else { bool: true } + end + act[:html_search_form]=if mod.inspect =~/"--no-html-search-form"/ \ + || act[:switch][:off].inspect =~/"html_search_form"|"search"/ + { bool: false } + else { bool: true } + end + act[:html_right_column]=if mod.inspect =~/"--no-html-right-column"/ \ + || act[:switch][:off].inspect =~/"html_right_column"|"promo"/ + { bool: false } else { bool: true } end act[:dal]=(cmd =~/m/ \ diff --git a/lib/sisu/v3dv/param.rb b/lib/sisu/v3dv/param.rb index fac9ad76..8d3379b7 100644 --- a/lib/sisu/v3dv/param.rb +++ b/lib/sisu/v3dv/param.rb @@ -811,6 +811,9 @@ module SiSU_Param else nil end end + def omit_list + m=@h['omit'] + end def texpdf_font def main @h['texpdf_font'] \ diff --git a/lib/sisu/v3dv/sysenv.rb b/lib/sisu/v3dv/sysenv.rb index b305dfb7..fcfc234b 100644 --- a/lib/sisu/v3dv/sysenv.rb +++ b/lib/sisu/v3dv/sysenv.rb @@ -1199,6 +1199,129 @@ module SiSU_Env else false end end + def manifest_minitoc? + flag=if (defined? @rc['manifest']['minitoc'] \ + and not @rc['manifest']['minitoc'].nil?) + @rc['manifest']['minitoc'] + else false + end + end + def build + def omit_list + @off_list ||=if (defined? @rc['omit_list'] \ + and not @rc['omit_list'].nil?) + @rc['omit_list'] + elsif (defined? @rc['omit']['list'] \ + and not @rc['omit']['list'].nil?) + @rc['omit']['list'] + else + nil + end + end + def listed?(test) #fix + listed=if omit_list + x=(omit_list.scan(/\b#{test}\b/)).join + test==x \ + ? true \ + : false + else + false + end + listed + end + def ocn? + flag=if (defined? @rc['omit']['ocn'] \ + and not @rc['omit']['ocn'].nil?) \ + or listed?('ocn') + false + else + true + end + end + def toc? + flag=if (defined? @rc['omit']['toc'] \ + and not @rc['omit']['toc'].nil?) \ + or listed?('toc') + false + else + true + end + end + def manifest? + flag=if (defined? @rc['omit']['manifest'] \ + and not @rc['omit']['manifest'].nil?) \ + or listed?('manifest') + false + else + true + end + end + def manifest_links? + flag=if (defined? @rc['omit']['manifest_links'] \ + and not @rc['omit']['manifest_links'].nil?) \ + or listed?('manifest_links') + false + else + true + end + end + def manifest_minitoc? + flag=if (defined? @rc['omit']['manifest_minitoc'] \ + and not @rc['omit']['manifest_minitoc'].nil?) \ + or listed?('manifest_minitoc') + false + else + true + end + end + def html_minitoc? + flag=if (defined? @rc['omit']['html_minitoc'] \ + and not @rc['omit']['html_minitoc'].nil?) \ + or (listed?('html_minitoc') \ + || listed?('minitoc')) + false + else + true + end + end + def html_navigation? + flag=if (defined? @rc['omit']['html_navigation'] \ + and not @rc['omit']['html_navigation'].nil?) \ + or listed?('html_navigation') + false + else + true + end + end + def html_navigation_bar? + flag=if (defined? @rc['omit']['html_navigation_bar'] \ + and not @rc['omit']['html_navigation_bar'].nil?) \ + or listed?('html_navigation_bar') + false + else + true + end + end + def html_search_form? + flag=if (defined? @rc['omit']['html_search_form'] \ + and not @rc['omit']['html_search_form'].nil?) \ + or listed?('html_search_form') + false + else + true + end + end + def html_right_column? + flag=if (defined? @rc['omit']['html_right_column'] \ + and not @rc['omit']['html_right_column'].nil?) \ + or listed?('html_right_column') + false + else + true + end + end + self + end def odt_ocn? ((defined? @rc['odt']['ocn']) \ && @rc['odt']['ocn']==true) \ @@ -4826,6 +4949,104 @@ WOK self end end + class InfoSet #<InfoEnv + def initialize(md) + @md=md + @env=SiSU_Env::InfoEnv.new(md.fns) + end + def heading_omit_list + @md.make.omit_list + end + def not_heading_make_omit_listed?(test) #fix + listed=if heading_omit_list + x=(heading_omit_list.scan(/\b#{test}\b/)).join + test==x \ + ? false \ + : true + else + true + end + listed + end + def ocn? + @md.opt.opt_act[:ocn][:bool] \ + && (@env.build.ocn?) \ + ? true \ + : false + end + def toc? + @md.opt.opt_act[:toc][:bool] \ + && (not_heading_make_omit_listed?('ocn')) \ + && (@env.build.toc?) \ + ? true \ + : false + end + def manifest? + @md.opt.opt_act[:manifest][:bool] \ + && (not_heading_make_omit_listed?('manifest')) \ + && (@env.build.manifest?) \ + ? true \ + : false + end + def manifest_links? + @md.opt.opt_act[:manifest_links][:bool] \ + && (not_heading_make_omit_listed?('manifest_links')) \ + && (@env.build.manifest_links?) \ + ? true \ + : false + end + def manifest_minitoc? + @md.opt.opt_act[:manifest_minitoc][:bool] \ + && (not_heading_make_omit_listed?('manifest_minitoc')) \ + && (@env.build.manifest_minitoc?) \ + ? true \ + : false + end + def metadata? + @md.opt.opt_act[:metadata][:bool] \ + && (not_heading_make_omit_listed?('metadata')) \ + && (@env.build.metadata?) \ + ? true \ + : false + end + def html_minitoc? + @md.opt.opt_act[:html_minitoc][:bool] \ + && ((not_heading_make_omit_listed?('html_minitoc')) \ + || (not_heading_make_omit_listed?('minitoc'))) \ + && (@env.build.html_minitoc?) \ + ? true \ + : false + end + def html_navigation? + @md.opt.opt_act[:html_navigation][:bool] \ + && (not_heading_make_omit_listed?('html_navigation')) \ + && (@env.build.html_navigation?) \ + ? true \ + : false + end + def html_navigation_bar? + @md.opt.opt_act[:html_navigation_bar][:bool] \ + && (not_heading_make_omit_listed?('html_navigation_bar')) \ + && (@env.build.html_navigation_bar?) \ + ? true \ + : false + end + def html_search_form? + @md.opt.opt_act[:html_search_form][:bool] \ + && (not_heading_make_omit_listed?('html_search_form')) \ + && (@env.build.html_search_form?) \ + ? true \ + : false + end + def html_right_column? + @md.opt.opt_act[:html_right_column][:bool] \ + && ((not_heading_make_omit_listed?('html_right_column')) \ + || (not_heading_make_omit_listed?('html_promo'))) \ + && (@env.build.html_right_column?) \ + ? true \ + : false + end + end class CreateFile <InfoEnv #todo unify with FileOp def initialize(fns) begin |