diff options
Diffstat (limited to 'lib/sisu/v5/html_format.rb')
-rw-r--r-- | lib/sisu/v5/html_format.rb | 80 |
1 files changed, 39 insertions, 41 deletions
diff --git a/lib/sisu/v5/html_format.rb b/lib/sisu/v5/html_format.rb index 3b15502f..e244bbb8 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 @@ -271,24 +277,6 @@ module SiSU_HTML_Format else '' end end - def pdf #retired 2.7.9 - pdf=if @md.programs[:pdf] \ - and @cf_defaults.cf_0 =~/p/ - %{ -<td align="center" bgcolor=#{@vz.color_band2}> - <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_p}" target="_top"> - #{@vz.nav_txt_pdf_portrait} - </a> -</td> -<td align="center" bgcolor=#{@vz.color_band2}> - <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_l}" target="_top"> - #{@vz.nav_txt_pdf_landscape} - </a> -</td> -} - else '' - end - end end class XML end @@ -514,7 +502,8 @@ WOK end def rights def all - rights=@md.rights.all.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>©</sup> ') + rights=SiSU_HTML_Tune::CleanHTML.new(@md.rights.all).clean_for_html + rights=rights.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>©</sup> ') %{<p class="small_left">Rights: #{rights}</p> <p />} end @@ -648,8 +637,6 @@ WOK def initialize(md) super(md) end - def title_banner(title,subtitle,creator) - end def dot_control_pre_next pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}" up=@toc @@ -894,6 +881,7 @@ WOK attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url def initialize(md,t_o) @md,@t_o=md,t_o + @make=SiSU_Env::ProcessingSettings.new(@md) if t_o.is_a?(Hash) @txt =t_o[:txt] || nil @ocn =t_o[:ocn] || nil @@ -917,19 +905,19 @@ WOK p caller end end - @headnamed= (@headname ? %{<a name="h#{@headname}" id="h#{@headname}"></a>} : nil) + @headnamed=(@headname ? %{<a id="h#{@headname}"></a>} : nil) if @txt and not @txt.empty? @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'') end @p_num=ParagraphNumber.new(@md,@ocn) @vz=SiSU_Viz::Defaults.new - @make=SiSU_Env::ProcessingSettings.new(@md) end def nametags_scroll(dob) tags='' if defined? dob.tags \ and dob.tags.length > 0 # insert tags "hypertargets" dob.tags.each do |t| + t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier tags=tags << %{<named id="#{t}" />} end end @@ -940,7 +928,16 @@ WOK if defined? dob.tags \ and dob.tags.length > 0 # insert tags "hypertargets" dob.tags.each do |t| - tags=tags << %{<a name="#{t}" ></a>} + t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier + if @make.build.html_strict? + tags=(t =~/^[#{Mx[:ocn_id_char]}]?[0-9.]+$/) \ + ? tags #check what can be sorted in ao + : (tags << %{<a name="#{t}" ></a>}) + else + tags=(t =~/^[#{Mx[:ocn_id_char]}][0-9.]+$/) \ + ? tags #check what can be sorted in ao + : (tags << %{<a name="#{t}" ></a>}) + end end end tags @@ -949,8 +946,8 @@ WOK hn=if @t_o.is ==:heading \ and not @t_o.name.empty? #determine use hn=(@t_o.is ==:heading) \ - ? (%{<a name="h#{@t_o.name}" id="h#{@t_o.name}"></a>}) - : (%{<a name="#{@t_o.name}" id="#{@t_o.name}"></a>}) + ? (%{<a id="h#{@t_o.name}"></a>}) + : (%{<a id="#{@t_o.name}"></a>}) else nil end hn @@ -981,7 +978,9 @@ WOK end def para_form_css(tag,attrib) # regular paragraphs shaped here ul=ulc='' - ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/ + if tag =~/li/ + ul,ulc="<ul>\n ","\n </ul>" + end %{ <div class="substance"> #{@p_num.ocn_display} @@ -1037,7 +1036,7 @@ WOK <div class="substance"> #{@p_num.ocn_display} <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} - #{@named}<a name="h#{@headname}">#{@txt}</a> + #{@named}#{@txt} </#{tag}> </div> } @@ -1151,8 +1150,6 @@ WOK #{@vz.table_close}} end def bold_heading - @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>'). - gsub(/[1-9]~/,'') %{<p class="bold"> #{@txt} </p> @@ -1245,6 +1242,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 @@ -1253,12 +1251,12 @@ WOK note='' if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end note=$1 - note=note.gsub(/[\n\s]+/m,' ') + note=note.gsub(/[\s]+/m,' ') txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' '). - gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+"> <sup>\d+<\/sup> /m,'') + gsub(/<a[\s]+name="-\d+"[\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 |