diff options
Diffstat (limited to 'lib/sisu/v6/xml_tables.rb')
-rw-r--r-- | lib/sisu/v6/xml_tables.rb | 58 |
1 files changed, 58 insertions, 0 deletions
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(/^(?:~| )$/,''). # tilde / empty cell + gsub(/ /,' '). + 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=[] |