From 9f278652ce86604c11d8c2b51c7ed255e7e1d1f6 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Sun, 3 Feb 2013 22:16:52 -0500
Subject: v4: html (urls), scroll & seg optionally discrete, individually
 callable

* --html (both), --html-scroll, --html-seg
* [possibly of interest where only one form of html of interest for use &/or to
  cut generation time (roughly to 63% for --html-scroll only)]
---
 lib/sisu/v4/html.rb    | 106 +++++++++++++++++++++++++++----------------------
 lib/sisu/v4/hub.rb     |  45 +++++++++++++++++++--
 lib/sisu/v4/options.rb |  24 +++++++++--
 lib/sisu/v4/urls.rb    |  12 ++++--
 4 files changed, 129 insertions(+), 58 deletions(-)

(limited to 'lib')

diff --git a/lib/sisu/v4/html.rb b/lib/sisu/v4/html.rb
index 9233a5f2..9e6ec0fa 100644
--- a/lib/sisu/v4/html.rb
+++ b/lib/sisu/v4/html.rb
@@ -101,16 +101,22 @@ module SiSU_HTML
         data=nil
         tuned_file_array=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
         data=tuned_file_array
-        scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll
+        if @opt.act[:html_scroll][:set]==:on 
+          scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll
+        end
         toc=SiSU_HTML::Source::Toc.new(@md,data).songsheet
         links_guide=SiSU_HTML::Source::LinksGuide.new(data,@md).toc
         data=tuned_file_array
         scr_toc=SiSU_HTML::Source::ScrollHeadAndSegToc.new(@md,toc,links_guide).in_common #watch
-        SiSU_HTML::Source::Seg.new(@md,data).songsheet
+        if @opt.act[:html_seg][:set]==:on 
+          SiSU_HTML::Source::Seg.new(@md,data).songsheet
+        end
         data=tuned_file_array
-        scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet
-        scroll=SiSU_HTML::Source::ScrollOutput.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish
-        SiSU_HTML::Source::Output.new(scroll,@md).scroll
+        if @opt.act[:html_scroll][:set]==:on 
+          scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet
+          scroll=SiSU_HTML::Source::ScrollOutput.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish
+          SiSU_HTML::Source::Output.new(scroll,@md).scroll
+        end
       rescue
         SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
           __LINE__.to_s + ':' + __FILE__
@@ -589,7 +595,9 @@ WOK
         ads=SiSU_HTML_Promo::Ad.new(@md)
         @segtoc << format_head_toc.seg_navigation_tail << ads.div.close << ads.display << format_head_toc.html_close
         @segtoc=@segtoc.flatten.compact #watch
-        SiSU_HTML::Source::Output.new(@segtoc,@md).segtoc
+        if @md.opt.act[:html_seg][:set]==:on 
+          SiSU_HTML::Source::Output.new(@segtoc,@md).segtoc
+        end
         @segtoc=[]
         @toc[:scr],@toc[:seg]=[],[]
         toc_shared
@@ -618,54 +626,58 @@ WOK
         @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
       end
       def scroll
