aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/0.52/odf_format.rb
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2007-05-22 02:06:46 +0100
committerRalph Amissah <ralph.amissah@gmail.com>2007-05-22 02:06:46 +0100
commit65477054fd798728bf186aa2938727ddddbe86a5 (patch)
tree612da47b57ad4c4157f495dcf10710d32cdc6ead /lib/sisu/0.52/odf_format.rb
Imported upstream version 0.52.7upstream/0.52.7sisu_0.52.7
Diffstat (limited to 'lib/sisu/0.52/odf_format.rb')
-rw-r--r--lib/sisu/0.52/odf_format.rb225
1 files changed, 225 insertions, 0 deletions
diff --git a/lib/sisu/0.52/odf_format.rb b/lib/sisu/0.52/odf_format.rb
new file mode 100644
index 00000000..edb202d8
--- /dev/null
+++ b/lib/sisu/0.52/odf_format.rb
@@ -0,0 +1,225 @@
+=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: opendocument formatting, default opendocument template
+
+ * 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
+=end
+module OD_format
+ require SiSU_lib + '/param'
+ include SiSU_Param
+ include SiSU_Viz
+ class Paragraph_number
+ def initialize(paranum)
+ @paranum=/(\d+)/m.match(paranum)[1]
+ end
+ def display
+ @paranum.gsub(/(\d+)/,'<font size="1" color="#777777">&nbsp;&nbsp;\1</font>')
+ end
+ def name
+ @paranum.gsub(/(\d+)/,'<a name="\1"></a>')
+ end
+ def goto
+ @paranum.gsub(/(\d+)/,'<a href="#\1">')
+ end
+ end
+ class Format_text_object
+ @@dp=nil
+ def initialize(one,two,three)
+ one.gsub!(/\.(html|pdf|php)/,'') if one =~/\.\.\/\S+/
+ @one,@two,@three=one,two,three
+ rgx=/^[1-6-]~/
+ @one.gsub!(rgx,'') if @one =~rgx
+ @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ rgx=/~\{\d+\s+(.+?)<#@dp>\}~/
+ @one.gsub!(rgx,'\1') if @one =~rgx
+ @link,@linkname=one,two
+ @vz=SiSU_Env::Get_init.instance.skin
+ end
+ def scr_endnote_body
+ "<endnote>#@one</endnote> "
+ end
+ def heading_body1
+ #%{<text:h text:style-name="Heading_20_1" text:outline-level="1">#@two</text:h>}
+ end
+ def heading_body2
+ #%{<text:h text:style-name="Heading_20_2" text:outline-level="2">#@two</text:h>}
+ end
+ def heading_body3
+ #%{<text:h text:style-name="Heading_20_3" text:outline-level="3">#@two</text:h>}
+ end
+ def heading_body4
+ #%{<text:h text:style-name="Heading_20_4" text:outline-level="4">#@two</text:h>}
+ end
+ def heading_body5
+ #%{<text:h text:style-name="Heading_20_5" text:outline-level="5">#@two</text:h>}
+ end
+ def heading_body6
+ #%{<text:h text:style-name="Heading_20_6" text:outline-level="6">#@two</text:h>}
+ end
+ end
+ class Table
+ @@tablehead,@@table_counter=0,0 #reinitialise on new file
+ @@tablefoot=[] #watch
+ @@fns=''
+ @@dp=nil
+ def initialize(md,one)
+ @md,@one,@parablock,@vz=md,one,one,SiSU_Env::Get_init.instance.skin
+ if @md.fns != @@fns
+ @@table_counter=0
+ @@fns=@md.fns
+ @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ end
+ end
+ def table_head(count,col,h=false)
+ type=if h; 1
+ else 2
+ end
+ alpha=case col.to_i
+ when 1; 'A'
+ when 2; 'B'
+ when 3; 'C'
+ when 4; 'D'
+ when 5; 'E'
+ when 6; 'F'
+ when 7; 'G'
+ when 8; 'H'
+ when 9; 'I'
+ when 10; 'J'
+ when 11; 'K'
+ when 12; 'L'
+ when 13; 'M'
+ when 14; 'N'
+ else 'D'
+ end
+ %{<table:table table:name="Table#{count}" table:style-name="Table#{type}">#@br} +
+ %{<table:table-column table:style-name="Table#{type}.#{alpha}" table:number-columns-repeated="#{col}"/>#@br}
+ end
+ def table_end(tablefoot='')
+ '</table:table>'
+ end
+ def table_row(inf,h=false)
+ if h; %{<table:table-row>#@br} +
+ %{<table:table-cell office:value-type="string">#@br} +
+ %{<text:p text:style-name="Table_20_Heading">#@br}
+ else %{<table:table-row>#@br} +
+ %{<table:table-cell office:value-type="string">#@br} +
+ %{<text:p text:style-name="P7">#@br}
+ end
+ end
+ def table_cell(inf,h=false)
+ if h; %{</text:p>#@br} +
+ %{</table:table-cell>#@br} +
+ %{<table:table-cell office:value-type="string">#@br} +
+ %{<text:p text:style-name="Table_20_Heading">#@br}
+ else %{</text:p>#@br} +
+ %{</table:table-cell>#@br} +
+ %{<table:table-cell office:value-type="string">#@br} +
+ %{<text:p text:style-name="P7">#@br}
+ end
+ end
+ def table_row_close(h=false)
+ %{</text:p>#@br} +
+ %{</table:table-cell>#@br} +
+ %{</table:table-row>#@br}
+ end
+ def table
+ @parablock='' if @parablock =~/^<!$/
+ @parablock.gsub!(/<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>/,'')
+ m=@parablock[/<!f(.+?)!>/,1]
+ @@tablefoot << m if m
+ @parablock.gsub!(/<!f.+?!>/,'')
+ @@tablehead=1 if @parablock =~/<!Th¡/
+ @@table_counter+=1 if @parablock =~/<!Th?¡/
+ if @parablock =~/<!Th¡\s+c(\d+).+?!~\d+;\w\d+;\w\d+>/; @parablock=table_head(@@table_counter,$1,true)
+ elsif @parablock =~/<!T¡\s+c(\d+).+?!~\d+;\w\d+;\w\d+>/; @parablock=table_head(@@table_counter,$1)
+ end
+ if @parablock =~/<!TZ!>/
+ tablefoot=[]
+ @@tablefoot.each {|x| tablefoot << ''}
+ @@tablefoot=[]
+ if @parablock =~/<!TZ!>/; @parablock=table_end
+ end
+ end
+ if @@tablehead == 1
+ if @parablock =~/¡¡/
+ if @parablock =~/<!¡¡(\d+?)¡/
+ @parablock.gsub!(/<!¡¡(\d+?)¡/,table_row($1,true))
+ end
+ if @parablock =~/¡¡(\d+?)¡/
+ @parablock.gsub!(/¡¡(\d+?)¡/,table_cell($1,true))
+ end
+ if @parablock =~/!>/
+ @parablock.gsub!(/!>/,table_row_close(true))
+ end
+ @@tablehead=0
+ end
+ @parablock
+ else
+ if @parablock =~/<!¡¡(\d+?)¡/
+ @parablock.gsub!(/<!¡¡(\d+?)¡/,table_row($1))
+ end
+ if @parablock =~/¡¡(\d+?)¡/
+ @parablock.gsub!(/¡¡(\d+?)¡/,table_cell($1))
+ end
+ if @parablock =~/!>/
+ @parablock.gsub!(/!>/,table_row_close)
+ end
+ @parablock
+ end
+ @parablock
+ end
+ def table_split
+ @new_content=[]
+ @one.split(/\s*<!/).each do |parablock|
+ table=Table.new(@md,"<!#{parablock}")
+ @new_content << table.table
+ end
+ @new_content.join
+ end
+ end
+ class XML
+ end
+end
+__END__