diff options
author | Ralph Amissah <ralph@amissah.com> | 2014-06-19 22:36:38 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2014-06-19 22:36:38 -0400 |
commit | ea5affb331624b72a7a5a7ac5614e2d19f347c4d (patch) | |
tree | 2db6a88dc15f0019741254a2a3ea5f78236ef2ff /lib/sisu/v6/xml_docbook5.rb | |
parent | debian/changelog (5.4.0-1) (diff) | |
parent | vim syntax, code block, language syntax; box group; quote (diff) |
Merge tag 'sisu_5.4.1' into debian/sid
SiSU 5.4.1
Diffstat (limited to 'lib/sisu/v6/xml_docbook5.rb')
-rw-r--r-- | lib/sisu/v6/xml_docbook5.rb | 144 |
1 files changed, 101 insertions, 43 deletions
diff --git a/lib/sisu/v6/xml_docbook5.rb b/lib/sisu/v6/xml_docbook5.rb index f5dba87a..b3e9e035 100644 --- a/lib/sisu/v6/xml_docbook5.rb +++ b/lib/sisu/v6/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 @@ -127,15 +128,15 @@ module SiSU_XML_Docbook_Book structure_build_collapsed(data) #tail end - def space - ' ' + def spaces + Ax[:spaces] end def tags # collapsed --> 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 @@ -176,7 +177,7 @@ module SiSU_XML_Docbook_Book end def output(o,comment='') puts o.lc == (0..6) \ - ? "#{space*o.lc}<#{o.lc}>[#{o.ocn}] #{o.ln} #{o.obj}</#{o.lc}>#{comment}" + ? "#{spaces*o.lc}<#{o.lc}>[#{o.ocn}] #{o.ln} #{o.obj}</#{o.lc}>#{comment}" : "<#{o.lc}>[#{o.ocn}] #{o.ln} #{o.obj}</#{o.lc}>#{comment}" end def structure_collapsed(data) @@ -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 @@ -213,21 +247,45 @@ module SiSU_XML_Docbook_Book @splv=o.lc tag_id=o.tags[0] ? %{ id="#{o.tags[0]}" } : '' if doc_position ==:head - filename_docbook.puts %{#{space*o.lc}<title#{id}>} + filename_docbook.puts %{#{spaces*o.lc}<title#{id}>} doc_position=:body_and_tail else filename_docbook.puts structure_build_tag_close(o.lc,h) - filename_docbook.puts %{#{space*(o.lc)}<#{tags.docbook(o.lc,chlv)}#{tag_id}> -#{space*o.lc}<title#{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 - filename_docbook.puts %{#{space*o.lc}</title>} + 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) - filename_docbook.puts "#{space*(@splv)}<para#{id}>" - filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj + ocn,80,(@splv*2+2)).line_wrap - filename_docbook.puts "#{space*(@splv)}</para>" + 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}>" + adjust_output(o,ocn,filename_docbook,@splv) + filename_docbook.puts "#{spaces*(@splv)}</para>" end end filename_docbook.puts structure_build_tag_close(0,h) @@ -237,40 +295,40 @@ module SiSU_XML_Docbook_Book x=[] case h when 0 - x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0) + x << "#{spaces*0}</#{tags.docbook_tag(0)}>" if (lc <= 0) when 1 - x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{space*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 << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{space*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 << "#{space*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{space*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 << "#{space*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4) - x << "#{space*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{space*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 << "#{space*5}</#{tags.docbook(5)}>" if (lc <= 5) - x << "#{space*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4) - x << "#{space*5}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{space*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 << "#{space*6}</#{tags.docbook(6)}>" if (lc <= 6) - x << "#{space*5}</#{tags.docbook(5)}>" if (lc <= 5) - x << "#{space*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4) - x << "#{space*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3) - x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2) - x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1) - x << "#{space*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 |