=begin * Name: SiSU information Structuring Universe - Structured information, Serialized Units * Author: Ralph Amissah * http://www.jus.uio.no/sisu * http://www.jus.uio.no/sisu/SiSU/download.html * Description: xml output (sax style) processing * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Ralph Amissah * License: GPL 2 or later Summary of GPL 2 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA If you have Internet connection, the latest version of the GPL should be available at these locations: http://www.fsf.org/licenses/gpl.html http://www.gnu.org/copyleft/gpl.html http://www.jus.uio.no/sisu/gpl2.fsf SiSU was first released to the public on January 4th 2005 SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system © Ralph Amissah 1997, current 2007. All Rights Reserved. * Ralph Amissah: ralph@amissah.com ralph.amissah@gmail.com * Notes: tidy -xml sax.xml >> index.tidy =end module SiSU_document_structure_tables class Instantiate < SiSU_Param::Parameters::Instructions @@flag={} def initialize @@flag['table_to']=false @@counter=@@column=@@columns=0 @@line_mode='' end end class Tables @@flag={} def initialize(md,data) @md,@data=md,data Instantiate.new end def table_visual(para) count=0 @row=[] table=[] @rows=para.split(/;;/) @rows.compact! #(c\d+?;.+?) @rows.each do |row| count +=1 @row[count]=row.split(/\|/) end @row.compact! widths=if @row[0].to_s =~/^\{(?:t|table)(?:~h)?\s+\d+;/ col_width=@row[0].to_s.scan(/\d+/) rem=(100 - col_width[0].to_i) col_w=rem/(@row[1].length - 1) "#{col_width[0].to_s};" + ("#{col_w};" * (@row[1].length-1)) else col_w=100/@row[1].length "#{col_w};" * @row[1].length end @row.delete_if {|r| r[0] =~/\{(?:table|t)(?:~h)?(?:\s+c\d+;)?[\d; ]*\}/} w=widths.split(/;/) tuned_file=[] tuned_file << if para =~/\{(?:t|table)~h(?:\sc\d+;)?[\d; ]*\}/ "" elsif para =~/\{(?:t|table)(?:\sc\d+;)?[\d; ]*\}/ "" end @row.each do |l| l << '' if l.length == (@row[1].length - 1) table=[] if l.length == @row[1].length table << '' n= -1 l.each do |c| n +=1 #'