diff options
author | Ralph Amissah <ralph@amissah.com> | 2014-07-01 01:00:30 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2014-07-01 01:00:30 -0400 |
commit | f3832f0acc5b335fc820287ce2530435ad651202 (patch) | |
tree | ecd2004aecd2b706316291a98645ed98a5a25a75 /lib/sisu/v5/xml_docbook5.rb | |
parent | debian/changelog (5.4.2-1) (diff) | |
parent | v5 v6: sysenv, developer _CONSTRUCTION_ZONE warning setup modified (diff) |
Merge tag 'sisu_5.4.3' into debian/sid
SiSU 5.4.3
Diffstat (limited to 'lib/sisu/v5/xml_docbook5.rb')
-rw-r--r-- | lib/sisu/v5/xml_docbook5.rb | 128 |
1 files changed, 93 insertions, 35 deletions
diff --git a/lib/sisu/v5/xml_docbook5.rb b/lib/sisu/v5/xml_docbook5.rb index 98450520..3a59f839 100644 --- a/lib/sisu/v5/xml_docbook5.rb +++ b/lib/sisu/v5/xml_docbook5.rb @@ -70,6 +70,7 @@ module SiSU_XML_Docbook_Book include SiSU_TextUtils require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge + require_relative 'shared_metadata' # shared_metadata.rb class Source def initialize(opt) @opt=opt @@ -135,7 +136,7 @@ module SiSU_XML_Docbook_Book def collapsed %w[ 0 1 2 3 4 5 ] end - def docbook(lc,chlv='') + def docbook_tag(lc,chlv='') case lc when 0 then 'book' when 1 then lc==chlv ? 'chapter' : 'section' @@ -162,7 +163,7 @@ module SiSU_XML_Docbook_Book end def markup_text(data) data.each_with_index do |o,i| - if o.is ==:heading || o.is ==:para + if o.is ==:heading || o.is ==:para || o.is ==:open_close_tags o=@trans.markup_docbook(o) #unless o.obj==nil end end @@ -189,6 +190,38 @@ module SiSU_XML_Docbook_Book end #def chapterlevel #end + def xml_head + [ + '<docinfo>', + SiSU_Metadata::Summary.new(@md).xml_docbook.metadata, + '</docinfo>' + ].flatten + end + def code_output(o,ocn,filename_docbook) + filename_docbook.puts o.obj.gsub(/\n?(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\n?/m,"\n") + end + def adjust_output(o,ocn,filename_docbook,splv) + if o.obj =~/#{Xx[:split]}/ + outs=o.obj.split(/#{Xx[:split]}/) + outs.each do |out| + if out =~/<figure id=/m + out=out.gsub(/:spaces0:/m, + %{#{spaces*(splv)}#{spaces}}). + gsub(/:spaces1:/m, + %{#{spaces*(splv)}#{spaces*2}}) + filename_docbook.puts out + filename_docbook.puts "#{spaces*3}#{ocn}" + else + unless out.empty? + filename_docbook.puts SiSU_TextUtils::Wrap.new(out,80,(splv*2+2),nil).line_wrap + filename_docbook.puts "#{spaces*3}#{ocn}" + end + end + end + else + filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj,80,(splv*2+2),nil,ocn).line_wrap + end + end def structure_build_collapsed(data) #output_file=@md.file.output_path.xml_docbook_book.dir + '/' + @md.file.base_filename.xml_docbook_book file=SiSU_Env::FileOp.new(@md) @@ -197,10 +230,11 @@ module SiSU_XML_Docbook_Book @chlv=chlv=0 doc_position=:head filename_docbook.puts head + filename_docbook.puts xml_head data.each_with_index do |o,i| if (defined? o.ocn and not o.ocn.nil?) ocn=(@make.build.ocn?) \ - ? "\n#{Dx[:ocn_o]}#{o.ocn}#{Dx[:ocn_c]}" + ? "<!-- o#{o.ocn} -->" : '' id=%{ id="o#{o.ocn}" } else @@ -217,16 +251,40 @@ module SiSU_XML_Docbook_Book doc_position=:body_and_tail else filename_docbook.puts structure_build_tag_close(o.lc,h) - filename_docbook.puts %{#{spaces*(o.lc)}<#{tags.docbook(o.lc,chlv)}#{tag_id}> + filename_docbook.puts %{#{spaces*(o.lc)}<#{tags.docbook_tag(o.lc,chlv)}#{tag_id}> #{spaces*o.lc}<title#{id}> } end - filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj + ocn,80,(@splv*2+2)).line_wrap + adjust_output(o,ocn,filename_docbook,@splv) filename_docbook.puts %{#{spaces*o.lc}</title>} h=o.lc - elsif (o.of ==:para or o.of ==:block) + elsif o.of ==:layout \ + and o.is ==:open_close_tags + xml_tag=case o.sym + when :quote_open then '<blockquote>' + when :quote_close then '</blockquote>' + else '' + end + unless xml_tag.empty? + filename_docbook.puts "#{spaces*(@splv)}#{xml_tag}" + end + elsif o.of ==:block + if o.is ==:table + filename_docbook.puts SiSU_Tables::TableXMLdocbook.new(o,id).table.obj + elsif o.is ==:code + filename_docbook.puts "#{spaces*(@splv)}<para#{id}>" + filename_docbook.puts "#{spaces*(@splv+1)}<programlisting>" + code_output(o,ocn,filename_docbook) + filename_docbook.puts "#{spaces*(@splv+1)}</programlisting>" + filename_docbook.puts "#{spaces*(@splv)}</para>" + else + filename_docbook.puts "#{spaces*(@splv)}<para#{id}>" + adjust_output(o,ocn,filename_docbook,@splv) + filename_docbook.puts "#{spaces*(@splv)}</para>" + end + elsif o.of ==:para filename_docbook.puts "#{spaces*(@splv)}<para#{id}>" - filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj + ocn,80,(@splv*2+2)).line_wrap + adjust_output(o,ocn,filename_docbook,@splv) filename_docbook.puts "#{spaces*(@splv)}</para>" end end @@ -237,40 +295,40 @@ module SiSU_XML_Docbook_Book x=[] case h when 0 - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 1 - x << "#{spaces*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*1}</#{tags.docbook_tag(1,@chlv)}>" if (lc <= 1) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 2 - x << "#{spaces*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{spaces*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*2}</#{tags.docbook_tag(2,@chlv)}>" if (lc <= 2) + x << "#{spaces*1}</#{tags.docbook_tag(1,@chlv)}>" if (lc <= 1) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 3 - x << "#{spaces*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{spaces*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{spaces*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*3}</#{tags.docbook_tag(3,@chlv)}>" if (lc <= 3) + x << "#{spaces*2}</#{tags.docbook_tag(2,@chlv)}>" if (lc <= 2) + x << "#{spaces*1}</#{tags.docbook_tag(1,@chlv)}>" if (lc <= 1) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 4 - x << "#{spaces*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4) - x << "#{spaces*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{spaces*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{spaces*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*4}</#{tags.docbook_tag(4,@chlv)}>" if (lc <= 4) + x << "#{spaces*3}</#{tags.docbook_tag(3,@chlv)}>" if (lc <= 3) + x << "#{spaces*2}</#{tags.docbook_tag(2,@chlv)}>" if (lc <= 2) + x << "#{spaces*1}</#{tags.docbook_tag(1,@chlv)}>" if (lc <= 1) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 5 - x << "#{spaces*5}</#{tags.docbook(5)}>" if (lc <= 5) - x << "#{spaces*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4) - x << "#{spaces*5}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{spaces*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{spaces*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*5}</#{tags.docbook_tag(5)}>" if (lc <= 5) + x << "#{spaces*4}</#{tags.docbook_tag(4,@chlv)}>" if (lc <= 4) + x << "#{spaces*5}</#{tags.docbook_tag(3,@chlv)}>" if (lc <= 3) + x << "#{spaces*2}</#{tags.docbook_tag(2,@chlv)}>" if (lc <= 2) + x << "#{spaces*1}</#{tags.docbook_tag(1,@chlv)}>" if (lc <= 1) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 6 - x << "#{spaces*6}</#{tags.docbook(6)}>" if (lc <= 6) - x << "#{spaces*5}</#{tags.docbook(5)}>" if (lc <= 5) - x << "#{spaces*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4) - x << "#{spaces*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{spaces*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{spaces*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{spaces*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*6}</#{tags.docbook_tag(6)}>" if (lc <= 6) + x << "#{spaces*5}</#{tags.docbook_tag(5)}>" if (lc <= 5) + x << "#{spaces*4}</#{tags.docbook_tag(4,@chlv)}>" if (lc <= 4) + x << "#{spaces*3}</#{tags.docbook_tag(3,@chlv)}>" if (lc <= 3) + x << "#{spaces*2}</#{tags.docbook_tag(2,@chlv)}>" if (lc <= 2) + x << "#{spaces*1}</#{tags.docbook_tag(1,@chlv)}>" if (lc <= 1) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) end x.join("\n") end |