-        begin
-          @filename_html_scroll=@file.write_file.html_scroll
-          @data.each do |para|
-            para=para.strip.
-              gsub(/<:.+?>/,'').
-              gsub(Xx[:html_relative2],@file.path_rel_links.html_scroll_2).
-              gsub(Xx[:html_relative1],@file.path_rel_links.html_scroll_1).
-             #gsub(/#{Xx[:html_relative]}/,@file.path_rel_links.html_scroll).
-              gsub(/#{Rx[:mx_fa_clean]}/,'')
-            unless para =~/\A\s*\Z/
-              @filename_html_scroll.puts para,"\n"
+        if @md.opt.act[:html_scroll][:set]==:on 
+          begin
+            @filename_html_scroll=@file.write_file.html_scroll
+            @data.each do |para|
+              para=para.strip.
+                gsub(/<:.+?>/,'').
+                gsub(Xx[:html_relative2],@file.path_rel_links.html_scroll_2).
+                gsub(Xx[:html_relative1],@file.path_rel_links.html_scroll_1).
+               #gsub(/#{Xx[:html_relative]}/,@file.path_rel_links.html_scroll).
+                gsub(/#{Rx[:mx_fa_clean]}/,'')
+              unless para =~/\A\s*\Z/
+                @filename_html_scroll.puts para,"\n"
+              end
             end
+          rescue
+            SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error do
+              __LINE__.to_s + ':' + __FILE__
+            end
+          ensure
+            @filename_html_scroll.close
           end
-        rescue
-          SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error do
-            __LINE__.to_s + ':' + __FILE__
-          end
-        ensure
-          @filename_html_scroll.close
         end
       end
       def segtoc
-        begin
-          @filename_html_segtoc=@file.write_file.html_segtoc
-          @data.each do |para|
-            para=para.strip.
-              gsub(/<!.+?!>/,'').
-              gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
-              gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
-            unless para =~/\A\s*\Z/
-              @filename_html_segtoc.puts para,"\n"
+        if @md.opt.act[:html_seg][:set]==:on 
+          begin
+            @filename_html_segtoc=@file.write_file.html_segtoc
+            @data.each do |para|
+              para=para.strip.
+                gsub(/<!.+?!>/,'').
+                gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
+                gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
+              unless para =~/\A\s*\Z/
+                @filename_html_segtoc.puts para,"\n"
+              end
             end
+          rescue
+            SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error do
+              __LINE__.to_s + ':' + __FILE__
+            end
+          ensure
+            @filename_html_segtoc.close
+            pwd_set=Dir.pwd
+            idx_lnk=(@o_str.dump_or_redirect?) \
+            ? @file.base_filename.manifest
+            : @file.base_filename.html_segtoc
+            mlnk=@file.base_filename.html_seg_index
+            Dir.chdir(@file.output_path.html_seg.dir)
+            FileUtils::rm_f(mlnk)
+            FileUtils::ln_s(idx_lnk,mlnk)
+            Dir.chdir(pwd_set)
           end
-        rescue
-          SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error do
-            __LINE__.to_s + ':' + __FILE__
-          end
-        ensure
-          @filename_html_segtoc.close
-          pwd_set=Dir.pwd
-          idx_lnk=(@o_str.dump_or_redirect?) \
-          ? @file.base_filename.manifest
-          : @file.base_filename.html_segtoc
-          mlnk=@file.base_filename.html_seg_index
-          Dir.chdir(@file.output_path.html_seg.dir)
-          FileUtils::rm_f(mlnk)
-          FileUtils::ln_s(idx_lnk,mlnk)
-          Dir.chdir(pwd_set)
         end
       end
     end
diff --git a/lib/sisu/v4/hub.rb b/lib/sisu/v4/hub.rb
index a7b1a05a..2cfcee57 100644
--- a/lib/sisu/v4/hub.rb
+++ b/lib/sisu/v4/hub.rb
@@ -303,6 +303,15 @@ p "#{__LINE__}:#{__FILE__}" if @opt.act[:maintenance][:set] ==:on
         if @opt.act[:html][:set]==:on                  #% --html, -h
           require_relative 'html'                      # -h -H  html.rb
           SiSU_HTML::Source.new(@opt).read
+        else
+          if @opt.act[:html_seg][:set]==:on            #% --html-seg
+            require_relative 'html'                    # -h -H  html.rb
+            SiSU_HTML::Source.new(@opt).read
+          end
+          if @opt.act[:html_scroll][:set]==:on         #% --html-scroll
+            require_relative 'html'                    # -h -H  html.rb
+            SiSU_HTML::Source.new(@opt).read
+          end
         end
         if @opt.act[:concordance][:set]==:on           #% --concordance, -w
           require_relative 'concordance'               # -w     concordance.rb
@@ -628,10 +637,38 @@ p "#{__LINE__}:#{__FILE__}" if @opt.act[:maintenance][:set] ==:on
         SiSU_Harvest::Source.new(@opt).read            # -h -H  html.rb
       elsif @opt.mod.inspect =~/--convert|--to|--from/
         require_relative 'sst_convert_markup'          # sst_convert_markup.rb
-      elsif @opt.cmd =~/([abCcDdeFGgHhIjikLMmNnoPpQqRrSsTtUuVvWwXxYyZ_0-9])/ \
-      and @opt.cmd =~/^-/ \
-      and @opt.mod.inspect !~/--(?:sitemaps|query|identify)/ \
-      or @opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/
+      elsif @opt.act[:dal][:set]==:on \
+      or @opt.act[:manpage][:set]==:on \
+      or @opt.act[:texinfo][:set]==:on \
+      or @opt.act[:txt][:set]==:on \
+      or @opt.act[:html][:set]==:on \
+      or @opt.act[:html_scroll][:set]==:on \
+      or @opt.act[:html_seg][:set]==:on \
+      or @opt.act[:concordance][:set]==:on \
+      or @opt.act[:xhtml][:set]==:on \
+      or @opt.act[:epub][:set]==:on \
+      or @opt.act[:odt][:set]==:on \
+      or @opt.act[:xml_sax][:set]==:on \
+      or @opt.act[:xml_dom][:set]==:on \
+      or @opt.act[:pdf][:set]==:on \
+      or @opt.act[:psql][:set]==:on \
+      or @opt.act[:sqlite][:set]==:on \
+      or @opt.act[:sqlite_discreet][:set]==:on \
+      or @opt.act[:share_source][:set]==:on \
+      or @opt.act[:sisupod][:set]==:on \
+      or @opt.act[:qrcode][:set]==:on \
+      or @opt.act[:hash_digests][:set]==:on \
+      or @opt.act[:manifest][:set]==:on \
+      or @opt.act[:rsync][:set]==:on \
+      or @opt.act[:scp][:set]==:on \
+      or @opt.act[:webrick][:set]==:on \
+      or @opt.act[:zap][:set]==:on \
+      or ( 
+        @opt.cmd =~/^-/ \
+        and @opt.cmd =~/([abCcDdeFGgHhIjikLMmNnoPpQqRrSsTtUuVvWwXxYyZ_0-9])/ \
+        and @opt.mod.inspect !~/--(?:sitemaps|query|identify)/ \
+        or @opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/ \
+      )
         do_initialization
         do_loops
         @msg,@msgs="\tsisu -W [to start ruby web-server on output directory]\n",nil unless @opt.act[:quiet][:set] ==:on
diff --git a/lib/sisu/v4/options.rb b/lib/sisu/v4/options.rb
index e26fcfc2..fbdfc8f3 100644
--- a/lib/sisu/v4/options.rb
+++ b/lib/sisu/v4/options.rb
@@ -471,6 +471,8 @@ module SiSU_Commandline
           when /^--(?:dal?|machine|abstraction|abs)$/;       c=c+'m'
           when /^--(?:txt|text|plaintext)$/;                 c=c+'t'
           when /^--(?:html)$/;                               c=c+'h'
+          when /^--(?:html-scroll|html-seg)$/;               c=c+'H'
+            mod << m
           when /^--(?:epub)$/;                               c=c+'e'
           when /^--(?:od[ft])$/;                             c=c+'o'
           when /^--(?:pdf)$/;                                c=c+'p'
@@ -757,10 +759,24 @@ module SiSU_Commandline
         || mod.inspect =~/"--dal"/) \
         ? { bool: true, set: :on }
         : { bool: false, set: :na }
-        act[:html]=(cmd =~/h/ \
-        || mod.inspect =~/"--html"/) \
-        ? { bool: true, set: :on }
-        : { bool: false, set: :na }
+        act[:html]=if (cmd =~/h/ \
+        || mod.inspect =~/"--html"/)
+          act[:html_scroll]={ bool: true, set: :on }
+          act[:html_seg]={ bool: true, set: :on }
+          { bool: true, set: :on }
+        else
+          act[:html_scroll]=if mod.inspect =~/"--html-scroll"/
+            { bool: true, set: :on }
+          else
+            { bool: false, set: :na }
+          end
+          act[:html_seg]=if mod.inspect =~/"--html-seg"/
+            { bool: true, set: :on }
+          else
+            { bool: false, set: :na }
+          end
+          { bool: false, set: :na }
+        end
         act[:concordance]=(cmd =~/w/ \
         || mod.inspect =~/"--concordance"/) \
         ? { bool: true, set: :on }
diff --git a/lib/sisu/v4/urls.rb b/lib/sisu/v4/urls.rb
index a9a27bff..5e6bcc8a 100644
--- a/lib/sisu/v4/urls.rb
+++ b/lib/sisu/v4/urls.rb
@@ -316,11 +316,17 @@ module SiSU_Urls
                 show.epub(x)
               end
               if x=~/--html\b/ \
-              and @opt.act[:html][:set]==:on
+              and (@opt.act[:html][:set]==:on \
+              or @opt.act[:html_scroll][:set]==:on \
+              or @opt.act[:html_seg][:set]==:on)
                 if x =~/scroll/
-                  show.html.scroll(x)
+                  if @opt.act[:html_scroll][:set]==:on 
+                    show.html.scroll(x)
+                  end
                 else
-                  show.html.toc(x)
+                  if @opt.act[:html_seg][:set]==:on 
+                    show.html.toc(x)
+                  end
                 end
               end
               if x=~/--texinfo\b/ \
-- 
cgit v1.2.3