diff options
| -rw-r--r-- | data/doc/sisu/CHANGELOG_v2 | 5 | ||||
| -rw-r--r-- | data/doc/sisu/CHANGELOG_v3 | 50 | ||||
| -rw-r--r-- | data/doc/sisu/copyright | 2 | ||||
| -rw-r--r-- | data/sisu/v3/v/version.yml | 6 | ||||
| -rw-r--r-- | lib/sisu/v3/concordance.rb | 12 | ||||
| -rw-r--r-- | lib/sisu/v3/defaults.rb | 9 | ||||
| -rw-r--r-- | lib/sisu/v3/embedded.rb | 18 | ||||
| -rw-r--r-- | lib/sisu/v3/epub.rb | 10 | ||||
| -rw-r--r-- | lib/sisu/v3/epub_concordance.rb | 10 | ||||
| -rw-r--r-- | lib/sisu/v3/epub_format.rb | 22 | ||||
| -rw-r--r-- | lib/sisu/v3/epub_segments.rb | 4 | ||||
| -rw-r--r-- | lib/sisu/v3/html.rb | 23 | ||||
| -rw-r--r-- | lib/sisu/v3/html_format.rb | 22 | ||||
| -rw-r--r-- | lib/sisu/v3/html_minitoc.rb | 10 | ||||
| -rw-r--r-- | lib/sisu/v3/html_segments.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/v3/i18n.rb | 118 | ||||
| -rw-r--r-- | lib/sisu/v3/manifest.rb | 434 | ||||
| -rw-r--r-- | lib/sisu/v3/options.rb | 7 | ||||
| -rw-r--r-- | lib/sisu/v3/param.rb | 9 | ||||
| -rw-r--r-- | lib/sisu/v3/prog_text_translation.rb | 410 | ||||
| -rw-r--r-- | lib/sisu/v3/remote.rb | 12 | ||||
| -rw-r--r-- | lib/sisu/v3/sysenv.rb | 916 | ||||
| -rw-r--r-- | lib/sisu/v3/texpdf.rb | 25 | ||||
| -rw-r--r-- | lib/sisu/v3/xml_format.rb | 22 | 
24 files changed, 1245 insertions, 913 deletions
| diff --git a/data/doc/sisu/CHANGELOG_v2 b/data/doc/sisu/CHANGELOG_v2 index d892910d..d204e9a2 100644 --- a/data/doc/sisu/CHANGELOG_v2 +++ b/data/doc/sisu/CHANGELOG_v2 @@ -12,6 +12,11 @@ Reverse Chronological:  %% STABLE Branch +%% 2.9.5.orig.tar.gz (2011-05-17:20/2) [see 3.0.10] +http://git.sisudoc.org/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/3.0.10-1 + +  * copyright (minor) touch, dates for setup.rb +  %% 2.9.4.orig.tar.gz (2011-05-15:19/7) [see 3.0.9]  http://git.sisudoc.org/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/3.0.9-1 diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3 index 682db1a9..81381fc6 100644 --- a/data/doc/sisu/CHANGELOG_v3 +++ b/data/doc/sisu/CHANGELOG_v3 @@ -13,12 +13,56 @@ Reverse Chronological:  %% Development branch UNSTABLE  v3 branch once stable will supersede & replace current stable v2 branch +%% 3.0.10.orig.tar.gz (2011-05-23:21/1) +http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/3.0.10-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.10.orig.tar.gz +  sisu_3.0.10.orig.tar.gz +  sisu_3.0.10-1.dsc +  sisu_3.0.10-1.debian.tar.gz + +  * copyright (minor) touch, dates for setup.rb + +  * sysenv, rsync, embedded +    * rsync to remote host alternative output structures, fix +      (remove blocking test path) +    * get rid of annoying new nag to terminal (-v reporting +      Dir.pwd), prevent attempt to change directory unless different directory +      requested + +  * param, html, epub, xml, simplify file-naming convention with language code +    (language code occurs in fixed location within file-name, could previously +    be configured to occur in 1 of 3 locations within file-name) + +  * texpdf filenames + +  * i18n, add language name translation column to hash/table + +  * prog_text_translation: +    * fix to Portuguese language class name (missed the 't') +    * language name matching ('Portuguese Brazil') +    * indentation + +  * options, include markup source "base" path, used to parse alternative +    markup source dir structures + +  * manifest +    * relative paths to "available outputs" (for each dir structure), fix +    * show language versions published +      (needs 2 runs of manifest, polls output as to whether manifest files exist) + +  * html +    * close files +    * syslink index.html to toc.html, needs revisit +      (will only "work" properly with by_language directory structure) + +  * defaults, fix path to homepage image (more fixes remain ...) +  %% 3.0.9.orig.tar.gz (2011-05-17:20/2)  http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/3.0.9-1  http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.9.orig.tar.gz -  sisu_3.0.9.orig.tar.gz -  sisu_3.0.9-1.dsc -  sisu_3.0.9-1.debian.tar.gz +  90694ba44e6412f266fe0501975c3dcdc95824c5099f54729c436284f5948eab 1937861 sisu_3.0.9.orig.tar.gz +  f33e08e31d9497f5ab09e0bc35753837671ac80690e8142f0690353a069ba65f 1216 sisu_3.0.9-1.dsc +  5482748d75af890a00d9ecdb4302b31ed4508d9eb6f668ad9bd2f9428158bba3 287102 sisu_3.0.9-1.debian.tar.gz    * bin/sisu2 introduced (to complement bin/sisu3), currently same as bin/sisu      (later switch bin/sisu to bin/sisu3; consider using update-alternatives) diff --git a/data/doc/sisu/copyright b/data/doc/sisu/copyright index 5974c3fc..9f84a32c 100644 --- a/data/doc/sisu/copyright +++ b/data/doc/sisu/copyright @@ -25,7 +25,7 @@ License: GPL-3+   can be found in /usr/share/common-licenses/GPL-3 file.  Files: setup.rb -Copyright: Minero Aoki <http://i.loveruby.net/en/projects/setup/> +Copyright: (C) 2000-2005 Minero Aoki <http://i.loveruby.net/en/projects/setup/>  License: LGPL-2.1   This library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public diff --git a/data/sisu/v3/v/version.yml b/data/sisu/v3/v/version.yml index e2f62d8c..e6c9bcaa 100644 --- a/data/sisu/v3/v/version.yml +++ b/data/sisu/v3/v/version.yml @@ -1,5 +1,5 @@  --- -:version: 3.0.9-beta-rb1.9.2p180 -:date_stamp: 2011w20/2 -:date: "2011-05-17" +:version: 3.0.10-beta-rb1.9.2p180 +:date_stamp: 2011w21/1 +:date: "2011-05-23"  :project: SiSU diff --git a/lib/sisu/v3/concordance.rb b/lib/sisu/v3/concordance.rb index 72031419..91b63778 100644 --- a/lib/sisu/v3/concordance.rb +++ b/lib/sisu/v3/concordance.rb @@ -212,17 +212,17 @@ WOK        end      protected        def location_scroll(wordlocation,show) -        %{<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}\##{wordlocation}">#{wordlocation}</a>;  } +        %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{wordlocation}">#{wordlocation}</a>;  }        end        def location_seg(wordlocation,show) ##fix -        @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"#{@md.fnl[:pre]}\\1#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}#\\2") unless wordlocation.nil? +        @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:html]}#\\2") unless wordlocation.nil?          case wordlocation          when @rxp_t1 -          %{[<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{show}">H</a>]#{show},  } +          %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show},  }          when @rxp_t2 -          %{[<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{show}">H</a>]#{show},  } +          %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show},  }          when @rxp_t3 -          %{[<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{show}">H</a>]#{show},  } +          %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show},  }          else %{<a href="#{@word_location_seg}">#{show}</a>,  }          end        end @@ -337,7 +337,7 @@ WOK          end          credits=@vz.credits_sisu          @file_concordance << %{</div></body>\n</html>} # footer -        SiSU_Screen::Ansi.new(@opt.cmd,@md.fns,"#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}").flow if @md.opt.cmd =~/[MV]/ +        SiSU_Screen::Ansi.new(@md.opt.cmd,@md.fns,"#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}").flow if @md.opt.cmd =~/[MV]/        end      end    end diff --git a/lib/sisu/v3/defaults.rb b/lib/sisu/v3/defaults.rb index 2079da47..0ef81402 100644 --- a/lib/sisu/v3/defaults.rb +++ b/lib/sisu/v3/defaults.rb @@ -1029,12 +1029,13 @@ module SiSU_Viz        %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_external_toc}" alt="lateral hop" />}      end      def png_home -      dir=SiSU_Env::Info_env.new #(@fns) -      %{<img border="0" src="#{dir.url.images_local}/#{icon_home_button}" alt="#{txt_home} -->" />} -    end -    def png_home_button        #dir=SiSU_Env::Info_env.new #(@fns)        %{<img border="0" src="#{url_path_image_base}/#{icon_home_button}" alt="#{txt_home} -->" />} +      #%{<img border="0" src="#{dir.url.images_local}/#{icon_home_button}" alt="#{txt_home} -->" />} +    end +    def png_home_button +      rel=@dir.path_rel_links.html_scroll_2 +      %{<img border="0" src="#{rel}/#{icon_home_button}" alt="#{txt_home} -->" />}      end      def png_book        %{<img border="2" height="15" width="15" src="#{url_path_image_sys}/#{icon_book}" alt="Cameron May Books" />} diff --git a/lib/sisu/v3/embedded.rb b/lib/sisu/v3/embedded.rb index f6049cec..fad1fb29 100644 --- a/lib/sisu/v3/embedded.rb +++ b/lib/sisu/v3/embedded.rb @@ -70,6 +70,7 @@ module SiSU_Embedded        @env=SiSU_Env::Info_env.new(@md.fns)        @rhost=SiSU_Env::Info_remote.new(@opt).remote_host_base        @base_src_dir=@opt.f_pth[:pth].sub(/\/#{@opt.f_pth[:lng]}$/,'') +      @f=SiSU_Env::SiSU_file.new(@md)      end      def read        songsheet @@ -85,18 +86,21 @@ module SiSU_Embedded      end      def images        src="#{@base_src_dir}/_sisu/image" -      ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image" +      src_img='_sisu/image' +      ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}" +      img_dir="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image"        @rhost.each do |remote_conn|          rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/image" +        remote_rel=remote_conn[:name] + '/' + @f.output_path.stub.rcp          if @md.opt.cmd.inspect =~/[vVMR]/ \          and FileTest.directory?(src) -          mkdir_p(ldest) unless FileTest.directory?(ldest) -          src_ec="#{src}/" + @md.ec[:image].join(" #{src}/") +          mkdir_p(img_dir) unless FileTest.directory?(img_dir) +          src_ec=@f.place_file.images.rel + '/' + @md.ec[:image].join(" #{@f.output_path.images.rel}/")            unless @opt.fns =~/\.-sst$/ -            SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync -            if @md.opt.cmd.inspect =~/R/ #rsync to remote image directory -              SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync -            end +            SiSU_Env::System_call.new(src_ec,ldest,'q').rsync('--relative',@opt.base_path) +            #if @md.opt.cmd.inspect =~/R/ #rsync to remote image directory +            #  SiSU_Env::System_call.new(src_ec,remote_rel,'q').rsync('--relative') +            #end            end          end        end diff --git a/lib/sisu/v3/epub.rb b/lib/sisu/v3/epub.rb index 422c1e68..7293c601 100644 --- a/lib/sisu/v3/epub.rb +++ b/lib/sisu/v3/epub.rb @@ -310,7 +310,7 @@ module SiSU_EPUB          title=if dob.obj !~/Document Information/; linkname          else            link='metadata' -          %{<b><a href="#{@md.fnl[:pre]}#{link}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}">#{linkname}</a></b>} +          %{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}">#{linkname}</a></b>}          end          toc={}          txt_obj={ txt: title } @@ -395,13 +395,13 @@ module SiSU_EPUB          linkname,ocn=dob.obj.strip,dob.ocn          p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) if ocn          if dob.ln==4 -          seg_link=%{  <a href="#{@md.fnl[:pre]}#{dob.name}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}"> +          seg_link=%{  <a href="#{dob.name}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}">      #{dob.obj}    </a> }            @@seg_url=dob.name          elsif dob.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/            seg_link=dob.obj.gsub(/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/, -            %{<a href="#{@md.fnl[:pre]}\\1#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}">} + +            %{<a href="\\1#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}">} +              %{\\1 \\2</a> })          end          p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) if ocn @@ -423,7 +423,7 @@ module SiSU_EPUB          if ocn \          and ocn !~/#/            p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{@md.fnl[:pre]}#{@@seg_url}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}#o#{ocn}"> +          lnk_n_txt=%{  <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}#o#{ocn}">      #{linkname}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -444,7 +444,7 @@ module SiSU_EPUB          if ocn \          and ocn !~/#/            p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{@md.fnl[:pre]}#{@@seg_url}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}#o#{ocn}"> +          lnk_n_txt=%{  <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}#o#{ocn}">    #{linkname}  </a>}            txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/v3/epub_concordance.rb b/lib/sisu/v3/epub_concordance.rb index 205f4f22..687155d2 100644 --- a/lib/sisu/v3/epub_concordance.rb +++ b/lib/sisu/v3/epub_concordance.rb @@ -185,18 +185,18 @@ WOK      protected        def location_scroll(wordlocation,show)          @wordlocation=wordlocation -        %{<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}\##{@wordlocation}">#{@wordlocation}</a>;  } +        %{<a href="doc#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}\##{@wordlocation}">#{@wordlocation}</a>;  }        end        def location_seg(wordlocation,show)          @wordlocation,@show=wordlocation,show -        @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"#{@md.fnl[:pre]}\\1#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}#o\\2") unless wordlocation.nil? +        @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}#o\\2") unless wordlocation.nil?          case @wordlocation          when @rxp_t1 -          %{[<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}##{@show}">H</a>]#{@show},  } +          %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}##{@show}">H</a>]#{@show},  }          when @rxp_t2 -          %{[<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}##{@show}">H</a>]#{@show},  } +          %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}##{@show}">H</a>]#{@show},  }          when @rxp_t3 -          %{[<a href="#{@md.fnl[:pre]}doc#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}##{@show}">H</a>]#{@show},  } +          %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}##{@show}">H</a>]#{@show},  }          else %{<a href="#{@word_location_seg}">#{@show}</a>,  }          end        end diff --git a/lib/sisu/v3/epub_format.rb b/lib/sisu/v3/epub_format.rb index 5af5c0b4..e75ad112 100644 --- a/lib/sisu/v3/epub_format.rb +++ b/lib/sisu/v3/epub_format.rb @@ -1196,13 +1196,13 @@ WOK  }      end      def seg_head_navigation_band -      firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top"> +      firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top">        #{@vz.epub_png_nav_nxt}      </a>} if @md.firstseg =~/\S+/        %{<p class="align_right">#{firstseg}</p>}      end      def seg_head_navigation_band_bottom -      firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top"> +      firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top">        #{@vz.epub_png_nav_nxt}      </a>} if @md.firstseg =~/\S+/        %{<p class="align_right">#{firstseg}</p>} @@ -1335,17 +1335,17 @@ WOK      def dot_control_pre_next        %{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">  <tr><td align="left"> -  <a href="#{@md.fnl[:pre]}#{@seg_name_xhtml[@seg_name_xhtml_tracker-1]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +  <a href="#{@seg_name_xhtml[@seg_name_xhtml_tracker-1]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_prev}>      #{@vz.png_nav_dot_pre}    </a>  </td>  <td align="center"> -  <a href="#{@md.fnl[:pre]}#{@index}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +  <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_toc}>      #{@vz.png_nav_dot_toc}    </a>  </td>  <td align="right"> -  <a href="#{@md.fnl[:pre]}#{@seg_name_xhtml[@seg_name_xhtml_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> +  <a href="#{@seg_name_xhtml[@seg_name_xhtml_tracker+1]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_next}>      #{@vz.png_nav_dot_nxt}    </a>  #{@vz.table_close}} @@ -1353,12 +1353,12 @@ WOK      def dot_control_pre        %{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">  <tr><td align="left"> -  <a href="#{@md.fnl[:pre]}#{@seg_name_xhtml[@seg_name_xhtml_tracker-1]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +  <a href="#{@seg_name_xhtml[@seg_name_xhtml_tracker-1]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_prev}>      #{@vz.png_nav_dot_pre}    </a>  </td>  <td align="center"> -  <a href="#{@md.fnl[:pre]}#{@index}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +  <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_toc}>      #{@vz.png_nav_dot_toc}    </a>  </td> @@ -1370,15 +1370,15 @@ WOK      end      def toc_nav(f_pre=false,f_nxt=false,use=1)        pre=nxt='' -      toc=%{<a href="#{@md.fnl[:pre]}#{@index}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +      toc=%{<a href="#{@index}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_toc}>    #{@vz.epub_png_nav_toc}  </a>  } -      pre=%{<a href="#{@md.fnl[:pre]}#{@seg_name_xhtml[@seg_name_xhtml_tracker-use]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +      pre=%{<a href="#{@seg_name_xhtml[@seg_name_xhtml_tracker-use]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_prev}>    #{@vz.epub_png_nav_pre}  </a>  } if f_pre==true -      nxt=%{<a href="#{@md.fnl[:pre]}#{@seg_name_xhtml[@seg_name_xhtml_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> +      nxt=%{<a href="#{@seg_name_xhtml[@seg_name_xhtml_tracker+1]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}" target="_top" #{@vz.js_next}>      #{@vz.epub_png_nav_nxt}    </a>  } if f_nxt==true @@ -1861,7 +1861,7 @@ WOK        fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info        %{    <p class="endnote"> -    #{@endnote_part_a}#{@md.fnl[:pre]}#{fn}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}#{@endnote_part_b} +    #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}#{@endnote_part_b}    </p>  }      end diff --git a/lib/sisu/v3/epub_segments.rb b/lib/sisu/v3/epub_segments.rb index a21a64a7..ed8c8d39 100644 --- a/lib/sisu/v3/epub_segments.rb +++ b/lib/sisu/v3/epub_segments.rb @@ -231,7 +231,7 @@ WOK              and dob.ln==4                if tracking != 0                  Seg.new(@md).tail -                segfilename="#{dir_epub_cont}/#{@md.fnl[:pre]}#{@@seg_name_xhtml[tracking-1]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" +                segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking-1]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}"                  output_epub_cont_seg=File.new(segfilename,'w') if @@seg_name_xhtml[tracking-1]                  if dob.is=='heading' \                  or @@seg_name_xhtml[tracking-1] !~/endnotes|book_index|metadata/ @@ -252,7 +252,7 @@ WOK                  heading_art(dob)                  head(dob)                  if @@seg_name_xhtml[tracking]=='sisu_manifest' # this is for manifest, includes navigation bug -                  segfilename="#{dir_epub_cont}/#{@md.fnl[:pre]}#{@@seg_name_xhtml[tracking]}#{@md.fnl[:mid]}#{Sfx[:epub_xhtml]}#{@md.fnl[:post]}" +                  segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking]}#{@md.lang_code_insert}#{Sfx[:epub_xhtml]}"                    output_epub_cont_seg=File.new(segfilename,'w')                    Seg_output.new(@md,output_epub_cont_seg,@@seg,@minitoc,'sisu_manifest').output                    Seg.new.reinitialise #BUG navigation bug with items following metadata, and occurring before manifest, this becomes a bug ... work area for book index, FIX diff --git a/lib/sisu/v3/html.rb b/lib/sisu/v3/html.rb index 8d10b7da..d586c25d 100644 --- a/lib/sisu/v3/html.rb +++ b/lib/sisu/v3/html.rb @@ -322,7 +322,7 @@ WOK          title=if dob.obj !~/Metadata/; linkname          else            link='metadata' -          %{<b><a href="#{@md.fnl[:pre]}#{link}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}">#{linkname}</a></b>} +          %{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:html]}">#{linkname}</a></b>}          end          toc={}          txt_obj={ txt: title } @@ -409,13 +409,13 @@ WOK          linkname,ocn=dob.obj.strip,dob.ocn          p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) if ocn          if dob.ln ==4 -          seg_link=%{  <a href="#{@md.fnl[:pre]}#{dob.name}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top"> +          seg_link=%{  <a href="#{dob.name}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top">      #{dob.obj}    </a> }            @@seg_url=dob.name          elsif dob.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/            seg_link=dob.obj.gsub(/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/, -            %{<a href="#{@md.fnl[:pre]}\\1#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" } + +            %{<a href="\\1#{@md.lang_code_insert}#{Sfx[:html]}" } +              %{target="_top">\\1 \\2</a> })          end          p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) if ocn @@ -451,7 +451,7 @@ WOK          if ocn \          and ocn !~/#/            p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{@md.fnl[:pre]}#{@@seg_url}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{ocn}"> +          lnk_n_txt=%{  <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{ocn}">      #{linkname}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -472,7 +472,7 @@ WOK          if ocn \          and ocn !~/#/            p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{@md.fnl[:pre]}#{@@seg_url}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{ocn}"> +          lnk_n_txt=%{  <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{ocn}">    #{linkname}  </a>}            txt_obj={ txt: lnk_n_txt } @@ -628,6 +628,7 @@ WOK              end            end          rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error +        ensure; @filename_html_scroll.close          end        end        def segtoc @@ -645,6 +646,18 @@ WOK              end            end          rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error +        ensure +          @filename_html_segtoc.close +          @filename_html_index.close +          ## only works properly for directory_structure_by language, fix +          unless FileTest.file?("#{@file.output_path.html.dir}/index.html") +            pwd_set=Dir.pwd +            Dir.chdir(@file.output_path.html.dir) +              system(" +                ln -s #{@file.base_filename.html_segtoc} index.html +              ") +            Dir.chdir(pwd_set) +          end          end        end      end diff --git a/lib/sisu/v3/html_format.rb b/lib/sisu/v3/html_format.rb index a4a05293..e89b5c43 100644 --- a/lib/sisu/v3/html_format.rb +++ b/lib/sisu/v3/html_format.rb @@ -299,7 +299,7 @@ WOK  <p />}      end      def seg_head_navigation_band(type='') -      firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" alt="->"> +      firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" alt="->">        #{@vz.png_nav_nxt}      </a>} if @md.firstseg =~/\S+/        %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> @@ -318,7 +318,7 @@ WOK        if type=~/pdf/          @tocband_segtoc=make_scroll_seg_pdf        end -      firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" alt="->"> +      firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" alt="->">        #{@vz.png_nav_nxt}      </a>} if @md.firstseg =~/\S+/        %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> @@ -646,9 +646,9 @@ WOK      def title_banner(title,subtitle,creator)      end      def dot_control_pre_next -      pre="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" -      up="#{@md.fnl[:pre]}#{@toc}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" -      nxt="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" +      pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}" +      up="#{@toc}#{@md.lang_code_insert}#{Sfx[:html]}" +      nxt="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}"        if nxt=~/sisu_manifest\.html/          @file=SiSU_Env::SiSU_file.new(@md) if @md          if @file.output_dir_structure.by_language_code? \ @@ -674,8 +674,8 @@ WOK  #{@vz.table_close}}      end      def dot_control_pre -      pre="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" -      up="#{@md.fnl[:pre]}#{@toc}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" +      pre="#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.lang_code_insert}#{Sfx[:html]}" +      up="#{@toc}#{@md.lang_code_insert}#{Sfx[:html]}"        nxt="#{@md.fn[:toc]}"        %{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">  <tr><td align="left"> @@ -697,17 +697,17 @@ WOK      def toc_nav(f_pre=false,f_nxt=false,use=1)        pre=nxt=''        toc=%{<td align="center" bgcolor=#{@vz.color_band1}> -  <a href="#{@md.fnl[:pre]}#{@toc}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +  <a href="#{@toc}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_toc}>      #{@vz.png_nav_toc}    </a>  </td>}        pre=%{<td align="center" bgcolor=#{@vz.color_band1}> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +  <a href="#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_prev}>      #{@vz.png_nav_pre}    </a>  </td>} if f_pre==true        nxt=%{<td align="center" bgcolor=#{@vz.color_band1}> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> +  <a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_next}>      #{@vz.png_nav_nxt}    </a>  </td>} if f_nxt==true @@ -1281,7 +1281,7 @@ WOK        fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info        %{    <p class="endnote"> -    #{@endnote_part_a}#{@md.fnl[:pre]}#{fn}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}#{@endnote_part_b} +    #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b}    </p>  }      end diff --git a/lib/sisu/v3/html_minitoc.rb b/lib/sisu/v3/html_minitoc.rb index 7390ee7c..3a4f8fc5 100644 --- a/lib/sisu/v3/html_minitoc.rb +++ b/lib/sisu/v3/html_minitoc.rb @@ -115,7 +115,7 @@          title=unless txt.obj =~/Document Information/; txt.obj          else            link='metadata' -          %{<b><a href="#{@md.fnl[:pre]}#{link}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}">#{txt.obj}</a></b>} +          %{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:html]}">#{txt.obj}</a></b>}          end          toc={}          txt_obj={ txt: title } @@ -148,13 +148,13 @@          txt=@data          unless txt =~/~metadata/            if txt.ln ==4 -            seg_link=%{  <a href="#{@md.fnl[:pre]}#{txt.name}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top"> +            seg_link=%{  <a href="#{txt.name}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top">      #{txt.obj}    </a> }              @@seg_url=txt.name            elsif txt.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/              seg_link=txt.obj.gsub(/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/, -              %{<a href="#{@md.fnl[:pre]}\\2#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" } + +              %{<a href="\\2#{@md.lang_code_insert}#{Sfx[:html]}" } +                %{target="_top">\\1 \\2</a> })            end            txt_obj={ txt: seg_link } @@ -170,7 +170,7 @@            txt.obj.gsub!(@pat_strip_heading_name,'\1')          end          toc={} -          lnk_n_txt=%{  <a href="#{@md.fnl[:pre]}#{@@seg_url}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{txt.ocn}"> +          lnk_n_txt=%{  <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{txt.ocn}">      #{txt.obj}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -185,7 +185,7 @@            txt.obj.gsub!(@pat_strip_heading_name,'\1')          end          toc={} -          lnk_n_txt=%{  <a href="#{@md.fnl[:pre]}#{@@seg_url}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}##{txt.ocn}"> +          lnk_n_txt=%{  <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{txt.ocn}">      #{txt.obj}    </a>}            txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/v3/html_segments.rb b/lib/sisu/v3/html_segments.rb index fb9b01cb..ccd48407 100644 --- a/lib/sisu/v3/html_segments.rb +++ b/lib/sisu/v3/html_segments.rb @@ -237,7 +237,7 @@ module SiSU_HTML_seg                    mkdir_p(@file.output_path.html_seg.dir) if File.writable?("#{@file.output_path.base.dir}/.")                  end                  Seg.new(@md).tail -                segfilename="#{@file.output_path.html_seg.dir}/#{@md.fnl[:pre]}#{@@seg_name_html[tracking-1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" +                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 \ diff --git a/lib/sisu/v3/i18n.rb b/lib/sisu/v3/i18n.rb index 1001b6fb..85030697 100644 --- a/lib/sisu/v3/i18n.rb +++ b/lib/sisu/v3/i18n.rb @@ -62,65 +62,65 @@ module SiSU_i18n      def language        def table          @@language_table ||= { -          am:    { c: 'am',    n: 'Amharic',           xlp: 'amharic'}, -          bg:    { c: 'bg',    n: 'Bulgarian',         xlp: 'bulgarian'}, -          bn:    { c: 'bn',    n: 'Bengali',           xlp: 'bengali'}, -          br:    { c: 'br',    n: 'Breton',            xlp: 'breton'}, -          ca:    { c: 'ca',    n: 'Catalan',           xlp: 'catalan'}, -          cs:    { c: 'cs',    n: 'Czech',             xlp: 'czech'}, -          cy:    { c: 'cy',    n: 'Welsh',             xlp: 'welsh'}, -          da:    { c: 'da',    n: 'Danish',            xlp: 'danish'}, -          de:    { c: 'de',    n: 'German',            xlp: 'german'}, -          el:    { c: 'el',    n: 'Greek',             xlp: 'greek'}, -          en:    { c: 'en',    n: 'English',           xlp: 'english'}, -          eo:    { c: 'eo',    n: 'Esperanto',         xlp: 'esperanto'}, -          es:    { c: 'es',    n: 'Spanish',           xlp: 'spanish'}, -          et:    { c: 'et',    n: 'Estonian',          xlp: 'estonian'}, -          eu:    { c: 'eu',    n: 'Basque',            xlp: 'basque'}, -          fi:    { c: 'fi',    n: 'Finnish',           xlp: 'finnish'}, -          fr:    { c: 'fr',    n: 'French',            xlp: 'french'}, -          ga:    { c: 'ga',    n: 'Irish',             xlp: 'irish'}, -          gl:    { c: 'gl',    n: 'Galician',          xlp: 'galician'}, -          he:    { c: 'he',    n: 'Hebrew',            xlp: 'hebrew'}, -          hi:    { c: 'hi',    n: 'Hindi',             xlp: 'hindi'}, -          hr:    { c: 'hr',    n: 'Croatian',          xlp: 'croatian'}, -          hy:    { c: 'hy',    n: 'Armenian',          xlp: 'armenian'}, -          ia:    { c: 'ia',    n: 'Interlingua',       xlp: 'interlingua'}, -          is:    { c: 'is',    n: 'Icelandic',         xlp: 'icelandic'}, -          it:    { c: 'it',    n: 'Italian',           xlp: 'italian'}, -          la:    { c: 'la',    n: 'Latin',             xlp: 'latin'}, -          lo:    { c: 'lo',    n: 'Lao',               xlp: 'lao'}, -          lt:    { c: 'lt',    n: 'Lithuanian',        xlp: 'lithuanian'}, -          lv:    { c: 'lv',    n: 'Latvian',           xlp: 'latvian'}, -          ml:    { c: 'ml',    n: 'Malayalam',         xlp: 'malayalam'}, -          mr:    { c: 'mr',    n: 'Marathi',           xlp: 'marathi'}, -          nl:    { c: 'nl',    n: 'Dutch',             xlp: 'dutch'}, -          no:    { c: 'no',    n: 'Norwegian',         xlp: 'norsk'}, -          nn:    { c: 'nn',    n: 'Norwegian Nynorsk', xlp: 'nynorsk'}, -          oc:    { c: 'oc',    n: 'Occitan',           xlp: 'occitan'}, -          pl:    { c: 'pl',    n: 'Polish',            xlp: 'polish'}, -          pt:    { c: 'pt',    n: 'Portuguese',        xlp: 'portuges'}, -          pt_BR: { c: 'pt_BR', n: 'Portuguese Brazil', xlp: 'brazilian'}, -          ro:    { c: 'ro',    n: 'Romanian',          xlp: 'romanian'}, -          ru:    { c: 'ru',    n: 'Russian',           xlp: 'russian'}, -          sa:    { c: 'sa',    n: 'Sanskrit',          xlp: 'sanskrit'}, -          se:    { c: 'se',    n: 'Sami',              xlp: 'samin'}, -          sk:    { c: 'sk',    n: 'Slovak',            xlp: 'slovak'}, -          sl:    { c: 'sl',    n: 'Slovenian',         xlp: 'slovenian'}, -          sq:    { c: 'sq',    n: 'Albanian',          xlp: 'albanian'}, -          sr:    { c: 'sr',    n: 'Serbian',           xlp: 'serbian'}, -          sv:    { c: 'sv',    n: 'Swedish',           xlp: 'swedish'}, -          ta:    { c: 'ta',    n: 'Tamil',             xlp: 'tamil'}, -          te:    { c: 'te',    n: 'Telugu',            xlp: 'telugu'}, -          th:    { c: 'th',    n: 'Thai',              xlp: 'thai'}, -          tk:    { c: 'tk',    n: 'Turkmen',           xlp: 'turkmen'}, -          tr:    { c: 'tr',    n: 'Turkish',           xlp: 'turkish'}, -          uk:    { c: 'uk',    n: 'Ukranian',          xlp: 'ukrainian'}, -          ur:    { c: 'ur',    n: 'Urdu',              xlp: 'urdu'}, -          us:    { c: 'en',    n: 'English (American)',xlp: 'english'}, -          vi:    { c: 'vi',    n: 'Vietnamese',        xlp: 'vietnamese'}, -          en:    { c: 'en',    n: 'English',           xlp: 'english'}, -          xx:    { c: 'xx',    n: 'Default',           xlp: 'english'}, +          am:    { c: 'am',    n: 'Amharic',           t: 'Amharic',                     xlp: 'amharic'          }, +          bg:    { c: 'bg',    n: 'Bulgarian',         t: 'Български (Bəlgarski)',       xlp: 'bulgarian'        }, +          bn:    { c: 'bn',    n: 'Bengali',           t: 'Bengali',                     xlp: 'bengali'          }, +          br:    { c: 'br',    n: 'Breton',            t: 'Breton',                      xlp: 'breton'           }, +          ca:    { c: 'ca',    n: 'Catalan',           t: 'catalan',                     xlp: 'catalan'          }, +          cs:    { c: 'cs',    n: 'Czech',             t: 'česky',                       xlp: 'czech'            }, +          cy:    { c: 'cy',    n: 'Welsh',             t: 'Welsh',                       xlp: 'welsh'            }, +          da:    { c: 'da',    n: 'Danish',            t: 'dansk',                       xlp: 'danish'           }, +          de:    { c: 'de',    n: 'German',            t: 'Deutsch',                     xlp: 'german'           }, +          el:    { c: 'el',    n: 'Greek',             t: 'Ελληνικά (Ellinika)',         xlp: 'greek'            }, +          en:    { c: 'en',    n: 'English',           t: 'English',                     xlp: 'english'          }, +          eo:    { c: 'eo',    n: 'Esperanto',         t: 'Esperanto',                   xlp: 'esperanto'        }, +          es:    { c: 'es',    n: 'Spanish',           t: 'español',                     xlp: 'spanish'          }, +          et:    { c: 'et',    n: 'Estonian',          t: 'Estonian',                    xlp: 'estonian'         }, +          eu:    { c: 'eu',    n: 'Basque',            t: 'basque',                      xlp: 'basque'           }, +          fi:    { c: 'fi',    n: 'Finnish',           t: 'suomi',                       xlp: 'finnish'          }, +          fr:    { c: 'fr',    n: 'French',            t: 'français',                    xlp: 'french'           }, +          ga:    { c: 'ga',    n: 'Irish',             t: 'Irish',                       xlp: 'irish'            }, +          gl:    { c: 'gl',    n: 'Galician',          t: 'Galician',                    xlp: 'galician'         }, +          he:    { c: 'he',    n: 'Hebrew',            t: 'Hebrew',                      xlp: 'hebrew'           }, +          hi:    { c: 'hi',    n: 'Hindi',             t: 'Hindi',                       xlp: 'hindi'            }, +          hr:    { c: 'hr',    n: 'Croatian',          t: 'Croatian',                    xlp: 'croatian'         }, +          hy:    { c: 'hy',    n: 'Armenian',          t: 'Armenian',                    xlp: 'armenian'         }, +          ia:    { c: 'ia',    n: 'Interlingua',       t: 'Interlingua',                 xlp: 'interlingua'      }, +          is:    { c: 'is',    n: 'Icelandic',         t: 'Icelandic',                   xlp: 'icelandic'        }, +          it:    { c: 'it',    n: 'Italian',           t: 'Italiano',                    xlp: 'italian'          }, +          la:    { c: 'la',    n: 'Latin',             t: 'Latin',                       xlp: 'latin'            }, +          lo:    { c: 'lo',    n: 'Lao',               t: 'Lao',                         xlp: 'lao'              }, +          lt:    { c: 'lt',    n: 'Lithuanian',        t: 'Lithuanian',                  xlp: 'lithuanian'       }, +          lv:    { c: 'lv',    n: 'Latvian',           t: 'Latvian',                     xlp: 'latvian'          }, +          ml:    { c: 'ml',    n: 'Malayalam',         t: 'Malayalam',                   xlp: 'malayalam'        }, +          mr:    { c: 'mr',    n: 'Marathi',           t: 'Marathi',                     xlp: 'marathi'          }, +          nl:    { c: 'nl',    n: 'Dutch',             t: 'Nederlands',                  xlp: 'dutch'            }, +          no:    { c: 'no',    n: 'Norwegian',         t: 'norsk',                       xlp: 'norsk'            }, +          nn:    { c: 'nn',    n: 'Norwegian Nynorsk', t: 'nynorsk',                     xlp: 'nynorsk'          }, +          oc:    { c: 'oc',    n: 'Occitan',           t: 'Occitan',                     xlp: 'occitan'          }, +          pl:    { c: 'pl',    n: 'Polish',            t: 'polski',                      xlp: 'polish'           }, +          pt:    { c: 'pt',    n: 'Portuguese',        t: 'Português',                   xlp: 'portuges'         }, +          pt_BR: { c: 'pt_BR', n: 'Portuguese Brazil', t: 'Brazilian Português',         xlp: 'brazilian'        }, +          ro:    { c: 'ro',    n: 'Romanian',          t: 'română',                      xlp: 'romanian'         }, +          ru:    { c: 'ru',    n: 'Russian',           t: 'Русский (Russkij)',           xlp: 'russian'          }, +          sa:    { c: 'sa',    n: 'Sanskrit',          t: 'Sanskrit',                    xlp: 'sanskrit'         }, +          se:    { c: 'se',    n: 'Sami',              t: 'Samin',                       xlp: 'samin'            }, +          sk:    { c: 'sk',    n: 'Slovak',            t: 'slovensky',                   xlp: 'slovak'           }, +          sl:    { c: 'sl',    n: 'Slovenian',         t: 'Slovenian',                   xlp: 'slovenian'        }, +          sq:    { c: 'sq',    n: 'Albanian',          t: 'Albanian',                    xlp: 'albanian'         }, +          sr:    { c: 'sr',    n: 'Serbian',           t: 'Serbian',                     xlp: 'serbian'          }, +          sv:    { c: 'sv',    n: 'Swedish',           t: 'svenska',                     xlp: 'swedish'          }, +          ta:    { c: 'ta',    n: 'Tamil',             t: 'Tamil',                       xlp: 'tamil'            }, +          te:    { c: 'te',    n: 'Telugu',            t: 'Telugu',                      xlp: 'telugu'           }, +          th:    { c: 'th',    n: 'Thai',              t: 'Thai',                        xlp: 'thai'             }, +          tk:    { c: 'tk',    n: 'Turkmen',           t: 'Turkmen',                     xlp: 'turkmen'          }, +          tr:    { c: 'tr',    n: 'Turkish',           t: 'Türkçe',                      xlp: 'turkish'          }, +          uk:    { c: 'uk',    n: 'Ukranian',          t: 'українська (ukrajins\'ka)',   xlp: 'ukrainian'        }, +          ur:    { c: 'ur',    n: 'Urdu',              t: 'Urdu',                        xlp: 'urdu'             }, +          us:    { c: 'en',    n: 'English (American)',t: 'English',                     xlp: 'english'          }, +          vi:    { c: 'vi',    n: 'Vietnamese',        t: 'Vietnamese',                  xlp: 'vietnamese'       }, +          en:    { c: 'en',    n: 'English',           t: 'English',                     xlp: 'english'          }, +          xx:    { c: 'xx',    n: 'Default',           t: 'English',                     xlp: 'english'          },          }        end        def list diff --git a/lib/sisu/v3/manifest.rb b/lib/sisu/v3/manifest.rb index 90f8df55..0c6d5460 100644 --- a/lib/sisu/v3/manifest.rb +++ b/lib/sisu/v3/manifest.rb @@ -67,6 +67,7 @@ module SiSU_Manifest      include SiSU_HTML_Format    require_relative 'param'                              # param.rb      include SiSU_Param +  require_relative 'i18n'                               # i18n.rb    include SiSU_Viz    class Source      def initialize(opt) @@ -101,11 +102,11 @@ module SiSU_Manifest        def initialize(md)          @manifest={ txt: [], html: [] }          @md,@fns=md,md.fns -#       @file=SiSU_Env::SiSU_file.new(@md)          @env=SiSU_Env::Info_env.new(@md.fns)          @fnb=@md.fnb          @base_url="#{@env.url.root}/#{@fnb}" -        @base_path=@md.file.output_path.manifest.dir +        @f=SiSU_Env::SiSU_file.new(@md) +        @base_path=@f.output_path.manifest.dir          @@dg ||=SiSU_Env::Info_env.new.digest.type          @dg=@@dg          l=SiSU_Env::Standardise_language.new(@md.opt.lng).language @@ -114,26 +115,26 @@ module SiSU_Manifest          @brace_url=SiSU_Viz::Skin.new.url_decoration        end        def output -        manifest=@md.file.write_file.manifest +        manifest=@f.write_file.manifest          @manifest[:html].each do |x| -          x.gsub!(Xx[:html_relative2],@md.file.path_rel_links.html_scroll_2) -          x.gsub!(Xx[:html_relative1],@md.file.path_rel_links.html_scroll_1) +          x.gsub!(Xx[:html_relative2],@f.path_rel_links.html_scroll_2) +          x.gsub!(Xx[:html_relative1],@f.path_rel_links.html_scroll_1)            manifest << x          end        end -      def summarize(id,file,pth='',url='',img='● ') +      def summarize(id,file,pth='',rel='',url='',img='● ')          size=(File.size("#{pth}/#{file}")/1024.00).to_s          kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]          @manifest[:txt] << "#{file} #{id} #{kb}\n" -        @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{pth}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{pth}/#{file}">#{file}</a></p><p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n} +        @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p><p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n}        end -      def summarize_html_seg(id,file,pth='',url='',img='● ') +      def summarize_html_seg(id,file,pth='',rel='',url='',img='● ')          size=(File.size("#{pth}/#{file}")/1024.00).to_s          kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]          @manifest[:txt] << "#{file} #{id} #{kb}\n" -        @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{pth}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{pth}/#{file}">#{file}</a></p><p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n} +        @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p><p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n}        end -      def summarize_sources(id,file,pth,url) +      def summarize_sources(id,file,pth,rel,url)          sys=SiSU_Env::System_call.new          dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{pth}/#{file}")          else                             sys.md5("#{pth}/#{file}") @@ -142,25 +143,62 @@ module SiSU_Manifest          size=(File.size("#{pth}/#{file}")/1024.00).to_s          kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]          @manifest[:txt] << "#{file} #{id} #{kb}\n" -        @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{pth}/#{file}">#{id}</a></p></th><td class="right"><p class="tiny"><a href="#{pth}/#{file}">#{file}</a>   #{dgst[1]}<br />#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p> +        @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{id}</a></p></th><td class="right"><p class="tiny"><a href="#{rel}/#{file}">#{file}</a>   #{dgst[1]}<br />#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p>          </td></tr>\n} if kb and kb =~/\d+/        end +      def published_manifests? +        @f=SiSU_Env::SiSU_file.new(@md) #.base_filename +        @m=[] +        url=@f.output_path.base.url +        manifests={} +        mp,mn,mt,mr=nil,nil,nil,nil +        ln=SiSU_i18n::Languages.new.list +        Px[:lng_lst].each do |lc| +          if @env.output_dir_structure.by_language_code? +            mp="#{@f.output_path.base.dir}/#{lc}/manifest" +            mn="#{@md.fnb}.html" +            mt="#{mp}/#{mn}" +            mr="../../#{lc}/manifest/#{mn}" +            mu="#{url}/#{lc}/manifest/#{mn}" +          elsif @env.output_dir_structure.by_filetype? +            mp="#{@f.output_path.base.dir}/manifest" +            mn="#{@md.fnb}.#{lc}.html" +            mt="#{mp}/#{mn}" +            mr=mn +            mu="#{url}/manifest/#{mn}" +          else +            mp="#{@f.output_path.base.dir}/#{@md.fnb}" +            mn="sisu_manifest.#{lc}.html" +            mt="#{mp}/#{mn}" +            mr=mn +            mu="#{url}/#{mn}" +          end +          if FileTest.directory?(mp) \ +          &&  FileTest.file?(mt) +            lng=ln[lc][:t] +            manifests[lc]={ ln: lng, fn: mn, rel: mr } +            @m << { mu: mu, l: lng, rel: mr } +          end +        end +        manifests +        @m.uniq! +        @m +      end        def languages(id,file) -        flv=@env.published_manifests?(@base_path) +        flv=published_manifests?          @manifest[:html] << %{<tr><th class="left"><div id="horizontal_links"><ul id="horizontal">\n}          flv.each do |l|            lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list -          @manifest[:txt] << "#{l[:m]} #{lang}\n" -          @manifest[:html] << %{<li class="norm"><a href="#{l[:m]}">#{lang}</a>   </li>} +          @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n" +          @manifest[:html] << %{<li class="norm"><a href="#{l[:rel]}">#{l[:l]}</a>   </li>}          end          @manifest[:html] << %{</ul></div></th></tr>\n}        end        def published_languages(id,file) -        flv=@env.published_manifests?(@base_path) +        flv=published_manifests?          flv.each do |l| -          lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list -          @manifest[:txt] << "#{l[:m]} #{lang}\n" -          @manifest[:html] << %{<tr><th class="left"><p class="bold"><a href="#{l[:m]}">#{lang}</a></p></th><td><p class="norm">#{lang}</p><p class="tiny">#{@brace_url.xml_open}<a href="#{@base_url}/#{l[:m]}">#{@base_url}/#{l[:m]}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right"> </p></td></tr>\n} +          @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n" +          @manifest[:html] << %{<tr><th class="left"><p class="bold"><a href="#{l[:mu]}">#{l[:l]}</a></p></th><td><p class="norm">#{l[:l]}</p><p class="tiny">#{@brace_url.xml_open}<a href="#{l[:mu]}">#{l[:mu]}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right"> </p></td></tr>\n}          end        end        def metadata(id,info) @@ -175,173 +213,191 @@ module SiSU_Manifest          @manifest[:html] << %{<tr><th class="right" width=5%><p class="norm">●</p></th><td class="left"><p class="norm"><a href="#{url}">#{lnk}</a></p><p class="tiny">  #{@brace_url.xml_open}<a href="#{static}">#{static}</a>#{@brace_url.xml_close}</p></td></tr>\n}        end        def output_tests -        if FileTest.file?(@md.file.place_file.html_segtoc.dir)==true -          img=%{<img border="0" height="18" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_toc.png" alt="TOC linked" /> } -          pth=@md.file.output_path.html_seg.dir -          url=@md.file.output_path.html_seg.url -          id,file='HTML, table of contents (for segmented text)',@md.file.base_filename.html_segtoc -          summarize_html_seg(id,file,pth,url,img) -        end -        if FileTest.file?(@md.file.place_file.html_scroll.dir)==true -          img=%{<img border="0" height="15" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_doc.png" alt="Full Text" /> } -          pth=@md.file.output_path.html_scroll.dir -          url=@md.file.output_path.html_scroll.url -          id,file='HTML, full length document',@md.file.base_filename.html_scroll -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?(@md.file.place_file.html_book_index.dir)==true -          pth=@md.file.output_path.html_seg.dir -          url=@md.file.output_path.html_seg.url -          id,file='HTML, (book type) index',@md.file.base_filename.html_book_index -          summarize(id,file,pth,url) -        end -        if FileTest.file?(@md.file.place_file.html_concordance.dir)==true -          pth=@md.file.output_path.html_seg.dir -          url=@md.file.output_path.html_seg.url -          id,file='HTML, concordance file',@md.file.base_filename.html_concordance -          summarize(id,file,pth,url) -        end -        if FileTest.file?(@md.file.place_file.epub.dir)==true -          img=%{<img border="0" height="18" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_epub.png" alt="EPUB" /> } -          id,file='EPUB (Electronic Publication, e-book standard)',@md.file.base_filename.epub -          pth=@md.file.output_path.epub.dir -          url=@md.file.output_path.epub.url -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p_letter}")==true -          img=%{<img border="0" height="18" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, U.S. letter size, portrait/vertical document (recommended for printing)","#{@md.file.base_filename.pdf_p_letter}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l_letter}")==true -          img=%{<img border="0" height="15" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, U.S. letter size, landscape/horizontal document (recommended for screen viewing)","#{@md.file.base_filename.pdf_l_letter}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p_a4}")==true -          img=%{<img border="0" height="18" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, A4 size, portrait/vertical document (recommended for printing)","#{@md.file.base_filename.pdf_p_a4}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l_a4}")==true -          img=%{<img border="0" height="15" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, A4 size, landscape/horizontal document (recommended for screen viewing)","#{@md.file.base_filename.pdf_l_a4}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p_a5}")==true -          img=%{<img border="0" height="18" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, A5 (book) size, portrait/vertical document (recommended for printing)","#{@md.file.base_filename.pdf_p_a5}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l_a5}")==true -          img=%{<img border="0" height="15" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, A5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@md.file.base_filename.pdf_l_a5}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p_b5}")==true -          img=%{<img border="0" height="18" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, B5 (book) size, portrait/vertical document (recommended for printing)","#{@md.file.base_filename.pdf_p_b5}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l_b5}")==true -          img=%{<img border="0" height="15" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, B5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@md.file.base_filename.pdf_l_b5}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p_legal}")==true -          img=%{<img border="0" height="18" width="15" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, U.S. legal size, portrait/vertical document (recommended for printing)","#{@md.file.base_filename.pdf_p_legal}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l_legal}")==true -          img=%{<img border="0" height="15" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } -          pth=@md.file.output_path.pdf.dir -          url=@md.file.output_path.pdf.url -          id,file="PDF, U.S. legal size, landscape/horizontal document (recommended for screen viewing)","#{@md.file.base_filename.pdf_l_legal}" -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?(@md.file.place_file.odt.dir)==true -          img=%{<img border="0" height="18" width="18" src="#{@md.file.path_rel_links.html_scroll_2}_sisu/image_sys/b_odf.png" alt="ODF/ODT" /> } -          pth=@md.file.output_path.odt.dir -          url=@md.file.output_path.odf.url -          id,file='ODF:ODT (Open Document Format)',@md.file.base_filename.odt -          summarize(id,file,pth,url,img) -        end -        if FileTest.file?(@md.file.place_file.xhtml.dir)==true -          pth=@md.file.output_path.xhtml.dir -          url=@md.file.output_path.xhtml.url -          id,file='ODF:ODT (Open Document Format)',@md.file.base_filename.odt -          id,file='XHTML',@md.file.base_filename.xhtml -          summarize(id,file,pth,url) -        end -        if FileTest.file?(@md.file.place_file.xml_sax.dir)==true -          pth=@md.file.output_path.xml_sax.dir -          url=@md.file.output_path.xml_sax.url -          id,file='XML SAX',@md.file.base_filename.xml_sax -          summarize(id,file,pth,url) -        end -        if FileTest.file?(@md.file.place_file.xml_dom.dir)==true -          pth=@md.file.output_path.xml_dom.dir -          url=@md.file.output_path.xml_dom.url -          id,file='XML DOM',@md.file.base_filename.xml_dom -          summarize(id,file,pth,url) -        end -        if FileTest.file?(@md.file.place_file.txt.dir)==true +        if FileTest.file?(@f.place_file.html_segtoc.dir)==true +          img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_toc.png" alt="TOC linked" /> } +          pth=@f.output_path.html_seg.dir +          rel=@f.output_path.html_seg.rel_sm +          url=@f.output_path.html_seg.url +          id,file='HTML, table of contents (for segmented text)',@f.base_filename.html_segtoc +          summarize_html_seg(id,file,pth,rel,url,img) +        end +        if FileTest.file?(@f.place_file.html_scroll.dir)==true +          img=%{<img border="0" height="15" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_doc.png" alt="Full Text" /> } +          pth=@f.output_path.html_scroll.dir +          rel=@f.output_path.html_scroll.rel_sm +          url=@f.output_path.html_scroll.url +          id,file='HTML, full length document',@f.base_filename.html_scroll +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?(@f.place_file.html_book_index.dir)==true +          pth=@f.output_path.html_seg.dir +          rel=@f.output_path.html_seg.rel_sm +          url=@f.output_path.html_seg.url +          id,file='HTML, (book type) index',@f.base_filename.html_book_index +          summarize(id,file,pth,rel,url) +        end +        if FileTest.file?(@f.place_file.html_concordance.dir)==true +          pth=@f.output_path.html_seg.dir +          rel=@f.output_path.html_seg.rel_sm +          url=@f.output_path.html_seg.url +          id,file='HTML, concordance file',@f.base_filename.html_concordance +          summarize(id,file,pth,rel,url) +        end +        if FileTest.file?(@f.place_file.epub.dir)==true +          img=%{<img border="0" height="18" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_epub.png" alt="EPUB" /> } +          id,file='EPUB (Electronic Publication, e-book standard)',@f.base_filename.epub +          pth=@f.output_path.epub.dir +          rel=@f.output_path.epub.rel_sm +          url=@f.output_path.epub.url +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_letter}")==true +          img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, U.S. letter size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_letter}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_letter}")==true +          img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, U.S. letter size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_letter}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a4}")==true +          img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, A4 size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_a4}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a4}")==true +          img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, A4 size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_a4}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a5}")==true +          img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, A5 (book) size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_a5}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a5}")==true +          img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, A5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_a5}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_b5}")==true +          img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, B5 (book) size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_b5}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_b5}")==true +          img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, B5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_b5}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_legal}")==true +          img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, U.S. legal size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_legal}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_legal}")==true +          img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> } +          pth=@f.output_path.pdf.dir +          rel=@f.output_path.pdf.rel_sm +          url=@f.output_path.pdf.url +          id,file="PDF, U.S. legal size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_legal}" +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?(@f.place_file.odt.dir)==true +          img=%{<img border="0" height="18" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_odf.png" alt="ODF/ODT" /> } +          pth=@f.output_path.odt.dir +          rel=@f.output_path.odt.rel_sm +          url=@f.output_path.odf.url +          id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt +          summarize(id,file,pth,rel,url,img) +        end +        if FileTest.file?(@f.place_file.xhtml.dir)==true +          pth=@f.output_path.xhtml.dir +          rel=@f.output_path.xhtml.rel_sm +          url=@f.output_path.xhtml.url +          id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt +          id,file='XHTML',@f.base_filename.xhtml +          summarize(id,file,pth,rel,url) +        end +        if FileTest.file?(@f.place_file.xml_sax.dir)==true +          pth=@f.output_path.xml_sax.dir +          rel=@f.output_path.xml_sax.rel_sm +          url=@f.output_path.xml_sax.url +          id,file='XML SAX',@f.base_filename.xml_sax +          summarize(id,file,pth,rel,url) +        end +        if FileTest.file?(@f.place_file.xml_dom.dir)==true +          pth=@f.output_path.xml_dom.dir +          rel=@f.output_path.xml_dom.rel_sm +          url=@f.output_path.xml_dom.url +          id,file='XML DOM',@f.base_filename.xml_dom +          summarize(id,file,pth,rel,url) +        end +        if FileTest.file?(@f.place_file.txt.dir)==true          if    @md.opt.cmd =~/a/; id='Plaintext (Unix (UTF-8) with footnotes)'          elsif @md.opt.cmd =~/e/; id='Plaintext (Unix (UTF-8) with endnotes)'          elsif @md.opt.cmd =~/A/; id='Plaintext (dos (UTF-8) with footnotes)'          elsif @md.opt.cmd =~/E/; id='Plaintext (dos (UTF-8) with endnotes)'          else                id='Plaintext (UTF-8)'          end -          pth=@md.file.output_path.txt.dir -          url=@md.file.output_path.txt.url -          file=@md.file.base_filename.txt -          summarize(id,file,pth,url) +          pth=@f.output_path.txt.dir +          rel=@f.output_path.txt.rel_sm +          url=@f.output_path.txt.url +          file=@f.base_filename.txt +          summarize(id,file,pth,rel,url)          end          if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true            id,file='LaTeX (portrait)',"#{@md.fns}.tex" -          pth,url='','' -          summarize(id,file,pth,url) +          pth,rel,url='','','' +          summarize(id,file,pth,rel,url)          end          if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true            id,file='LaTeX (landscape)',"#{@md.fns}.landscape.tex" -          pth,url='','' -          summarize(id,file,pth,url) +          pth,rel,url='','','' +          summarize(id,file,pth,rel,url)          end          if FileTest.file?("#{@base_path}/#{@md.fn[:digest]}")==true            id,file="Digest/DCC - Document Content Certificate (#{@dg})",@md.fn[:digest]            pth=@base_path -          url='' +          rel,url='',''            #pth='' -          summarize(id,file,pth,url) +          summarize(id,file,pth,rel,url)          end        end        def published_versions -        if FileTest.file?("#{@base_path}/sisu_manifest.html")==true -          id,file='Markup (SiSU source)',@md.fns -          languages(id,file) -        end +        id,file='Markup (SiSU source)',@md.fns +        languages(id,file)        end        def language_versions -        if FileTest.file?(@md.file.place_file.manifest.dir)==true +        if FileTest.file?(@f.place_file.manifest.dir)==true            id,file='Markup (SiSU source)',@md.fns            published_languages(id,file)          end @@ -349,31 +405,35 @@ module SiSU_Manifest        def source_tests          if @md.fns =~/\.ssm\.sst$/                                                  #% decide whether to extract and include requested/required documents            req=@md.fns -          if FileTest.file?(@md.file.place_file.src.dir)==true -            pth=@md.file.output_path.src.dir -            url=@md.file.output_path.src.url -            id,file='Markup Composite File (SiSU source)',@md.file.base_filename.src -            summarize_sources(id,file,pth,url) +          if FileTest.file?(@f.place_file.src.dir)==true +            pth=@f.output_path.src.dir +            rel=@f.output_path.src.rel_sm +            url=@f.output_path.src.url +            id,file='Markup Composite File (SiSU source)',@f.base_filename.src +            summarize_sources(id,file,pth,rel,url)            end          else -          if FileTest.file?(@md.file.place_file.src.dir)==true -            pth=@md.file.output_path.src.dir -            url=@md.file.output_path.src.url -            id,file='Markup (SiSU source)',@md.file.base_filename.src -            summarize_sources(id,file,pth,url) +          if FileTest.file?(@f.place_file.src.dir)==true +            pth=@f.output_path.src.dir +            rel=@f.output_path.src.rel_sm +            url=@f.output_path.src.url +            id,file='Markup (SiSU source)',@f.base_filename.src +            summarize_sources(id,file,pth,rel,url)            end          end -        if FileTest.file?(@md.file.place_file.sisupod.dir)==true -          pth=@md.file.output_path.sisupod.dir -          url=@md.file.output_path.sisupod.url -          id,file='SiSU doc (zip)',@md.file.base_filename.sisupod -          summarize_sources(id,file,pth,url) +        if FileTest.file?(@f.place_file.sisupod.dir)==true +          pth=@f.output_path.sisupod.dir +          rel=@f.output_path.sisupod.rel_sm +          url=@f.output_path.sisupod.url +          id,file='SiSU doc (zip)',@f.base_filename.sisupod +          summarize_sources(id,file,pth,rel,url)          end -        if FileTest.file?(@md.file.place_file.pot.dir)==true -          pth=@md.file.output_path.pot.dir -          url=@md.file.output_path.pot.url -          id,file='SiSU pot',@md.file.base_filename.pot -          summarize_sources(id,file,pth,url) +        if FileTest.file?(@f.place_file.pot.dir)==true +          pth=@f.output_path.pot.dir +          rel=@f.output_path.pot.rel_sm +          url=@f.output_path.pot.url +          id,file='SiSU pot',@f.base_filename.pot +          summarize_sources(id,file,pth,rel,url)          end        end        def metadata_tests @@ -659,8 +719,8 @@ SiSU manifest: #{@md.title.full}  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />  <meta name="sourcefile" content="#{@md.fns}" />  <link rel="generator" href="http://www.jus.uio.no/sisu" /> -<link rel="shortcut icon" href="#{@md.file.path_rel_links.html_scroll_css}_sisu/image_sys/rb7.ico" /> -<link rel="stylesheet" href="#{@md.file.path_rel_links.html_scroll_css}_sisu/css/html.css" type="text/css" /> +<link rel="shortcut icon" href="#{@f.path_rel_links.html_scroll_css}_sisu/image_sys/rb7.ico" /> +<link rel="stylesheet" href="#{@f.path_rel_links.html_scroll_css}_sisu/css/html.css" type="text/css" />  </head>  <body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">  #{banner_table} @@ -669,8 +729,8 @@ WOK              if @env.output_dir_structure.by_language_code? \              or @env.output_dir_structure.by_filetype?                minitoc.gsub!(/<a href="(\S+?)"/m,%{<a href="../html/#{@md.fnb}/\\1"}) -              minitoc.gsub!(/<a href="\.\.\/html\/#{@md.fnb}\/(?:sisu_manifest\.html|#{@md.file.base_filename.manifest})"/m, -              %{<a href="#{@md.file.base_filename.manifest}"}) +              minitoc.gsub!(/<a href="\.\.\/html\/#{@md.fnb}\/(?:sisu_manifest\.html|#{@f.base_filename.manifest})"/m, +              %{<a href="#{@f.base_filename.manifest}"})              end              @manifest[:html] <<<<WOK  <div class="toc"> diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb index aabbd946..e57bf7fa 100644 --- a/lib/sisu/v3/options.rb +++ b/lib/sisu/v3/options.rb @@ -60,14 +60,17 @@  module SiSU_commandline    require "pathname"    require_relative 'sysenv'                             # sysenv.rb +  @@base_path=nil    class Options -    attr_accessor :cmd,:mod,:act,:dir_structure_by,:f_pths,:files,:paths,:lngs,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:what +    attr_accessor :cmd,:mod,:act,:dir_structure_by,:f_pths,:files,:base_path,:paths,:lngs,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:what      def initialize(a)        @x=a -      @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what,@lng='','','','','','','','','','' +      @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what,@lng,@base_path='','','','','','','','','','',''        @f_pths,@files,@paths,@mod,@act=Array.new(5){[]}        @env=SiSU_Env::Info_env.new        @dir_structure_by=SiSU_Env::Env_call.new.output_dir_structure.by? +      @@base_path ||=Dir.pwd +      @base_path=@@base_path        r=Px[:lng_lst].join('|')        r.gsub!(/\|en\|/,'|')        @lang_regx=%r{(?:#{r})} diff --git a/lib/sisu/v3/param.rb b/lib/sisu/v3/param.rb index 5d93523e..5d35bf3d 100644 --- a/lib/sisu/v3/param.rb +++ b/lib/sisu/v3/param.rb @@ -905,9 +905,9 @@ module SiSU_Param        @doc={ lv: [] }        @doc[:fns],@doc[:fnb],@doc[:scr_suffix]='','',''        @@publisher='SiSU scribe' -      attr_accessor :make,:env,:path,:file,:fn,:fns,:fnb,:fnn,:fnt,:fnl,:flv,:fnz,:fnstex,:ocn,:sfx_src,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:site_skin,:sisu,:sisu_version,:ruby_version,:title,:subtitle,:full_title,:html_title,:subtitle_tex,:creator,:classify,:author_home,:author,:author_title,:author_nationality,:authors,:authorship,:translator,:illustrator,:prepared_by,:digitized_by,:subject,:description,:publisher,:current_publisher,:contributor,:date,:date_created,:date_issued,:date_available,:date_valid,:date_modified,:date_translated,:date_added_to_site,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:type,:format,:identifier,:source,:language,:language_original,:relation,:coverage,:rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:papersize_array,:toc,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:lvs,:pagenew,:pagebreak,:num_top,:toc_lev_limit,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:markup,:markup_instruction,:markup_version,:markup_declared,:flag_tables,:vocabulary,:doc_skin,:doc_css,:yaml,:lnk,:links,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:filesize,:user,:home,:hostname,:pwd,:firstseg,:programs,:author_copymark,:i18n,:lang,:en,:notes,:dgst,:dgst_skin,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:ec,:opt,:sem_tag,:book_idx,:topic_register,:topic_register_array,:original,:writing_focus,:audio,:daisy +      attr_accessor :make,:env,:path,:file,:fn,:fns,:fnb,:fnn,:fnt,:fnl,:flv,:fnz,:fnstex,:ocn,:sfx_src,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:site_skin,:sisu,:sisu_version,:ruby_version,:title,:subtitle,:full_title,:html_title,:subtitle_tex,:creator,:classify,:author_home,:author,:author_title,:author_nationality,:authors,:authorship,:translator,:illustrator,:prepared_by,:digitized_by,:subject,:description,:publisher,:current_publisher,:contributor,:date,:date_created,:date_issued,:date_available,:date_valid,:date_modified,:date_translated,:date_added_to_site,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:type,:format,:identifier,:source,:language,:language_original,:relation,:coverage,:rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:papersize_array,:toc,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:lvs,:pagenew,:pagebreak,:num_top,:toc_lev_limit,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:markup,:markup_instruction,:markup_version,:markup_declared,:flag_tables,:vocabulary,:doc_skin,:doc_css,:yaml,:lnk,:links,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:filesize,:user,:home,:hostname,:pwd,:firstseg,:programs,:author_copymark,:i18n,:lang,:lang_code_insert,:en,:notes,:dgst,:dgst_skin,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:ec,:opt,:sem_tag,:book_idx,:topic_register,:topic_register_array,:original,:writing_focus,:audio,:daisy        def initialize(fns_array,opt) -        @env=@path,@file=@fn=@fns=@fnb=@fnn=@fnt=@fnl=@flv=@fnz=@fnstex=@ocn=@sfx_src=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@make=@flag_endnotes=@flag_auto_endnotes=@flag_separate_endnotes=@flag_separate_endnotes_make=@site_skin=@sisu=@sisu_version=@ruby_version=@title=@subtitle=@full_title=@html_title=@subtitle_tex=@creator=@classify=@author_home=@author=@author_title=@author_nationality=@translator=@illustrator=@prepared_by=@digitized_by=@subject=@description=@publisher=@current_publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@date_translated=@date_added_to_site=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@type=@format=@identifier=@source=@language=@language_original=@relation=@coverage=@rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@num_top=@toc_lev_limit=@flag_tables=@vocabulary=@doc_skin=@doc_css=@yaml=@lnk=@links=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@filesize=@firstseg=@programs=@author_copymark=@i18n=@lang=@en=@notes=@dgst=@dgst_skin=@generated=@heading_seg_first=@base_program=@topic_register=@original=@writing_focus=@audio=nil +        @env=@path,@file=@fn=@fns=@fnb=@fnn=@fnt=@fnl=@flv=@fnz=@fnstex=@ocn=@sfx_src=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@make=@flag_endnotes=@flag_auto_endnotes=@flag_separate_endnotes=@flag_separate_endnotes_make=@site_skin=@sisu=@sisu_version=@ruby_version=@title=@subtitle=@full_title=@html_title=@subtitle_tex=@creator=@classify=@author_home=@author=@author_title=@author_nationality=@translator=@illustrator=@prepared_by=@digitized_by=@subject=@description=@publisher=@current_publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@date_translated=@date_added_to_site=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@type=@format=@identifier=@source=@language=@language_original=@relation=@coverage=@rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@num_top=@toc_lev_limit=@flag_tables=@vocabulary=@doc_skin=@doc_css=@yaml=@lnk=@links=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@filesize=@firstseg=@programs=@author_copymark=@i18n=@lang=@lang_code_insert=@en=@notes=@dgst=@dgst_skin=@generated=@heading_seg_first=@base_program=@topic_register=@original=@writing_focus=@audio=nil          @data,@path,@fns,@opt=fns_array,opt.pth,opt.fns,opt #@data used as data          @flag_tables,@set_header_title,@set_heading_top,@set_heading_seg,@heading_seg_first_flag,@flag_promo,@book_idx=false,false,false,false,false,false,false          @seg_autoname_safe=true @@ -918,6 +918,9 @@ module SiSU_Param          @flv,@lang,@seg_names,@tags,@tag_array,@tag_a,@ec[:image],@ec[:audio],@ec[:multimedia]=Array.new(9){[]}          @authors,@topic_register_array,@papersize_array=[],[],[]          @lvs=[nil,0,0,0,0,0,0] +        @lang_code_insert=(@opt.dir_structure_by =~/language/) \ +        ? '' \ +        : ".#{@opt.lng}"          @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/          @rgx_audio=/\{\s*(\S+?\.(?:mp3|ogg))/          @rgx_mm=/\{\s*(\S+?\.(?:ogg|mpeg))/ #expand and distinguish ogg @@ -1318,7 +1321,7 @@ module SiSU_Param            @language[:code]=fn_set_lang[:c]            @language[:name]=fn_set_lang[:n]          end -        @fnl=@env.i18n.lang_filename(fn_set_lang[:n]) +        @fnl=@env.i18n.lang_filename(fn_set_lang[:c])  #fix  #       @flv.each do |l|  #         lang=SiSU_Env::Standardise_language.new.file_to_language(l) diff --git a/lib/sisu/v3/prog_text_translation.rb b/lib/sisu/v3/prog_text_translation.rb index e5a78e92..fca06e71 100644 --- a/lib/sisu/v3/prog_text_translation.rb +++ b/lib/sisu/v3/prog_text_translation.rb @@ -69,7 +69,8 @@ module SiSU_Translate        when /German/i;                    German.new(md,doc_lang,trans_str)        when /Italian/i;                   Italian.new(md,doc_lang,trans_str)        when /Spanish/i;                   Spanish.new(md,doc_lang,trans_str) -      when /Brazilian(?: Portuguese)?/i; Portuguese.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         Portuguese.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2        when /Portuguese/i;                Portuguese.new(md,doc_lang,trans_str)        when /Swedish/i;                   Swedish.new(md,doc_lang,trans_str)        when /Danish/i;                    Danish.new(md,doc_lang,trans_str) @@ -285,7 +286,8 @@ module SiSU_Translate        when /German/i;                    'Deutsch'        when /Italian/i;                   'Italiano'        when /Spanish/i;                   'español' -      when /Brazilian(?: Portuguese)?/i; 'Brazilian Português'                 # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Brazilian Português'                 # tag depreciated, see iso 639-2        when /Portuguese/i;                'Português'        when /Swedish/i;                   'svenska'        when /Danish/i;                    'dansk' @@ -503,7 +505,8 @@ module SiSU_Translate        when /German/i;                    'German'        when /Italian/i;                   'Italian'        when /Spanish/i;                   'Spanish' -      when /Brazilian(?: Portuguese)?/i; 'Brazilian Portuguese'                # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Brazilian Portuguese'                # tag depreciated, see iso 639-2        when /Portuguese/i;                'Portuguese'        when /Swedish/i;                   'Swedish'        when /Danish/i;                    'Danish' @@ -717,7 +720,8 @@ module SiSU_Translate        when /German/i;                    'Allemand'        when /Italian/i;                   'Italien'        when /Spanish/i;                   'Espagnol' -      when /Brazilian(?: Portuguese)?/i; 'Portugais brésilien'                 # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Portugais brésilien'                 # tag depreciated, see iso 639-2        when /Portuguese/i;                'Portugais'        when /Swedish/i;                   'Suédois'        when /Danish/i;                    'Danois' @@ -928,7 +932,8 @@ module SiSU_Translate        when /German/i;                    'Deutsch'        when /Italian/i;                   'Italienisch'        when /Spanish/i;                   'Spanisch' -      when /Brazilian(?: Portuguese)?/i; 'Brasilianisch-Portugiesisch'         # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Brasilianisch-Portugiesisch'         # tag depreciated, see iso 639-2        when /Portuguese/i;                'Portugiesisch'        when /Swedish/i;                   'Schwedisch'        when /Danish/i;                    'Dänisch' @@ -966,203 +971,204 @@ module SiSU_Translate      def filetype_description        description      end -   def metadata -     'metadatos' -   end -   def file_size -     'tamaño del fichero' -   end -   def full_title #dc -     'Título' -   end -   def title -     'Título' -   end -   def subtitle -     'Subtítulo' -   end -   def author #dc -     'Creador' -   end -   def contributor #dc -     'Contribuidor' -   end -   def translator -     'Traductor' -   end -   def illustrator -     'Ilustrador' -   end -   def publisher #dc -     'Editor' -   end -   def prepared_by -     'Preparado por' -   end -   def digitized_by -     'Digitalizado por' -   end -   def subject #dc -     'Asunto' -   end -   def description #dc (watch) -     'Descripción' -   end -   def abstract #dc -     'Resumen' -   end -   def type #dc -     'Tipo' -   end -   def rights #dc -     'Derechos' -   end -   def date #dc -     'Fecha' -   end -   def date_created #dc -     'Fecha de creación' -   end -   def date_issued #dc -     'Fecha de publicación' -   end -   def date_available #dc -     'Fecha de disponibilidad' -   end -   def date_modified #dc -     'Fecha de modificación' -   end -   def date_valid #dc -     'Fecha de valided' -   end -   def language #dc -     'Idioma' -   end -   def language_original -     'Lenguaje original' -   end -   def format #dc -     'Formato' -   end -   def identifier #dc -     'Identificador' -   end -   def source #dc -     'Fuente' -   end -   def relation #dc -     'Relación' -   end -   def coverage #dc -     'Cobertura' -   end -   def keywords -     'Palabras claves' -   end -   def comments -     'Comentarios' -   end -   def cls_loc -     'Clasificación Biblioteca del Congreso' -   end -   def cls_dewey -     'Clasificación Dewey' -   end -    def cls_oclc # fix -      'Classify OCLC number' +    def metadata +      'metadatos'      end -   def cls_gutenberg -     'Clasificación Proyecto Gutenberg' -   end -   def cls_isbn -     'Clasificación ISBN' -   end -   def prefix_a -     'Prefijo (a)' -   end -   def prefix_b -     'Prefijo (b)' -   end -    def topic_register -      'Topics Registered' +    def file_size +      'tamaño del fichero'      end -   def sourcefile -     'Fichero fuente' -   end -   def word_count -     'Número de palabras apróximado' -   end -   def sourcefile_digest -     'Resumen del fichero fuente' -   end -   def digest_md5 -     'Resumen del fichero fuente (md5)' -   end -   def digest_sha256 -     'Resumen del fichero fuente (sha256)' -   end -   def sc_number -     'Versión (RCS/CVS) del documento' -   end -   def sc_date -     'Versión (RCS/CVS) del documento' -   end -   def last_generated -     'Última generación (metaverse) del documento' -   end -   def sisu_version -     'Generado por' -   end -   def ruby_version -     'Versión de Ruby' -   end -   def suggested_links -     'enlaces sugeridos de metadatos' -   end -   def language_version_list -     'Document Language Versions, manifests' -   end -    def manifest_description -      'SiSU manifest of document filetypes and metadata' +    def full_title #dc +      'Título' +    end +    def title +      'Título' +    end +    def subtitle +      'Subtítulo' +    end +    def author #dc +      'Creador' +    end +    def contributor #dc +      'Contribuidor' +    end +    def translator +      'Traductor' +    end +    def illustrator +      'Ilustrador' +    end +    def publisher #dc +      'Editor' +    end +    def prepared_by +      'Preparado por' +    end +    def digitized_by +      'Digitalizado por' +    end +    def subject #dc +      'Asunto' +    end +    def description #dc (watch) +      'Descripción' +    end +    def abstract #dc +      'Resumen' +    end +    def type #dc +      'Tipo' +    end +    def rights #dc +      'Derechos' +    end +    def date #dc +      'Fecha' +    end +    def date_created #dc +      'Fecha de creación' +    end +    def date_issued #dc +      'Fecha de publicación' +    end +    def date_available #dc +      'Fecha de disponibilidad' +    end +    def date_modified #dc +      'Fecha de modificación' +    end +    def date_valid #dc +      'Fecha de valided' +    end +    def language #dc +      'Idioma'      end -   def manifest_description_output -     'Manifiesto SiSU de salida generada' -   end -   def manifest_description_metadata -     'Manifiesto SiSU de metadatos de documento' -   end -   def language_list_translated -     lang=case @trans_str -     when /American/i;                  'Inglés Americano'                     # tag depreciated, see iso 639-2 -     when /English/i;                   'Inglés' -     when /French/i;                    'Francés' -     when /German/i;                    'Alemán' -     when /Italian/i;                   'Italiano' -     when /Spanish/i;                   'Español' -     when /Brazilian(?: Portuguese)?/i; 'Portugués de Brasil'                  # tag depreciated, see iso 639-2 -     when /Portuguese/i;                'Portugués' -     when /Swedish/i;                   'Sueco' -     when /Danish/i;                    'Danés' -     when /Finnish/i;                   'Finés' -     when /Norwegian/i;                 'Noruego' -     when /Icelandic/i;                 'Islandés' -     when /Dutch/i;                     'Holandés' -     when /Estonian/i;                  'Estonio' -     when /Hungarian/i;                 'Húngaro' -     when /Polish/i;                    'Polaco' -     when /Romanian/i;                  'Rumano' -     when /Russian/i;                   'Ruso' -     when /Greek/i;                     'Griego' -     when /Ukranian/i;                  'Ucraniano' -     when /Turkish/i;                   'Turco' -     when /Slovenian/i;                 'Eslovaco' -     when /Croatian/i;                  'Croata' -     when /Slovak(?:ian)?/i;            'Eslovaco' -     when /Czech/i;                     'Checo' -     when /Bulgarian/i;                 'Búlgaro' -     else @trans_str +    def language_original +      'Lenguaje original' +    end +    def format #dc +      'Formato' +    end +    def identifier #dc +      'Identificador' +    end +    def source #dc +      'Fuente' +    end +    def relation #dc +      'Relación' +    end +    def coverage #dc +      'Cobertura' +    end +    def keywords +      'Palabras claves' +    end +    def comments +      'Comentarios' +    end +    def cls_loc +      'Clasificación Biblioteca del Congreso' +    end +    def cls_dewey +      'Clasificación Dewey' +    end +     def cls_oclc # fix +       'Classify OCLC number' +     end +    def cls_gutenberg +      'Clasificación Proyecto Gutenberg' +    end +    def cls_isbn +      'Clasificación ISBN' +    end +    def prefix_a +      'Prefijo (a)' +    end +    def prefix_b +      'Prefijo (b)' +    end +     def topic_register +       'Topics Registered'       end -   end +    def sourcefile +      'Fichero fuente' +    end +    def word_count +      'Número de palabras apróximado' +    end +    def sourcefile_digest +      'Resumen del fichero fuente' +    end +    def digest_md5 +      'Resumen del fichero fuente (md5)' +    end +    def digest_sha256 +      'Resumen del fichero fuente (sha256)' +    end +    def sc_number +      'Versión (RCS/CVS) del documento' +    end +    def sc_date +      'Versión (RCS/CVS) del documento' +    end +    def last_generated +      'Última generación (metaverse) del documento' +    end +    def sisu_version +      'Generado por' +    end +    def ruby_version +      'Versión de Ruby' +    end +    def suggested_links +      'enlaces sugeridos de metadatos' +    end +    def language_version_list +      'Document Language Versions, manifests' +    end +     def manifest_description +       'SiSU manifest of document filetypes and metadata' +     end +    def manifest_description_output +      'Manifiesto SiSU de salida generada' +    end +    def manifest_description_metadata +      'Manifiesto SiSU de metadatos de documento' +    end +    def language_list_translated +      lang=case @trans_str +      when /American/i;                  'Inglés Americano'                     # tag depreciated, see iso 639-2 +      when /English/i;                   'Inglés' +      when /French/i;                    'Francés' +      when /German/i;                    'Alemán' +      when /Italian/i;                   'Italiano' +      when /Spanish/i;                   'Español' +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Portugués de Brasil'                  # tag depreciated, see iso 639-2 +      when /Portuguese/i;                'Portugués' +      when /Swedish/i;                   'Sueco' +      when /Danish/i;                    'Danés' +      when /Finnish/i;                   'Finés' +      when /Norwegian/i;                 'Noruego' +      when /Icelandic/i;                 'Islandés' +      when /Dutch/i;                     'Holandés' +      when /Estonian/i;                  'Estonio' +      when /Hungarian/i;                 'Húngaro' +      when /Polish/i;                    'Polaco' +      when /Romanian/i;                  'Rumano' +      when /Russian/i;                   'Ruso' +      when /Greek/i;                     'Griego' +      when /Ukranian/i;                  'Ucraniano' +      when /Turkish/i;                   'Turco' +      when /Slovenian/i;                 'Eslovaco' +      when /Croatian/i;                  'Croata' +      when /Slovak(?:ian)?/i;            'Eslovaco' +      when /Czech/i;                     'Checo' +      when /Bulgarian/i;                 'Búlgaro' +      else @trans_str +      end +    end    end    class Italian      def initialize(md,doc_lang,trans_str) @@ -1350,7 +1356,8 @@ module SiSU_Translate        when /German/i;                    'Tedesco'        when /Italian/i;                   'Italiano'        when /Spanish/i;                   'Spagnolo' -      when /Brazilian(?: Portuguese)?/i; 'Portoguese (Brasile)'                # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Portoguese (Brasile)'                # tag depreciated, see iso 639-2        when /Portuguese/i;                'Portoguese'        when /Swedish/i;                   'Svedese'        when /Danish/i;                    'Danese' @@ -1561,7 +1568,8 @@ module SiSU_Translate        when /German/i;                    'Saksa'        when /Italian/i;                   'Italia'        when /Spanish/i;                   'Espanja' -      when /Brazilian(?: Portuguese)?/i; 'Brasilian portugali'                 # tag depreciated, see iso 639-2 +      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i; +                                         'Brasilian portugali'                 # tag depreciated, see iso 639-2        when /Portuguese/i;                'Portugali'        when /Swedish/i;                   'Ruotsi'        when /Danish/i;                    'Tanska' @@ -1586,7 +1594,7 @@ module SiSU_Translate        end      end    end -  class Porguguese            < English +  class Portuguese            < English    end    class Swedish               < English    end diff --git a/lib/sisu/v3/remote.rb b/lib/sisu/v3/remote.rb index d3e4d653..5537d7b4 100644 --- a/lib/sisu/v3/remote.rb +++ b/lib/sisu/v3/remote.rb @@ -71,15 +71,15 @@ module SiSU_Remote      end      def rsync        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/ -      @remote.rsync +      @remote.rsync.document      end      def rsync_base        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','rsync').dark_grey_title_hi unless @opt.cmd =~/q/ -      @remote.rsync_base +      @remote.rsync.site_base      end      def rsync_base_sync        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','rsync and sync').dark_grey_title_hi unless @opt.cmd =~/q/ -      @remote.rsync_base_sync +      @remote.rsync.site_base_sync      end      def rsync_sitemaps        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement sitemaps ->','rsync').dark_grey_title_hi unless @opt.cmd =~/q/ @@ -91,15 +91,15 @@ module SiSU_Remote      end      def scp        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/ -      @remote.scp +      @remote.scp.document      end      def scp_base        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement of base site ->','excluding images').dark_grey_title_hi unless @opt.cmd =~/q/ -      @remote.scp_base +      @remote.scp.site_base      end      def scp_base_all        SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','complete').dark_grey_title_hi unless @opt.cmd =~/q/ -      @remote.scp_base_all +      @remote.scp.site_base_all      end    end    class Get diff --git a/lib/sisu/v3/sysenv.rb b/lib/sisu/v3/sysenv.rb index 5a59ebf8..a35a9eef 100644 --- a/lib/sisu/v3/sysenv.rb +++ b/lib/sisu/v3/sysenv.rb @@ -445,6 +445,8 @@ module SiSU_Env            'language'          elsif by_filetype?            'filetype' +        elsif by_filename? +          'filename'          else            'filename'          end @@ -521,12 +523,13 @@ module SiSU_Env        @m      end      def filename(code,name,suffix) -      d=SiSU_Env::Info_env.new(@fns) -      fnl=d.i18n.lang_filename(code) -      if code -        "#{fnl[:pre]}#{name}#{fnl[:mid]}#{suffix}#{fnl[:post]}" -      else "#{name}#{suffix}" -      end +      #d=SiSU_Env::Info_env.new(@fns) +      #fnl=d.i18n.lang_filename(code) +      "#{name}#{suffix}" +      #if code +      #  "#{fnl[:pre]}#{name}#{fnl[:mid]}#{suffix}#{fnl[:post]}" +      #else "#{name}#{suffix}" +      #end      end      def lang(code)        @fn={ @@ -774,7 +777,7 @@ module SiSU_Env        #? system("scp -Cr #{@input} #{@output}") \        #: (puts "\tWARN: #{program} not found" )      end -    def rsync(action='',chdir='.') +    def rsync(action='',chdir=nil)        program='rsync'        if program_found?(program)          vb=if @cmd =~/q/; 'q' @@ -783,12 +786,18 @@ module SiSU_Env          end          msg=''          msg=" && echo 'OK: #{@input} -> #{@output}'" unless @cmd =~/q/ -       puts "rsync -az#{vb} #{action} #{@input} #{@output}" if @cmd =~/[vVM]/ +        puts "rsync -az#{vb} #{action} #{@input} #{@output}" if @cmd =~/[vVM]/ +        dir_change,dir_return='','' +        if chdir \ +        && chdir != Dir.pwd +          dir_change=Dir.chdir(chdir) +          dir_return=Dir.pwd +        end +        dir_change          system(" -          cd #{chdir}            rsync -az#{vb} #{action} #{@input} #{@output} #{msg} -          cd -          ") +        dir_return        else puts "\tWARN: #{program} not found"        end      end @@ -1436,6 +1445,81 @@ WOK        end        self      end +    def path_rel_links +      def html_scroll_2 +        if @env.output_dir_structure.by_language_code? +          '../../' +        elsif @env.output_dir_structure.by_filetype? +          '../' +        else +          '../' +        end +      end +      def html_seg_2 +        if @env.output_dir_structure.by_language_code? +          '../../../' +        elsif @env.output_dir_structure.by_filetype? +          '../../' +        else +          '../' +        end +      end +      def html_scroll_1 +        if @env.output_dir_structure.by_language_code? +          '../' +        elsif @env.output_dir_structure.by_filetype? +          '../' +        else +          './' +        end +      end +      def html_seg_1 +        if @env.output_dir_structure.by_language_code? +          '../../' +        elsif @env.output_dir_structure.by_filetype? +          '../../' +        else +          './' +        end +      end +      def default_output_css +        if @env.output_dir_structure.by_language_code? +          '../../' +        elsif @env.output_dir_structure.by_filetype? +          '../' +        else +          '../' +        end +      end +      def html_scroll_css +        default_output_css +      end +      def xhtml_css +        default_output_css +      end +      def xml_css +        default_output_css +      end +      def html_seg_css +        if @env.output_dir_structure.by_language_code? +          '../../../' +        elsif @env.output_dir_structure.by_filetype? +          '../../' +        else +          '../' +        end +      end +      def manifest_css +        if @env.output_dir_structure.by_language_code? +          '../../_sisu/css' +        elsif @env.output_dir_structure.by_filetype? +          '' +        else +          '../' +        end +      end +      self +    end      def path                                                                     #dir        def home          @sys.home @@ -2375,7 +2459,7 @@ WOK    end    class File_map < Info_env      attr_accessor :local_sisu_source -    def initialize(opt='') #watch +    def initialize(opt='') #watch / REVIEW        super()        @opt=opt #,opt.fns,opt.cmd        @env=(@opt.fns && !(@opt.fns.empty?) \ @@ -2642,250 +2726,277 @@ WOK        remote_host_base_general      end      def scp                                                                    #sort out later using ruby libraries #not ideal, first time each file is sent, -r must be called separately for subdir to be built -      self.remote_host_base.each do |remote_conn| -        local_gen=@source_path -        remote_gen=case @opt.cmd -        when /u/;                "#{remote_conn[:name]}/#{@env.path.stub_pwd}/."             #creates remote directory tree, this is not the usual function of u -        when /[abhHNopwxXy]/;    "#{remote_conn[:name]}/#{@env.path.stub_pwd}/#{@fnb}/." -        else                     "#{remote_conn[:name]}/#{@env.path.stub_pwd}/." -        end -        local_epub=@source_path_epub -        local_src=@source_path_src -        local_pod=@source_path_pod -        remote_epub="#{remote_conn[:name]}/#{@env.path.stub_epub}/." -        remote_src="#{remote_conn[:name]}/#{@env.path.stub_src}/." -        remote_pod="#{remote_conn[:name]}/#{@env.path.stub_pod}/." -        src_txt=@opt.fnc -        src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') -        if (local_gen =~/\S/ \ -        and local_gen !~/\/\//) \ -        and (remote_gen =~/\S/ \ -        and remote_gen !~/\/\//) \ -        and @@flag_remote==true \ -        and @opt.cmd !~/U/ -          System_call.new(local_gen,remote_gen).scp -          if FileTest.file?("#{local_src}/#{src_txt}") -            System_call.new("#{local_src}/#{src_txt}",remote_src).scp +      def document +        self.remote_host_base.each do |remote_conn| +          local_gen=@source_path +          remote_gen=case @opt.cmd +          when /u/;                "#{remote_conn[:name]}/#{@env.path.stub_pwd}/."             #creates remote directory tree, this is not the usual function of u +          when /[abhHNopwxXy]/;    "#{remote_conn[:name]}/#{@env.path.stub_pwd}/#{@fnb}/." +          else                     "#{remote_conn[:name]}/#{@env.path.stub_pwd}/."            end -          if FileTest.file?("#{local_pod}/#{src_pod}") -            System_call.new("#{local_src}/#{src_pod}",remote_pod).scp +          local_epub=@source_path_epub +          local_src=@source_path_src +          local_pod=@source_path_pod +          remote_epub="#{remote_conn[:name]}/#{@env.path.stub_epub}/." +          remote_src="#{remote_conn[:name]}/#{@env.path.stub_src}/." +          remote_pod="#{remote_conn[:name]}/#{@env.path.stub_pod}/." +          src_txt=@opt.fnc +          src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') +          if (local_gen =~/\S/ \ +          and local_gen !~/\/\//) \ +          and (remote_gen =~/\S/ \ +          and remote_gen !~/\/\//) \ +          and @@flag_remote==true \ +          and @opt.cmd !~/U/ +            System_call.new(local_gen,remote_gen).scp +            if FileTest.file?("#{local_src}/#{src_txt}") +              System_call.new("#{local_src}/#{src_txt}",remote_src).scp +            end +            if FileTest.file?("#{local_pod}/#{src_pod}") +              System_call.new("#{local_src}/#{src_pod}",remote_pod).scp +            end +            if FileTest.file?("#{local_epub}/#{@opt.fnb}.epub") +              System_call.new("#{local_epub}/#{@opt.fnb}.epub",remote_epub,@opt.cmd).scp +            end +          elsif  @opt.cmd =~/U/ +            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +            puts "#{local_gen} -> #{remote_gen}" +            if FileTest.file?("#{local_src}/#{src_doc}") +              puts "#{local_src}/#{src_doc}* -> #{remote_src}" +            end +            if FileTest.file?("#{local_pod}/#{src_doc}.zip") +              puts "#{local_pod}/#{src_doc}* -> #{remote_pod}" +            end +          else +            puts 'suspect scp request, ignored' +            puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}" +            puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/            end -          if FileTest.file?("#{local_epub}/#{@opt.fnb}.epub") -            System_call.new("#{local_epub}/#{@opt.fnb}.epub",remote_epub,@opt.cmd).scp +        end +      end +      def site_base                                                               #base site +        self.remote_host_base.each do |remote_conn| +          local=@source_path +          remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." +          if defined? @rc['permission_set']['remote_base_site'] \ +          and @rc['permission_set']['remote_base_site'] \ +          and @@flag_remote==true \ +          and @opt.cmd !~/U/ +            puts "begin scp_base: #{local} -> #{remote}" +            System_call.new("#{local}/#{@env.path.style}/",remote).scp +          elsif @opt.cmd =~/U/ +            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +            puts "begin scp_base: #{local} -> #{remote}" +            puts "#{local}/#{@env.path.style}/ -> #{remote}" +          else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/            end -        elsif  @opt.cmd =~/U/ -          puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -          puts "#{local_gen} -> #{remote_gen}" -          if FileTest.file?("#{local_src}/#{src_doc}") -            puts "#{local_src}/#{src_doc}* -> #{remote_src}" +        end +      end +      def site_base_all                                                           #base site +        self.remote_host_base.each do |remote_conn| +          local=@source_path +          remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." +          if defined? @rc['permission_set']['remote_base_site'] \ +          and @rc['permission_set']['remote_base_site'] \ +          and @@flag_remote==true \ +          and @opt.cmd !~/U/ +            puts "begin scp_base_all: #{local} -> #{remote}" +            System_call.new("#{local}/_sisu/image_sys/",remote).scp +            System_call.new("#{local}/_sisu/image/",remote).scp +            System_call.new("#{local}/#{@env.path.style}/",remote).scp +          elsif @opt.cmd =~/U/ +            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +            puts "scp_base_all: #{local} -> #{remote}" +            puts "#{local}/_sisu/image_sys/ -> #{remote}" +            puts "#{local}/_sisu/image/ -> #{remote}" +            puts "#{local}/#{@env.path.style}/ -> #{remote}" +          else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/            end -          if FileTest.file?("#{local_pod}/#{src_doc}.zip") -            puts "#{local_pod}/#{src_doc}* -> #{remote_pod}" +        end +      end +      self +    end +    def images_from_skin +      skin=Info_skin.new(@md).select +      skin_array=nil +      skin_images_array=[] +      if skin +        skin_array=IO.readlines(skin,"\n") +        skin_array.each do |l| +          if l !~/^#/ +            if l =~/([a-z0-9._-]+\.(?:png|jpg|gif))/i +              skin_images_array << $1 +            end            end -        else -          puts 'suspect scp request, ignored' -          puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}" -          puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/          end        end +      skin_images_array      end      def rsync -      self.remote_host_base.each do |remote_conn| -        local_gen=@source_path -        local_gen_image="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image" -        local_gen_image_external="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external" -        remote_gen="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." -        remote_images="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/image/." -        remote_images_external="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/image_external/." -        local_epub=@source_path_epub -        local_src=@source_path_src -        local_pod=@source_path_pod -        remote_epub="#{remote_conn[:name]}/#{@env.path.stub_epub}/." -        remote_src="#{remote_conn[:name]}/#{@env.path.stub_src}/." -        remote_pod="#{remote_conn[:name]}/#{@env.path.stub_pod}/." -        src_txt=@opt.fnc -        src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') -        if (local_gen =~/\S/ \ -        and local_gen !~/\/\//) \ -        and (remote_gen =~/\S/ \ -        and remote_gen !~/\/\//) \ -        and @@flag_remote==true \ -        and @opt.cmd !~/U/ -          delete_extra_files='--delete' # '--delete-after' -          inp=[] -          begin -            local_dirs=%{-f"+ */" -f"- *" #{@md.file.output_path.base.dir}/*} -            System_call.new(local_dirs,remote_gen,@opt.cmd).rsync -          rescue -            local_dirs=%{--include='*/' --exclude='*' @md.file.output_path.base.dir} -            System_call.new(local_dirs,remote_gen,@opt.cmd).rsync -          end -          if @opt.cmd =~/h/ \ -          && FileTest.file?(@md.file.place_file.html_scroll.dir) -            inp << @md.file.output_path.html_seg.rel << @md.file.place_file.html_scroll.rel -          end -          if @opt.cmd =~/w/ \ -          && FileTest.file?(@md.file.place_file.html_concordance.dir) -            inp << @md.file.place_file.html_concordance.rel -          end -          if @opt.cmd =~/e/ \ -          && FileTest.file?(@md.file.place_file.epub.dir) -            inp << @md.file.place_file.epub.rel -          end -          if @opt.cmd =~/o/ \ -          && FileTest.file?(@md.file.place_file.odt.dir) -            inp << @md.file.place_file.odt.rel -          end -          if @opt.cmd =~/b/ \ -          && FileTest.file?(@md.file.place_file.xhtml.dir) -            inp << @md.file.place_file.xhtml.rel -          end -          if @opt.cmd =~/x/ \ -          && FileTest.file?(@md.file.place_file.xml_sax.dir) -            inp << @md.file.place_file.xml_sax.rel -          end -          if @opt.cmd =~/X/ \ -          && FileTest.file?(@md.file.place_file.xml_dom.dir) -            inp << @md.file.place_file.xml_dom.rel -          end -          if @opt.cmd =~/[at]/ \ -          && FileTest.file?(@md.file.place_file.txt.dir) -            inp << @md.file.place_file.txt.rel -          end -          if @opt.cmd =~/N/ \ -          && FileTest.file?(@md.file.place_file.hash_digest.dir) -            inp << @md.file.place_file.hash_digest.rel -          end -          if @opt.cmd =~/s/ \ -          && FileTest.file?(@md.file.place_file.src.dir) -            inp << @md.file.place_file.src.rel -          end -          if @opt.cmd =~/S/ \ -          && FileTest.file?(@md.file.place_file.sisupod.dir) -            inp << @md.file.place_file.sisupod.rel -          end -          if @opt.cmd =~/p/ -            inp << @md.file.output_path.pdf.rel + '/' + @opt.fnb + '*' -          end -          if @opt.cmd =~/y/ \ -          && FileTest.file?(@md.file.place_file.manifest.dir) -            inp << @md.file.place_file.manifest.rel -          end -          if inp.length > 0 -            local_gen=inp.join(' ') -            remote_rel=remote_conn[:name] + '/' + @md.file.output_path.stub.rcp -            remote_rel='/home/ralph/tst' -            System_call.new(local_gen,remote_rel,@opt.cmd).rsync('--relative',@md.file.output_path.base.dir) -          end -          if FileTest.file?("#{local_src}/#{src_txt}") +      @f=SiSU_Env::SiSU_file.new(@md) +      def document +        self.remote_host_base.each do |remote_conn| +          local_gen=@source_path +          local_gen_image="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image" +          local_gen_image_external="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external" +          remote_gen="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." +          remote_rel=remote_conn[:name] + '/' + @f.output_path.stub.rcp +          src_txt=@opt.fnc +          if (local_gen =~/\S/ \ +          and local_gen !~/\/\//) \ +          and (remote_gen =~/\S/ \ +          and remote_gen !~/\/\//) \ +          and @@flag_remote==true \ +          and @opt.cmd !~/U/  #           System_call.new("#{local_src}/#{src_txt}",remote_src,@opt.cmd).rsync -            if defined? @md.ec[:image] and not @md.ec[:image].empty? -              images="#{local_gen_image}/" + @md.ec[:image].join(" #{local_gen_image}/") -#             System_call.new(images,remote_images,@opt.cmd).rsync +            delete_extra_files='--delete' # '--delete-after' +            inp=[] +            if @opt.cmd =~/h/ \ +            && FileTest.file?(@f.place_file.html_scroll.dir) +              inp << @f.output_path.html_seg.rel << @f.place_file.html_scroll.rel +            end +            if @opt.cmd =~/w/ \ +            && FileTest.file?(@f.place_file.html_concordance.dir) +              inp << @f.place_file.html_concordance.rel +            end +            if @opt.cmd =~/e/ \ +            && FileTest.file?(@f.place_file.epub.dir) +              inp << @f.place_file.epub.rel +            end +            if @opt.cmd =~/o/ \ +            && FileTest.file?(@f.place_file.odt.dir) +              inp << @f.place_file.odt.rel +            end +            if @opt.cmd =~/b/ \ +            && FileTest.file?(@f.place_file.xhtml.dir) +              inp << @f.place_file.xhtml.rel +            end +            if @opt.cmd =~/x/ \ +            && FileTest.file?(@f.place_file.xml_sax.dir) +              inp << @f.place_file.xml_sax.rel +            end +            if @opt.cmd =~/X/ \ +            && FileTest.file?(@f.place_file.xml_dom.dir) +              inp << @f.place_file.xml_dom.rel +            end +            if @opt.cmd =~/[at]/ \ +            && FileTest.file?(@f.place_file.txt.dir) +              inp << @f.place_file.txt.rel +            end +            if @opt.cmd =~/N/ \ +            && FileTest.file?(@f.place_file.hash_digest.dir) +              inp << @f.place_file.hash_digest.rel +            end +            if @opt.cmd =~/s/ \ +            && FileTest.file?(@f.place_file.src.dir) +              inp << @f.place_file.src.rel +            end +            if @opt.cmd =~/S/ \ +            && FileTest.file?(@f.place_file.sisupod.dir) +              inp << @f.place_file.sisupod.rel +            end +            if @opt.cmd =~/p/ +              inp << @f.output_path.pdf.rel + '/' + @opt.fnb + '*' +            end +            if @opt.cmd =~/y/ \ +            && FileTest.file?(@f.place_file.manifest.dir) +              inp << @f.place_file.manifest.rel +            end +            local_gen=if inp.length > 0 +              inp.join(' ') +            else '' +            end +            local_css,images,images_external,images_system='','','','' +            if @opt.cmd =~/[hwbxX]/ \ +            and defined? @md.ec[:image] \ +            and not @md.ec[:image].empty? +              images=@f.place_file.images.rel + '/' + @md.ec[:image].join(" #{@f.output_path.images.rel}/")                images_external="#{local_gen_image_external}/" + @md.ec[:image].join(" #{local_gen_image_external}/") -#             System_call.new(images_external,remote_images_external,@opt.cmd).rsync              end +            images_gen=images=images_skin=images_system=local_css='' +            if @opt.cmd =~/[yhwbxX]/ \ +            and defined? @md.ec[:image] \ +            and not @md.ec[:image].empty? +              local_css=@f.output_path.css.rel +              images_system='_sisu/image_sys' +              if @f.output_path.images.rel.length > 0 +                images_skin=@f.place_file.images.rel + '/' + images_from_skin.join(" #{@f.output_path.images.rel}/") +              end +            end +            begin +              ##create file structure without copying files?: +              ##rsync -av -f"+ */" -f"- *" @f.output_path.base.dir remote:./path/. +              #local_dirs=%{-f"+ */" -f"- *" #{@f.output_path.base.dir}/*} +              #System_call.new(local_dirs,remote_gen,@opt.cmd).rsync +              local=local_gen + ' ' + images + ' ' + images_skin + ' ' + images_system + ' ' + local_css +              System_call.new(local,remote_rel,@opt.cmd).rsync('--relative',@f.output_path.base.dir) +            rescue +              p __LINE__.to_s + ':' + __FILE__ +              local_dirs=%{--include='*/' --exclude='*' #{@f.output_path.base.dir}} +              System_call.new(local_dirs,remote_gen,@opt.cmd).rsync +            end +          elsif @opt.cmd =~/U/ +            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +            puts "#{local_gen} -> #{remote_gen}" +            if FileTest.file?("#{local_src}/#{src_doc}") \ +            or FileTest.file?("#{local_src}/#{src_doc}.zip") +              puts "#{local_src}/#{src_doc}* -> #{remote_src}" +            end +          else +            puts 'suspect rsync request, ignored' +            puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}" +            puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/            end -        elsif @opt.cmd =~/U/ -          puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -          puts "#{local_gen} -> #{remote_gen}" -          if FileTest.file?("#{local_src}/#{src_doc}") \ -          or FileTest.file?("#{local_src}/#{src_doc}.zip") -            puts "#{local_src}/#{src_doc}* -> #{remote_src}" -          end -        else -          puts 'suspect rsync request, ignored' -          puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}" -          puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/          end        end -    end -    def scp_base                                                               #base site -      self.remote_host_base.each do |remote_conn| -        local=@source_path -        remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." -        if defined? @rc['permission_set']['remote_base_site'] \ -        and @rc['permission_set']['remote_base_site'] \ -        and @@flag_remote==true \ -        and @opt.cmd !~/U/ -          puts "begin scp_base: #{local} -> #{remote}" -          System_call.new("#{local}/#{@env.path.style}/",remote).scp -        elsif @opt.cmd =~/U/ -          puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -          puts "begin scp_base: #{local} -> #{remote}" -          puts "#{local}/#{@env.path.style}/ -> #{remote}" -        else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -        end -      end -    end -    def scp_base_all                                                           #base site -      self.remote_host_base.each do |remote_conn| -        local=@source_path -        remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." -        if defined? @rc['permission_set']['remote_base_site'] \ -        and @rc['permission_set']['remote_base_site'] \ -        and @@flag_remote==true \ -        and @opt.cmd !~/U/ -          puts "begin scp_base_all: #{local} -> #{remote}" -          System_call.new("#{local}/_sisu/image_sys/",remote).scp -          System_call.new("#{local}/_sisu/image/",remote).scp -          System_call.new("#{local}/#{@env.path.style}/",remote).scp -        elsif @opt.cmd =~/U/ -          puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -          puts "scp_base_all: #{local} -> #{remote}" -          puts "#{local}/_sisu/image_sys/ -> #{remote}" -          puts "#{local}/_sisu/image/ -> #{remote}" -          puts "#{local}/#{@env.path.style}/ -> #{remote}" -        else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -        end -      end -    end -    def rsync_base                                                             #base site -      ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu" -      image_sys="#{@env.path.webserv}/_sisu/image_sys" -      images="#{@env.path.webserv}/_sisu/image" -      self.remote_host_base.each do |remote_conn| -        remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." -        remote_conf="#{remote_conn[:name]}/_sisu" -        if defined? @rc['permission_set']['remote_base_site'] \ -        and @rc['permission_set']['remote_base_site'] \ -        and @@flag_remote==true \ -        and @opt.cmd !~/U/ -          System_call.new("#{image_sys}","#{remote_conf}").rsync -          System_call.new("#{images}","#{remote_conf}").rsync -          System_call.new("#{ldest}","#{remote}").rsync -        elsif @opt.cmd =~/U/ -          puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -          puts "rsync_base: #{local} -> #{remote}" -          puts "#{local}/_sisu/image -> #{remote}" -          puts "#{local}/_sisu/image_sys/ -> #{remote}" -          puts "#{local}/#{@env.path.style}/ -> #{remote}" -        else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +      def site_base                                                             #base site +        ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu" +        image_sys="#{@env.path.webserv}/_sisu/image_sys" +        images="#{@env.path.webserv}/_sisu/image" +        self.remote_host_base.each do |remote_conn| +          remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." +          remote_conf="#{remote_conn[:name]}/_sisu" +          if defined? @rc['permission_set']['remote_base_site'] \ +          and @rc['permission_set']['remote_base_site'] \ +          and @@flag_remote==true \ +          and @opt.cmd !~/U/ +            System_call.new("#{image_sys}","#{remote_conf}").rsync +            System_call.new("#{images}","#{remote_conf}").rsync +            System_call.new("#{ldest}","#{remote}").rsync +          elsif @opt.cmd =~/U/ +            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +            puts "rsync_base: #{local} -> #{remote}" +            puts "#{local}/_sisu/image -> #{remote}" +            puts "#{local}/_sisu/image_sys/ -> #{remote}" +            puts "#{local}/#{@env.path.style}/ -> #{remote}" +          else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +          end          end        end -    end -    def rsync_base_sync                                                        #base site -      self.remote_host_base.each do |remote_conn| -        local=@source_path -        remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." -        if defined? @rc['permission_set']['remote_base_site'] \ -        and @rc['permission_set']['remote_base_site'] \ -        and @@flag_remote==true \ -        and @opt.cmd !~/U/ -          delete_extra_files='--delete' # '--delete-after' -          puts "begin rsync_base_sync: #{local} -> #{remote}" -          System_call.new("#{local}/_sisu/image_sys/",remote).rsync(delete_extra_files) -          System_call.new("#{local}/_sisu/image/",remote).rsync(delete_extra_files) -          System_call.new("#{local}/#{@env.path.style}/",remote).rsync(delete_extra_files) -        elsif @opt.cmd =~/U/ -          puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ -          puts "rsync_base_sync: #{local} -> #{remote}" -          puts "#{local}/_sisu/image_sys/ -> #{remote}" -          puts "#{local}/_sisu/image/ -> #{remote}" -          puts "#{local}/#{@env.path.style}/ -> #{remote}" -        else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +      def site_base_sync +        self.remote_host_base.each do |remote_conn| +          local=@source_path +          remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." +          if defined? @rc['permission_set']['remote_base_site'] \ +          and @rc['permission_set']['remote_base_site'] \ +          and @@flag_remote==true \ +          and @opt.cmd !~/U/ +            delete_extra_files='--delete' # '--delete-after' +            puts "begin rsync_base_sync: #{local} -> #{remote}" +            System_call.new("#{local}/_sisu/image_sys/",remote).rsync(delete_extra_files) +            System_call.new("#{local}/_sisu/image/",remote).rsync(delete_extra_files) +            System_call.new("#{local}/#{@env.path.style}/",remote).rsync(delete_extra_files) +          elsif @opt.cmd =~/U/ +            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +            puts "rsync_base_sync: #{local} -> #{remote}" +            puts "#{local}/_sisu/image_sys/ -> #{remote}" +            puts "#{local}/_sisu/image/ -> #{remote}" +            puts "#{local}/#{@env.path.style}/ -> #{remote}" +          else  puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ +          end          end        end +      self      end      def rsync_sitemaps                                                         #sitemap directory        self.remote_host_base.each do |remote_conn| @@ -3022,81 +3133,6 @@ WOK        end        self      end -    def path_rel_links -      def html_scroll_2 -        if @env.output_dir_structure.by_language_code? -          '../../' -        elsif @env.output_dir_structure.by_filetype? -          '../' -        else -          '../' -        end -      end -      def html_seg_2 -        if @env.output_dir_structure.by_language_code? -          '../../../' -        elsif @env.output_dir_structure.by_filetype? -          '../../' -        else -          '../../' -        end -      end -      def html_scroll_1 -        if @env.output_dir_structure.by_language_code? -          '../' -        elsif @env.output_dir_structure.by_filetype? -          '../' -        else -          '/' -        end -      end -      def html_seg_1 -        if @env.output_dir_structure.by_language_code? -          '../../' -        elsif @env.output_dir_structure.by_filetype? -          '../../' -        else -          '/' -        end -      end -      def default_output_css -        if @env.output_dir_structure.by_language_code? -          '../../' -        elsif @env.output_dir_structure.by_filetype? -          '../' -        else -          '../' -        end -      end -      def html_scroll_css -        default_output_css -      end -      def xhtml_css -        default_output_css -      end -      def xml_css -        default_output_css -      end -      def html_seg_css -        if @env.output_dir_structure.by_language_code? -          '../../../' -        elsif @env.output_dir_structure.by_filetype? -          '../../' -        else -          '../' -        end -      end -      def manifest_css -        if @env.output_dir_structure.by_language_code? -          '../../_sisu/css' -        elsif @env.output_dir_structure.by_filetype? -          '' -        else -          '../' -        end -      end -      self -    end      def mkdir #check moved from SiSU_file, existing mkdir        def processing          def dal @@ -3426,110 +3462,117 @@ WOK      end      def base_filename        def txt +        ft='.txt'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.txt' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + @md.fn[:plain] +          @md.fnb + @md.lang_code_insert + ft          else -          'plain' + @md.fn[:plain] +          'plain' + @md.lang_code_insert + ft          end        end        def html_scroll -        #"#{@md.fnl[:pre]}scroll#{@md.fnl[:mid]}.html#{@md.fnl[:post]}" +        ft='.html'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.html' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + @md.fn[:html] +          @md.fnb + @md.lang_code_insert + ft          else -          'scroll' + @md.fn[:html] +          'scroll' + @md.lang_code_insert + ft          end        end        def html_seg_index -        #"#{@md.fnl[:pre]}index#{@md.fnl[:mid]}.html#{@md.fnl[:post]}" +        ft='.html'          if @env.output_dir_structure.by_language_code? -          'toc.html' +          'toc' + ft          else -          'index' + @md.fn[:html] +          'index' + @md.lang_code_insert + ft          end        end        def html_segtoc -        #"#{@md.fnl[:pre]}toc#{@md.fnl[:mid]}.html#{@md.fnl[:post]}" +        ft='.html'          if @env.output_dir_structure.by_language_code? -          'toc.html' +          'toc' + ft          else -          'toc' + @md.fn[:html] +          'toc' + @md.lang_code_insert + ft          end        end        def html_book_index +        ft='.html'          if @env.output_dir_structure.by_language_code? -          'book_index.html' +          'book_index' + ft          else -          'book_index.' + @md.fn[:html] +          'book_index' + @md.lang_code_insert + ft          end        end        def html_concordance +        ft='.html'          if @env.output_dir_structure.by_language_code? -          'concordance.html' +          'concordance' + ft          else -          'concordance' + @md.fn[:html] +          'concordance' + @md.lang_code_insert + ft          end        end        def xhtml +        ft= '.xhtml'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.xhtml' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + '.' + @md.fn[:xhtml] +          @md.fnb + @md.lang_code_insert + ft          else -          'scroll.' + @md.fn[:xhtml] +          'scroll' + @md.lang_code_insert + ft          end        end        def epub +        ft='.epub'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.epub' +          @md.fnb + ft          else -          @md.fnb + @md.fn[:epub] +          @md.fnb + @md.lang_code_insert + ft          end        end        def odt -        #"#{@md.fnl[:pre]}#{@md.fnb}#{@md.fnl[:mid]}.odt#{@md.fnl[:post]}" +        ft='.odt'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.odt' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + @md.fn[:odf] +          @md.fnb + @md.lang_code_insert + ft          else -          'opendocument' + @md.fn[:odf] +          'opendocument' + @md.lang_code_insert + ft          end        end        def xml_sax +        ft='.sax.xml'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.sax.xml' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + '.' + @md.fn[:sax] +          @md.fnb + @md.lang_code_insert + ft          else -          'scroll.' + @md.fn[:sax] +          'scroll' + @md.lang_code_insert + ft          end        end        def xml_dom +        ft='.dom.xml'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.dom.xml' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + '.' + @md.fn[:dom] +          @md.fnb + @md.lang_code_insert + ft          else -          'scroll.' + @md.fn[:dom] +          'scroll' + @md.lang_code_insert + ft          end        end        def pdf_p          if @env.output_dir_structure.by_language_code? \          or @env.output_dir_structure.by_filetype?            @md.fnb + '.portrait.' -        else 'portrait.' +        else 'portrait' + @md.lang_code_insert + '.'          end        end        def pdf_l          if @env.output_dir_structure.by_language_code? \          or @env.output_dir_structure.by_filetype?            @md.fnb + '.landscape.' -        else 'landscape.' +        else 'landscape' + @md.lang_code_insert + '.'          end        end        def pdf_p_a4 @@ -3563,43 +3606,47 @@ WOK          pdf_l + @md.fn[:pdf_l_legal]        end        def manpage +        ft='.1'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.1' +          @md.fnb + ft          else -          @md.fnb + '.' + @md.fn[:manpage] +          @md.fnb + @md.lang_code_insert + ft          end        end        def hash_digest +        ft='.txt'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.hash_digest.txt' +          @md.fnb + '.hash_digest' + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + '.' + @md.fn[:digest] +          @md.fnb + @md.lang_code_insert + ft          else -          'digest.' + @md.fn[:digest] +          'digest' + @md.lang_code_insert + ft          end        end        def sitemap +        ft='.xml'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.sitemap.xml' +          @md.fnb + '.sitemap' + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + '.' + @md.fn[:sitemap] +          @md.fnb + @md.lang_code_insert + ft          else -          'sitemap.' + @md.fn[:sitemap] +          'sitemap' + @md.lang_code_insert + ft          end        end        def manifest +        ft='.html'          if @env.output_dir_structure.by_language_code? -          @md.fnb + '.manifest.html' +          @md.fnb + ft          elsif @env.output_dir_structure.by_filetype? -          @md.fnb + '.' + @md.fn[:manifest] -        else -          'sisu_' + @md.fn[:manifest] +          @md.fnb + @md.lang_code_insert + ft +        else #fix +          'sisu_manifest' + @md.lang_code_insert + ft          end        end        def src          @md.fns        end -      def po +      def po #check          (@fno.empty?) \          ? (@md.fn[:po]) \          : (@fno + '.po') @@ -3699,18 +3746,28 @@ WOK        def rcp          def abc            if @env.output_dir_structure.by_language_code? -            "#{output_path.stub.rcp}/#{@md.opt.lng}/#{ft}" +            "#{output_path.stub.rcp}/#{@md.opt.lng}/#{@ft}"            elsif @env.output_dir_structure.by_filetype? -            "#{output_path.stub.rcp}/#{ft}" +            "#{output_path.stub.rcp}/#{@ft}"            else              "#{output_path.stub.rcp}/#{@md.fnb}"            end          end          def ab            if @env.output_dir_structure.by_language_code? -            "#{output_path.stub.rcp}/#{@md.opt.lng}/#{ft}" +            "#{output_path.stub.rcp}/#{@md.opt.lng}/#{@ft}"            else -            "#{output_path.stub.rcp}/#{ft}" +            "#{output_path.stub.rcp}/#{@ft}" +          end +        end +        self +      end +      def rel_sm +        def ab +          if @env.output_dir_structure.by_language_code? \ +          or @env.output_dir_structure.by_filetype? +            '../' + @ft +          else '.'            end          end          self @@ -3718,6 +3775,21 @@ WOK        self      end      def output_path +      def web_base +        def dir +          @env.path.webserv +        end +        def url +          #"#{@env.url.root}" +        end +        def rel +          '.' +        end +        def rcp +          '.' +        end +        self +      end        def stub          def dir            "#{@md.opt.f_pth[:pth_stub]}" @@ -3762,6 +3834,9 @@ WOK          def rcp            "#{output_path.base.rcp}/pod"          end +        def rel_sm +          #"#{output_path.base.rel}/pod" +        end          self        end        def sisugit @@ -3799,6 +3874,18 @@ WOK          def rcp            set_path(ft).rcp.ab_src          end +        def rel_sm +          if @env.output_dir_structure.by_language_code? +            '' +            #"#{output_path.base.dir}/#{@md.opt.lng}/#{@ft}" +          elsif @env.output_dir_structure.by_filetype? +            '' +            #"#{output_path.base.dir}/#{@ft}" +          else +            '' +            #"#{output_path.base.dir}/#{@md.fnb}" +          end +        end          self        end        def po @@ -3818,7 +3905,7 @@ WOK            "#{output_path.base.url}/po4a/#{@md.fnb}/pot"          end          def rcp -          p "#{output_path.base.dir}/po4a/#{@md.fnb}/pot" +          #p "#{output_path.base.dir}/po4a/#{@md.fnb}/pot"          end          self        end @@ -3862,6 +3949,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def html_scroll @@ -3880,6 +3970,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def html_seg @@ -3898,6 +3991,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def html_concordance @@ -3920,6 +4016,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def xhtml @@ -3938,6 +4037,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def epub @@ -3956,6 +4058,9 @@ WOK          def rcp            set_path(ft).rcp.ab          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def odt @@ -3974,6 +4079,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def xml @@ -3992,6 +4100,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def xml_sax @@ -4018,6 +4129,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def hash_digest @@ -4036,6 +4150,9 @@ WOK          def rcp            set_path(ft).rcp.abc          end +        def rel_sm +          set_path(ft).rel_sm.ab +        end          self        end        def manifest @@ -4072,6 +4189,15 @@ WOK          def rcp            set_path(ft).rcp.ab          end +        def rel_sm +          if @env.output_dir_structure.by_language_code? +            '' +          elsif @env.output_dir_structure.by_filetype? +            '' +          else +            '' +          end +        end          self        end        def manpage @@ -4090,6 +4216,15 @@ WOK          def rcp            set_path(ft).rcp.ab          end +        def rel_sm +          if @env.output_dir_structure.by_language_code? +            '' +          elsif @env.output_dir_structure.by_filetype? +            '' +          else +            '' +          end +        end          self        end        def sitemaps @@ -4125,6 +4260,61 @@ WOK          end          self        end +      #def cgi +      #end +      def css +        @d='_sisu/css' +        def dir +          output_path.base.dir + '/' + @d +        end +        def url +          output_path.base.url + '/' + @d +        end +        def rel +          @d +          #output_path.base.rel + '/' + @d +        end +        def rcp +          output_path.stub.rcp + '/' + @d +        end +        self +      end +      def images +        @d='_sisu/image' +        def dir +          output_path.base.dir + '/' + @d +        end +        def url +          output_path.base.url + '/' + @d +        end +        def rel +          @d +          #output_path.base.rel + '/' + @d +        end +        def rcp +          output_path.stub.rcp + '/' + @d +        end +        self +      end +      def images_external +        @d='_sisu/image_external' +        def dir +          output_path.base.dir + '/' + @d +        end +        def url +          output_path.base.url + '/' + @d +        end +        def rel +          output_path.base.rel + '/' + @d +        end +        def rcp +          output_path.base.rcp + '/' + @d +        end +        self +      end +      #def css +      #  #"#{@env.path.output}/#{@env.path.style}" +      #end        self      end    end diff --git a/lib/sisu/v3/texpdf.rb b/lib/sisu/v3/texpdf.rb index ebd68d6d..eff07f19 100644 --- a/lib/sisu/v3/texpdf.rb +++ b/lib/sisu/v3/texpdf.rb @@ -149,6 +149,7 @@ module SiSU_TeX        @@n_lpdf||=0 #change        def initialize(md,env)          @md,@env=md,env +        @f=SiSU_Env::SiSU_file.new(@md).base_filename        end        def latex_do(texfilename,papersize)          @texfilename=texfilename @@ -175,12 +176,12 @@ module SiSU_TeX          portrait_pdf="#{pwd}/#{tex_fn_base}.pdf"          landscape_pdf="#{pwd}/#{tex_fn_base}.landscape.pdf"          case papersize -        when /a4/;     pdf_p=@md.file.base_filename.pdf_p_a4;     pdf_l=@md.file.base_filename.pdf_l_a4 -        when /a5/;     pdf_p=@md.file.base_filename.pdf_p_a5;     pdf_l=@md.file.base_filename.pdf_l_a5 -        when /b5/;     pdf_p=@md.file.base_filename.pdf_p_b5;     pdf_l=@md.file.base_filename.pdf_l_b5 -        when /letter/; pdf_p=@md.file.base_filename.pdf_p_letter; pdf_l=@md.file.base_filename.pdf_l_letter -        when /legal/;  pdf_p=@md.file.base_filename.pdf_p_legal;  pdf_l=@md.file.base_filename.pdf_l_legal -        else           pdf_p=@md.file.base_filename.pdf_p_a4;     pdf_l=@md.file.base_filename.pdf_l_a4 +        when /a4/;     pdf_p=@f.pdf_p_a4;     pdf_l=@f.pdf_l_a4 +        when /a5/;     pdf_p=@f.pdf_p_a5;     pdf_l=@f.pdf_l_a5 +        when /b5/;     pdf_p=@f.pdf_p_b5;     pdf_l=@f.pdf_l_b5 +        when /letter/; pdf_p=@f.pdf_p_letter; pdf_l=@f.pdf_l_letter +        when /legal/;  pdf_p=@f.pdf_p_legal;  pdf_l=@f.pdf_l_legal +        else           pdf_p=@f.pdf_p_a4;     pdf_l=@f.pdf_l_a4          end          Dir.mkdir(@md.file.output_path.pdf.dir) unless FileTest.directory?(@md.file.output_path.pdf.dir)          if FileTest.file?(portrait_pdf) @@ -223,12 +224,12 @@ module SiSU_TeX                end              end              case @md.papersize_array[0] #default pdf -            when /a4/;     pdf_p=@md.file.base_filename.pdf_p_a4;     pdf_l=@md.file.base_filename.pdf_l_a4 -            when /a5/;     pdf_p=@md.file.base_filename.pdf_p_a5;     pdf_l=@md.file.base_filename.pdf_l_a5 -            when /b5/;     pdf_p=@md.file.base_filename.pdf_p_b5;     pdf_l=@md.file.base_filename.pdf_l_b5 -            when /letter/; pdf_p=@md.file.base_filename.pdf_p_letter; pdf_l=@md.file.base_filename.pdf_l_letter -            when /legal/;  pdf_p=@md.file.base_filename.pdf_p_legal;  pdf_l=@md.file.base_filename.pdf_l_legal -            else           pdf_p=@md.file.base_filename.pdf_p_a4;     pdf_l=@md.file.base_filename.pdf_l_a4 +            when /a4/;     pdf_p=@f.pdf_p_a4;     pdf_l=@f.pdf_l_a4 +            when /a5/;     pdf_p=@f.pdf_p_a5;     pdf_l=@f.pdf_l_a5 +            when /b5/;     pdf_p=@f.pdf_p_b5;     pdf_l=@f.pdf_l_b5 +            when /letter/; pdf_p=@f.pdf_p_letter; pdf_l=@f.pdf_l_letter +            when /legal/;  pdf_p=@f.pdf_p_legal;  pdf_l=@f.pdf_l_legal +            else           pdf_p=@f.pdf_p_a4;     pdf_l=@f.pdf_l_a4              end              if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{pdf_p}")                mklnk=if @md.file.output_dir_structure.by_language_code? \ diff --git a/lib/sisu/v3/xml_format.rb b/lib/sisu/v3/xml_format.rb index a3539f60..58b3f880 100644 --- a/lib/sisu/v3/xml_format.rb +++ b/lib/sisu/v3/xml_format.rb @@ -537,7 +537,7 @@ WOK        if type=~/pdf/          @tocband_segtoc=make_scroll_seg_pdf        end -      firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" alt="->"> +      firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" alt="->">        #{@vz.png_nav_nxt}      </a>} if @md.firstseg =~/\S+/        %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> @@ -556,7 +556,7 @@ WOK        if type=~/pdf/          @tocband_segtoc=make_scroll_seg_pdf        end -      firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" alt="->"> +      firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" alt="->">        #{@vz.png_nav_nxt}      </a>} if @md.firstseg =~/\S+/        %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> @@ -891,17 +891,17 @@ WOK      def dot_control_pre_next        %{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">  <tr><td align="left"> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +  <a href="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_prev}>      #{@vz.png_nav_dot_pre}    </a>  </td>  <td align="center"> -  <a href="#{@md.fnl[:pre]}#{@index}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +  <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_toc}>      #{@vz.png_nav_dot_toc}    </a>  </td>  <td align="right"> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> +  <a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_next}>      #{@vz.png_nav_dot_nxt}    </a>  #{@vz.table_close}} @@ -909,12 +909,12 @@ WOK      def dot_control_pre        %{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">  <tr><td align="left"> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +  <a href="#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_prev}>      #{@vz.png_nav_dot_pre}    </a>  </td>  <td align="center"> -  <a href="#{@md.fnl[:pre]}#{@index}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +  <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_toc}>      #{@vz.png_nav_dot_toc}    </a>  </td> @@ -927,17 +927,17 @@ WOK      def toc_nav(f_pre=false,f_nxt=false,use=1)        pre=nxt=''        toc=%{<td align="center" bgcolor=#{@vz.color_band1}> -  <a href="#{@md.fnl[:pre]}#{@index}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> +  <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_toc}>      #{@vz.png_nav_toc}    </a>  </td>}        pre=%{<td align="center" bgcolor=#{@vz.color_band1}> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> +  <a href="#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_prev}>      #{@vz.png_nav_pre}    </a>  </td>} if f_pre==true        nxt=%{<td align="center" bgcolor=#{@vz.color_band1}> -  <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:xhtml]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> +  <a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_next}>      #{@vz.png_nav_nxt}    </a>  </td>} if f_nxt==true @@ -1479,7 +1479,7 @@ WOK        fn='doc' if fn.empty? #you may wish to reconsider, sends to 'doc' where no segment info # Sfx[:html] or Sfx[:xhtml] ?        %{    <p class="endnote"> -    #{@endnote_part_a}#{@md.fnl[:pre]}#{fn}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}#{@endnote_part_b} +    #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b}    </p>  }      end | 
