aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2014-06-19 21:16:33 -0400
committerRalph Amissah <ralph@amissah.com>2014-06-19 21:16:33 -0400
commit8ed75b2bfd615c863e14b9c540ec15c429c06e98 (patch)
tree955bcbd14fd47d1d753f5d979b4e88fe6d49ac7a /lib
parentv6: docbook, quotes (blockquote) (diff)
v6: docbook, tables
Diffstat (limited to 'lib')
-rw-r--r--lib/sisu/v6/xml_docbook5.rb10
-rw-r--r--lib/sisu/v6/xml_tables.rb58
2 files changed, 67 insertions, 1 deletions
diff --git a/lib/sisu/v6/xml_docbook5.rb b/lib/sisu/v6/xml_docbook5.rb
index 28b7fc4a..db6e7eb0 100644
--- a/lib/sisu/v6/xml_docbook5.rb
+++ b/lib/sisu/v6/xml_docbook5.rb
@@ -243,7 +243,15 @@ module SiSU_XML_Docbook_Book
unless xml_tag.empty?
filename_docbook.puts "#{spaces*(@splv)}#{xml_tag}"
end
- elsif (o.of ==:para or o.of ==:block)
+ elsif o.of ==:block
+ if o.is ==:table
+ filename_docbook.puts SiSU_Tables::TableXMLdocbook.new(o,id).table.obj
+ else
+ filename_docbook.puts "#{spaces*(@splv)}<para#{id}>"
+ filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj + ocn,80,(@splv*2+2)).line_wrap
+ 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
filename_docbook.puts "#{spaces*(@splv)}</para>"
diff --git a/lib/sisu/v6/xml_tables.rb b/lib/sisu/v6/xml_tables.rb
index a994e402..6967bb86 100644
--- a/lib/sisu/v6/xml_tables.rb
+++ b/lib/sisu/v6/xml_tables.rb
@@ -122,6 +122,64 @@ module SiSU_Tables
@parablock
end
end
+ class TableXMLdocbook
+ @@tablehead=0
+ @@tablefoot=[] #watch
+ def initialize(table,id='')
+ @table_obj,@id=table,id
+ @vz=SiSU_Viz::Defaults.new
+ end
+ def spaces
+ Ax[:spaces]
+ end
+ def table
+ table_obj=@table_obj
+ if table_obj.obj !~/^<table\s/m
+ table_obj=table_rows_and_columns_array(table_obj)
+ else p __LINE__; p caller
+ end
+ table_obj
+ end
+ def table_rows_and_columns_array(table_obj) # provides basic (x)html table
+ table_rows,nr=[],0
+ table_obj.obj.split(Mx[:tc_c]).each do |table_row|
+ table_row_with_columns=table_row.split(Mx[:tc_p])
+ trc,nc=[],0
+ table_row_with_columns.each do |c|
+ c=c.gsub(/^(?:~|&nbsp;)$/,''). # tilde / empty cell
+ gsub(/&nbsp;/,' ').
+ gsub(/<:br>/,'<br />')
+ trc <<= if table_obj.head_ and nr==0
+ %{#{spaces*6}<entry>#{c}</entry>\n}
+ else %{#{spaces*6}<entry>#{c}</entry>\n}
+ end
+ nc+=1
+ end
+ trc=(trc.is_a?(Array)) ? trc.flatten.join : trc
+ trc = if table_obj.head_ and nr==0
+ "#{spaces*4}<thead>\n#{spaces*5}<row>\n#{trc}#{spaces*5}</row>\n#{spaces*4}</thead>\n#{spaces*4}<tbody>\n"
+ else
+ "#{spaces*5}<row>\n#{trc}#{spaces*5}</row>\n"
+ end
+ nr+=1
+ table_rows << trc
+ end
+ tbody_close=if table_obj.head_
+ "#{spaces*4}</tbody>"
+ else ''
+ end
+ table_rows=table_rows.flatten.join
+ # include table_id <table id=''>
+ table_obj.obj=%{#{spaces*3}<para #{@id}>
+#{spaces*4}<table>
+#{spaces*4}<tgroup cols="#{table_obj.cols}" align="char">
+#{table_rows}#{tbody_close}
+#{spaces*4}</tgroup>
+#{spaces*4}</table>
+#{spaces*3}</para>}
+ table_obj
+ end
+ end
class TableXMLexp <Table
@@tablehead=0
@@tablefoot=[]