diff options
| author | Ralph Amissah <ralph@amissah.com> | 2014-02-05 00:56:10 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2014-02-05 00:56:10 -0500 | 
| commit | a151893efedaebc26d26a8f8611fb688a6de6d4f (patch) | |
| tree | e5fbb47d3ce53c363af21f2242aa647d18b12f79 /lib | |
| parent | v5 v6: options, ocn switch on/off instructions (& defaults for plaintext & odt) (diff) | |
v5 v6: ocn: strict html; turn on/off rules for txt & odf
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sisu/v5/concordance.rb | 9 | ||||
| -rw-r--r-- | lib/sisu/v5/constants.rb | 1 | ||||
| -rw-r--r-- | lib/sisu/v5/html.rb | 9 | ||||
| -rw-r--r-- | lib/sisu/v5/html_format.rb | 25 | ||||
| -rw-r--r-- | lib/sisu/v5/html_lite_shared.rb | 7 | ||||
| -rw-r--r-- | lib/sisu/v5/html_minitoc.rb | 5 | ||||
| -rw-r--r-- | lib/sisu/v5/txt_plain.rb | 3 | ||||
| -rw-r--r-- | lib/sisu/v5/xml_odf_odt.rb | 7 | ||||
| -rw-r--r-- | lib/sisu/v5/xml_odf_odt_format.rb | 19 | ||||
| -rw-r--r-- | lib/sisu/v6/concordance.rb | 9 | ||||
| -rw-r--r-- | lib/sisu/v6/constants.rb | 1 | ||||
| -rw-r--r-- | lib/sisu/v6/html.rb | 9 | ||||
| -rw-r--r-- | lib/sisu/v6/html_format.rb | 25 | ||||
| -rw-r--r-- | lib/sisu/v6/html_lite_shared.rb | 7 | ||||
| -rw-r--r-- | lib/sisu/v6/html_minitoc.rb | 5 | ||||
| -rw-r--r-- | lib/sisu/v6/txt_plain.rb | 3 | ||||
| -rw-r--r-- | lib/sisu/v6/xml_odf_odt.rb | 7 | ||||
| -rw-r--r-- | lib/sisu/v6/xml_odf_odt_format.rb | 19 | 
18 files changed, 108 insertions, 62 deletions
| diff --git a/lib/sisu/v5/concordance.rb b/lib/sisu/v5/concordance.rb index 55892ab7..b9030123 100644 --- a/lib/sisu/v5/concordance.rb +++ b/lib/sisu/v5/concordance.rb @@ -240,12 +240,13 @@ WOK          end        end      protected -      def location_scroll(wordlocation,show) -        %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{wordlocation}">#{wordlocation}</a>;  } +      def location_scroll(wordlocation,show)                    # not used +        %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{Mx[:ocn_id_char]}#{wordlocation}">#{wordlocation}</a>;  }        end -      def location_seg(wordlocation,show) ##fix +      def location_seg(wordlocation,show)          unless wordlocation.nil? -          wl=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:html]}#\\2") +          wl=wordlocation.gsub(/(.+?)\#(\d+)/, +            "\\1#{@md.lang_code_insert}#{Sfx[:html]}##{Mx[:ocn_id_char]}\\2")     # id="o\d+" always available; a name="\d+" not available if html strict used            case wordlocation            when /#{@rxp_t1}|@rxp_t2}|#{@rxp_t3}/              %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show},  } diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb index e84c0901..fea57ce8 100644 --- a/lib/sisu/v5/constants.rb +++ b/lib/sisu/v5/constants.rb @@ -101,6 +101,7 @@ Xx={    html_relative1:            '※',  }  Mx={ +  ocn_id_char:               'o',    meta_o:                    '〔@',   meta_c: '〕',    lv_o_0:                    0,    lv_o_1:                    1, diff --git a/lib/sisu/v5/html.rb b/lib/sisu/v5/html.rb index 1b738561..ef62b9bd 100644 --- a/lib/sisu/v5/html.rb +++ b/lib/sisu/v5/html.rb @@ -245,6 +245,7 @@ module SiSU_HTML        def initialize(md=nil,data='')          @data,@md=data,md          @vz=SiSU_Viz::Defaults.new +        @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier          @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md        end        def songsheet #extracts toc for scroll & seg @@ -356,7 +357,7 @@ WOK          title=if dob.ocn ==0 then linkname          else            @@toc[:scr] <<  '<br />' -          %{<b><a href="##{dob.ocn}">#{linkname}</a></b>} +          %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}          end          txt_obj={ txt: title }          format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @@ -398,7 +399,7 @@ WOK            end          else            @@toc[:scr] <<  '<br />' -          %{<b><a href="##{dob.ocn}">#{linkname}</a></b>} +          %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}          end          txt_obj={ txt: title }          format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @@ -515,7 +516,7 @@ WOK            }            f=@md.file.base_filename.html_seg(fnh)            p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{f}##{ocn}"> +          lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{ocn}">      #{linkname}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -540,7 +541,7 @@ WOK            }            f=@md.file.base_filename.html_seg(fnh)            p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{f}##{ocn}"> +          lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{ocn}">    #{linkname}  </a>}            txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/v5/html_format.rb b/lib/sisu/v5/html_format.rb index 0dc65a06..e0be4f8a 100644 --- a/lib/sisu/v5/html_format.rb +++ b/lib/sisu/v5/html_format.rb @@ -66,30 +66,36 @@ module SiSU_HTML_Format      def initialize(md,ocn)        @md,@ocn=md,ocn.to_s        @ocn ||='' +      @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier +      @make=SiSU_Env::ProcessingSettings.new(@md)      end      def ocn_display -      make=SiSU_Env::ProcessingSettings.new(@md) -      if make.build.ocn? -        ocn_class='ocn' +      if @make.build.ocn?          if @ocn.to_i==0 \          or @ocn.empty? -          %{<label class="ocn_off"> </label>} +          ''          else +          name=(@make.build.html_strict?) ? '' :  %{ name="#{@ocn}"}            @ocn.gsub(/^(\d+|)$/, -            %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>}) +            %{<label class="ocn"><a#{name} href="##{@ocn_html_identifier}#{@ocn}" class="lnkocn">\\1</a></label>})          end        else -        %{<label class="ocn_off"> </label>} +        ''        end      end      def name -      (@ocn==nil || @ocn.empty?) ? '' : %{<a name="#{@ocn}"></a>} +      if @make.build.html_strict? \ +      or @ocn==(nil || @ocn.empty?) +        '' +      else +        %{<a name="#{@ocn}"></a>} +      end      end      def id #w3c? "tidy" complains about numbers as identifiers ! annoying        (@ocn==nil || @ocn.empty?) ? '' : %{id="o#{@ocn}"}      end      def goto -      (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn}">} +      (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn_html_identifier}#{@ocn}">}      end    end    class HeadInformation @@ -1233,6 +1239,7 @@ WOK      end      def subtoc_lev(tag,attrib)        @txt=clean(@txt) +      @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier        txt=if @txt \        and @txt =~/<\/?i>|<a\s+name="\S+?">/mi          @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text @@ -1246,7 +1253,7 @@ WOK            gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+"> <sup>\d+<\/sup> /m,'')        end        %{<#{tag} class="#{attrib}"> -    <a href="##{@ocn}"><i>#{txt}</i></a> #{note} +    <a href="##{@ocn_html_identifier}#{@ocn}"><i>#{txt}</i></a> #{note}    </#{tag}>}      end      def subtoc_lev5 diff --git a/lib/sisu/v5/html_lite_shared.rb b/lib/sisu/v5/html_lite_shared.rb index 8c447352..e109debc 100644 --- a/lib/sisu/v5/html_lite_shared.rb +++ b/lib/sisu/v5/html_lite_shared.rb @@ -83,6 +83,7 @@ module SiSU_FormatShared        end        @tab="\t"        @brace_url=SiSU_Viz::Defaults.new.url_decoration +      @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier        @@tablehead,@@tablefoot=[],[]        @vz=SiSU_Viz::Defaults.new        @env=SiSU_Env::InfoEnv.new(@md.fns) @@ -205,7 +206,7 @@ GSUB        %{<p class="#{h[:class]}" type="#{h[:type]}">#{h[:txt]}</a></p>\n}  << "\n"      end      def lev_toc_hname -      %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">#{@txt}</a></p>\n}  #<< "\n" +      %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn_html_identifier}#{@ocn}">#{@txt}</a></p>\n}  #<< "\n"      end      def lev_toc        h={ txt: txt, class: "toc#{@lv}", type: 'toc' } @@ -309,10 +310,10 @@ GSUB      def paragraph        attrib=%{class="#{@attrib}" }        if @ocn -        id=%{id="#{@ocn}" } +        id=%{id="#{Mx[:ocn_id_char]}#{@ocn}" }          type=%{type="substantive" }        else -        id=%{id="none" } +        id=''          type=%{type="comment" }        end        header=%{header="#{@hname}" } if @hname diff --git a/lib/sisu/v5/html_minitoc.rb b/lib/sisu/v5/html_minitoc.rb index dae74c46..5366b127 100644 --- a/lib/sisu/v5/html_minitoc.rb +++ b/lib/sisu/v5/html_minitoc.rb @@ -71,6 +71,7 @@        def initialize(md,data)          @md,@data=md,data          @pat_strip_heading_name=/<a name="h?\d.*?">(.+?)<\/a>/ +        @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier          @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md        end        def songsheet @@ -204,7 +205,7 @@            fn: @@seg_url,          }          f=@md.file.base_filename.html_seg(fnh) -        lnk_n_txt=%{  <a href="#{f}##{txt.ocn}"> +        lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">      #{txt.obj}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -223,7 +224,7 @@            fn: @@seg_url,          }          f=@md.file.base_filename.html_seg(fnh) -        lnk_n_txt=%{  <a href="#{f}##{txt.ocn}"> +        lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">      #{txt.obj}    </a>}            txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/v5/txt_plain.rb b/lib/sisu/v5/txt_plain.rb index ca944a1f..e27e9231 100644 --- a/lib/sisu/v5/txt_plain.rb +++ b/lib/sisu/v5/txt_plain.rb @@ -400,7 +400,8 @@ WOK          @@endnotes[:para]=[]        end        def ocn_display(dob) -        if @env.plaintext_ocn? +        make=SiSU_Env::ProcessingSettings.new(@md) +        if make.build.plaintext_ocn?            if defined? dob.ocn \            and dob.ocn.is_a?(Fixnum)              (defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : '' diff --git a/lib/sisu/v5/xml_odf_odt.rb b/lib/sisu/v5/xml_odf_odt.rb index 8c3d4a98..d2ab0477 100644 --- a/lib/sisu/v5/xml_odf_odt.rb +++ b/lib/sisu/v5/xml_odf_odt.rb @@ -121,6 +121,7 @@ module SiSU_XML_ODF_ODT        @@fns=nil        def initialize(particulars)          @md,@env,@ao_array=particulars.md,particulars.env,particulars.ao_array +        @make=SiSU_Env::ProcessingSettings.new(@md)          @vz=SiSU_Viz::Defaults.new          @tab="\t"          @brace_url=SiSU_Viz::Defaults.new.url_decoration @@ -556,10 +557,10 @@ module SiSU_XML_ODF_ODT          end          p_num={ display: '', set_ref: '' }          if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ -          if @env.odt_ocn? +          if @make.build.odt_ocn?              if defined? dob.ocn \              and dob.ocn.is_a?(Fixnum) -              p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn).set_bookmark_and_display +              p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn).set_bookmark_and_display              end            end          end @@ -682,7 +683,7 @@ module SiSU_XML_ODF_ODT            and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]            if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check              if defined? dob.ocn and dob.ocn =~/\d+/ -              @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn) +              @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn)              end              if dob.is ==:heading \              || dob.is ==:para \ diff --git a/lib/sisu/v5/xml_odf_odt_format.rb b/lib/sisu/v5/xml_odf_odt_format.rb index 2a092011..b56e4284 100644 --- a/lib/sisu/v5/xml_odf_odt_format.rb +++ b/lib/sisu/v5/xml_odf_odt_format.rb @@ -65,17 +65,26 @@ module SiSU_XML_ODF_ODT_Format      include SiSU_Param    include SiSU_Viz    class ParagraphNumber -    def initialize(paranum) +    def initialize(make,paranum) +      @make=make        @paranum=/(\d+)/m.match(paranum.to_s)[1]      end      def set_ref_and_display -      set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>') -      disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}) +      set_ref=@paranum.gsub(/(\d+)/, +        ' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>') +      disp=@paranum.gsub(/(\d+)/, +        (@make.build.odt_ocn?) \ +        ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>} +        : '')        { display: disp, set_ref: set_ref }      end      def set_bookmark_and_display -      set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>') -      disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}) +      set_ref=@paranum.gsub(/(\d+)/, +        ' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>') +      disp=@paranum.gsub(/(\d+)/, +        (@make.build.odt_ocn?) \ +        ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>} +        : '')        { display: disp, set_ref: set_ref }      end      def name diff --git a/lib/sisu/v6/concordance.rb b/lib/sisu/v6/concordance.rb index a20178ab..5422056f 100644 --- a/lib/sisu/v6/concordance.rb +++ b/lib/sisu/v6/concordance.rb @@ -240,12 +240,13 @@ WOK          end        end      protected -      def location_scroll(wordlocation,show) -        %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{wordlocation}">#{wordlocation}</a>;  } +      def location_scroll(wordlocation,show)                    # not used +        %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{Mx[:ocn_id_char]}#{wordlocation}">#{wordlocation}</a>;  }        end -      def location_seg(wordlocation,show) ##fix +      def location_seg(wordlocation,show)          unless wordlocation.nil? -          wl=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:html]}#\\2") +          wl=wordlocation.gsub(/(.+?)\#(\d+)/, +            "\\1#{@md.lang_code_insert}#{Sfx[:html]}##{Mx[:ocn_id_char]}\\2")     # id="o\d+" always available; a name="\d+" not available if html strict used            case wordlocation            when /#{@rxp_t1}|@rxp_t2}|#{@rxp_t3}/              %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show},  } diff --git a/lib/sisu/v6/constants.rb b/lib/sisu/v6/constants.rb index 34ff92e7..390df5a4 100644 --- a/lib/sisu/v6/constants.rb +++ b/lib/sisu/v6/constants.rb @@ -101,6 +101,7 @@ Xx={    html_relative1:            '※',  }  Mx={ +  ocn_id_char:               'o',    meta_o:                    '〔@',   meta_c: '〕',    lv_o_0:                    0,    lv_o_1:                    1, diff --git a/lib/sisu/v6/html.rb b/lib/sisu/v6/html.rb index 148672e5..f1651326 100644 --- a/lib/sisu/v6/html.rb +++ b/lib/sisu/v6/html.rb @@ -245,6 +245,7 @@ module SiSU_HTML        def initialize(md=nil,data='')          @data,@md=data,md          @vz=SiSU_Viz::Defaults.new +        @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier          @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md        end        def songsheet #extracts toc for scroll & seg @@ -356,7 +357,7 @@ WOK          title=if dob.ocn ==0 then linkname          else            @@toc[:scr] <<  '<br />' -          %{<b><a href="##{dob.ocn}">#{linkname}</a></b>} +          %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}          end          txt_obj={ txt: title }          format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @@ -398,7 +399,7 @@ WOK            end          else            @@toc[:scr] <<  '<br />' -          %{<b><a href="##{dob.ocn}">#{linkname}</a></b>} +          %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}          end          txt_obj={ txt: title }          format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @@ -515,7 +516,7 @@ WOK            }            f=@md.file.base_filename.html_seg(fnh)            p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{f}##{ocn}"> +          lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{ocn}">      #{linkname}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -540,7 +541,7 @@ WOK            }            f=@md.file.base_filename.html_seg(fnh)            p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) -          lnk_n_txt=%{  <a href="#{f}##{ocn}"> +          lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{ocn}">    #{linkname}  </a>}            txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/v6/html_format.rb b/lib/sisu/v6/html_format.rb index 18d42e14..ddfaaa70 100644 --- a/lib/sisu/v6/html_format.rb +++ b/lib/sisu/v6/html_format.rb @@ -66,30 +66,36 @@ module SiSU_HTML_Format      def initialize(md,ocn)        @md,@ocn=md,ocn.to_s        @ocn ||='' +      @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier +      @make=SiSU_Env::ProcessingSettings.new(@md)      end      def ocn_display -      make=SiSU_Env::ProcessingSettings.new(@md) -      if make.build.ocn? -        ocn_class='ocn' +      if @make.build.ocn?          if @ocn.to_i==0 \          or @ocn.empty? -          %{<label class="ocn_off"> </label>} +          ''          else +          name=(@make.build.html_strict?) ? '' :  %{ name="#{@ocn}"}            @ocn.gsub(/^(\d+|)$/, -            %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>}) +            %{<label class="ocn"><a#{name} href="##{@ocn_html_identifier}#{@ocn}" class="lnkocn">\\1</a></label>})          end        else -        %{<label class="ocn_off"> </label>} +        ''        end      end      def name -      (@ocn==nil || @ocn.empty?) ? '' : %{<a name="#{@ocn}"></a>} +      if @make.build.html_strict? \ +      or @ocn==(nil || @ocn.empty?) +        '' +      else +        %{<a name="#{@ocn}"></a>} +      end      end      def id #w3c? "tidy" complains about numbers as identifiers ! annoying        (@ocn==nil || @ocn.empty?) ? '' : %{id="o#{@ocn}"}      end      def goto -      (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn}">} +      (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn_html_identifier}#{@ocn}">}      end    end    class HeadInformation @@ -1233,6 +1239,7 @@ WOK      end      def subtoc_lev(tag,attrib)        @txt=clean(@txt) +      @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier        txt=if @txt \        and @txt =~/<\/?i>|<a\s+name="\S+?">/mi          @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text @@ -1246,7 +1253,7 @@ WOK            gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+"> <sup>\d+<\/sup> /m,'')        end        %{<#{tag} class="#{attrib}"> -    <a href="##{@ocn}"><i>#{txt}</i></a> #{note} +    <a href="##{@ocn_html_identifier}#{@ocn}"><i>#{txt}</i></a> #{note}    </#{tag}>}      end      def subtoc_lev5 diff --git a/lib/sisu/v6/html_lite_shared.rb b/lib/sisu/v6/html_lite_shared.rb index b675fbd3..88510f04 100644 --- a/lib/sisu/v6/html_lite_shared.rb +++ b/lib/sisu/v6/html_lite_shared.rb @@ -83,6 +83,7 @@ module SiSU_FormatShared        end        @tab="\t"        @brace_url=SiSU_Viz::Defaults.new.url_decoration +      @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier        @@tablehead,@@tablefoot=[],[]        @vz=SiSU_Viz::Defaults.new        @env=SiSU_Env::InfoEnv.new(@md.fns) @@ -205,7 +206,7 @@ GSUB        %{<p class="#{h[:class]}" type="#{h[:type]}">#{h[:txt]}</a></p>\n}  << "\n"      end      def lev_toc_hname -      %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">#{@txt}</a></p>\n}  #<< "\n" +      %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn_html_identifier}#{@ocn}">#{@txt}</a></p>\n}  #<< "\n"      end      def lev_toc        h={ txt: txt, class: "toc#{@lv}", type: 'toc' } @@ -309,10 +310,10 @@ GSUB      def paragraph        attrib=%{class="#{@attrib}" }        if @ocn -        id=%{id="#{@ocn}" } +        id=%{id="#{Mx[:ocn_id_char]}#{@ocn}" }          type=%{type="substantive" }        else -        id=%{id="none" } +        id=''          type=%{type="comment" }        end        header=%{header="#{@hname}" } if @hname diff --git a/lib/sisu/v6/html_minitoc.rb b/lib/sisu/v6/html_minitoc.rb index 0bb2794f..13045b0d 100644 --- a/lib/sisu/v6/html_minitoc.rb +++ b/lib/sisu/v6/html_minitoc.rb @@ -71,6 +71,7 @@        def initialize(md,data)          @md,@data=md,data          @pat_strip_heading_name=/<a name="h?\d.*?">(.+?)<\/a>/ +        @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier          @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md        end        def songsheet @@ -204,7 +205,7 @@            fn: @@seg_url,          }          f=@md.file.base_filename.html_seg(fnh) -        lnk_n_txt=%{  <a href="#{f}##{txt.ocn}"> +        lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">      #{txt.obj}    </a>}            txt_obj={ txt: lnk_n_txt } @@ -223,7 +224,7 @@            fn: @@seg_url,          }          f=@md.file.base_filename.html_seg(fnh) -        lnk_n_txt=%{  <a href="#{f}##{txt.ocn}"> +        lnk_n_txt=%{  <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">      #{txt.obj}    </a>}            txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/v6/txt_plain.rb b/lib/sisu/v6/txt_plain.rb index bb97f679..1aa08f0e 100644 --- a/lib/sisu/v6/txt_plain.rb +++ b/lib/sisu/v6/txt_plain.rb @@ -400,7 +400,8 @@ WOK          @@endnotes[:para]=[]        end        def ocn_display(dob) -        if @env.plaintext_ocn? +        make=SiSU_Env::ProcessingSettings.new(@md) +        if make.build.plaintext_ocn?            if defined? dob.ocn \            and dob.ocn.is_a?(Fixnum)              (defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : '' diff --git a/lib/sisu/v6/xml_odf_odt.rb b/lib/sisu/v6/xml_odf_odt.rb index 707e7a20..0457ad7d 100644 --- a/lib/sisu/v6/xml_odf_odt.rb +++ b/lib/sisu/v6/xml_odf_odt.rb @@ -121,6 +121,7 @@ module SiSU_XML_ODF_ODT        @@fns=nil        def initialize(particulars)          @md,@env,@ao_array=particulars.md,particulars.env,particulars.ao_array +        @make=SiSU_Env::ProcessingSettings.new(@md)          @vz=SiSU_Viz::Defaults.new          @tab="\t"          @brace_url=SiSU_Viz::Defaults.new.url_decoration @@ -556,10 +557,10 @@ module SiSU_XML_ODF_ODT          end          p_num={ display: '', set_ref: '' }          if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ -          if @env.odt_ocn? +          if @make.build.odt_ocn?              if defined? dob.ocn \              and dob.ocn.is_a?(Fixnum) -              p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn).set_bookmark_and_display +              p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn).set_bookmark_and_display              end            end          end @@ -682,7 +683,7 @@ module SiSU_XML_ODF_ODT            and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]            if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check              if defined? dob.ocn and dob.ocn =~/\d+/ -              @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn) +              @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn)              end              if dob.is ==:heading \              || dob.is ==:para \ diff --git a/lib/sisu/v6/xml_odf_odt_format.rb b/lib/sisu/v6/xml_odf_odt_format.rb index bc7fadea..b2539dfd 100644 --- a/lib/sisu/v6/xml_odf_odt_format.rb +++ b/lib/sisu/v6/xml_odf_odt_format.rb @@ -65,17 +65,26 @@ module SiSU_XML_ODF_ODT_Format      include SiSU_Param    include SiSU_Viz    class ParagraphNumber -    def initialize(paranum) +    def initialize(make,paranum) +      @make=make        @paranum=/(\d+)/m.match(paranum.to_s)[1]      end      def set_ref_and_display -      set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>') -      disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}) +      set_ref=@paranum.gsub(/(\d+)/, +        ' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>') +      disp=@paranum.gsub(/(\d+)/, +        (@make.build.odt_ocn?) \ +        ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>} +        : '')        { display: disp, set_ref: set_ref }      end      def set_bookmark_and_display -      set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>') -      disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}) +      set_ref=@paranum.gsub(/(\d+)/, +        ' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>') +      disp=@paranum.gsub(/(\d+)/, +        (@make.build.odt_ocn?) \ +        ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>} +        : '')        { display: disp, set_ref: set_ref }      end      def name | 
