aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--data/doc/sisu/CHANGELOG_v61
-rw-r--r--lib/sisu/v6/xml_docbook5.rb10
-rw-r--r--lib/sisu/v6/xml_tables.rb58
3 files changed, 68 insertions, 1 deletions
diff --git a/data/doc/sisu/CHANGELOG_v6 b/data/doc/sisu/CHANGELOG_v6
index f1c54994..29f5be22 100644
--- a/data/doc/sisu/CHANGELOG_v6
+++ b/data/doc/sisu/CHANGELOG_v6
@@ -43,6 +43,7 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_6.0.8.orig.tar.xz
* ocn & footnote numbers (as xml comments)
* metadata header (docinfo)
* quotes (blockquote)
+ * tables
%% 6.0.7.orig.tar.xz (2014-05-25:20/7)
http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_6.0.7
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=[]