aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v1/shared_html_lite.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v1/shared_html_lite.rb')
-rw-r--r--lib/sisu/v1/shared_html_lite.rb276
1 files changed, 0 insertions, 276 deletions
diff --git a/lib/sisu/v1/shared_html_lite.rb b/lib/sisu/v1/shared_html_lite.rb
deleted file mode 100644
index 5e0888bf..00000000
--- a/lib/sisu/v1/shared_html_lite.rb
+++ /dev/null
@@ -1,276 +0,0 @@
-# coding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2010, Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- 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 3 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, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
- * Download:
- <http://www.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by db and flatfile output generators, mostly
- xml/xhtml/html formatting
-
-=end
-module SiSU_Format_Shared
- require "#{SiSU_lib}/defaults"
- include SiSU_Viz
- class CSS_Format
- require "#{SiSU_lib}/defaults"
- @@fns=nil
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- if t_o.class==Hash
- @txt =t_o[:txt] #|| nil #s/@content/@txt/
- @col =t_o[:col] #|| nil
- @notenumber =t_o[:endnote_nr] || nil
- #elsif t_o.class == Array
- # @txt =txt[0]
- #elsif t_o.class == String
- # @txt =txt
- else
- #content.gsub!(/<:i[1-9]>/,'')
- #@md,@content=md,content
- p t_o.class
- p caller
- end
- @txt.gsub!(/#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/,'')
- @id=@ocn=@col[:ocn]
- @ocnd,@ocns=@col[:ocnd],@col[:ocns]
- @lv=@col[:lev].to_s
- @@hname=if @md.fns != @@fns
- @@fns=@md.fns
- ''
- end
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @tab="\t"
- @url_brace=SiSU_Viz::Skin.new.url_decoration
- # lots introduced to do html tables in db
- @@tablehead,@@tablefoot=[],[]
- @vz=SiSU_Env::Get_init.instance.skin
- @env=SiSU_Env::Info_env.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- end
- def urls(data)
- @words=[]
- data.each do |word|
- @words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}((?:https?|file|ftp)\S+|image)/
- if word =~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}((?:https?|file|ftp)\S+|image)([;.,](?:\s|$))/
- m,u,d=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}((?:https?|file|ftp)\S+|image)([;.,](?:\s|$))/.match(word).captures
- else m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}((?:https?|file|ftp)\S+|image)/.match(word).captures
- d=''
- end
- word=case m
- when /\.png|\.jpg|\.gif|c=|\d+x\d+/
- w,h=/(\d+)x(\d+)/.match(m).captures if m =~/\d+x\d+/
- w=%{width="#{w}"} if w
- h=%{height="#{h}"} if h
- c=m[/"(.+?)"/m,1]
- caption=%{<br /><p class="caption">#{c}</p>} if c
- png=m.scan(/\S+/)[0]
- #image_path=if @md.fns =~/\.-ss[tm]$/; @env.url.images_external
- #else @env.url.images_local
- #end
- ins=if u \
- and u.strip !~/^image$/
- %{<a href="#{u}">[#{png}]</a>#{caption}}
- else %{[#{png}] #{caption}}
- end
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}((?:https?|file|ftp)\S+|image)/,ins)
- else
- link=m[/(.+)/m]
- png=m.scan(/\S+/)[0].strip
- link=link.strip
- ins=%{<a href="#{u}">#{link}</a>#{d}}
- #ins=%{#{link} <a href="#{u}">[link]</a>#{d}}
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:https?|file|ftp)\S+/,ins)
- end
- else word
- end
- word
- end
- @words=@words.join(' ')
- end
- def markup(para)
- if para !~/^#{Mx[:gr_o]}:code#{Mx[:gr_c]}/
- if para =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}((?:https?|file|ftp)\S+|image)/
- wm=para.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:(?:https?|file|ftp)\S+|image)|\S+/)
- words=urls(wm)
- para.gsub!(/.+/m,words)
- end
- para.gsub!(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;')
- para.gsub!(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- para.gsub!(/#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/m,'')
- para.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
- para.gsub!(/((?:^|\s)#{Mx[:lnk_c]})((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
- para.gsub!(/(^|#{Mx[:gl_c]}|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}<a href="\\2" target="_top">\\2</a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
- else
- para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;') #code-block: angle brackets special characters
- para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;')
- end
- para
- end
- def paragraph
- %{#{@tab*1}<p class="h#{@lv}" id="#{@ocn}" type="substantive" header="#{@hname}">\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n} << "\n"
- end
- def endnote #used only by db
- @txt=markup(@txt)
- <<GSUB
-#{@tab*1}<p class="endnote" name="note_#{@notenumber}" from="#{@ocn}">
-#{@tab*2}<a href="#{@base_url}#-#{@notenumber}" name="_#{@notenumber}">#{@notenumber}.</a> <note>#{@txt}</note>
-#{@tab*1}</p>
-GSUB
- end
- def lev_toc_hname
- %{#{@tab*1}<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">\n#{@tab*2}#{@txt}\n#{@tab*1}</a></p>\n} << "\n"
- end
- def lev_toc
- %{#{@tab*1}<p class="toc#{@lv}"><a href="##{@ocn}">\n#{@tab*2}#{@txt}\n#{@tab*1}</a></p>\n} << "\n"
- end
- def lev4_plus
- %{#{@tab*1}<p class="h#{@lv}" id="#{@ocn}" type="substantive" header="#{@hname}">\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n} << "\n"
- end
- def lev4_minus
- %{#{@tab*1}<p class="h#{@lv}" id="#{@ocn}" type="substantive">\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n} << "\n"
- end
- def norm_comment
- %{#{@tab*1}<p class="norm" id="none" type="comment">\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n}
- end
- def norm
- @txt=markup(@txt)
- %{#{@tab*1}<p class="norm" id="#{@ocn}" type="substantive">\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n}
- end
- def indent(t)
- @txt=markup(@txt)
- %{#{@tab*1}<p class="indent#{t}" id="#{@ocn}" type="substantive">\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n}
- end
- def para_table
- %{<p class="norm" align="left"><font #{@vz.font_small} #{@vz.font_color} #{@vz.font_face}>}
- end
- def ocn
- %{#{@tab*1}<label class="ocn">#{@ocn}</label>} << "\n"
- end
- def html_table # get rid of use html_table
- @new_content=[]
- @txt.split(/\n/).each do |parablock|
- m=parablock[/<!f(.+?)!>/,1]
- @@tablefoot<<m if m
- parablock.gsub!(/<!f.+?!>/,'')
- @@tablehead=1 if parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
- parablock.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+)#{Mx[:gr_c]}/,
- #%{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center"><tr><td valign="top" align="justify"><p class="norm" id="\\1"> </p> </td><td>\n} +
- %{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">})
- if parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/
- tablefoot=[]
- @@tablefoot.each {|x| tablefoot << %{<p align="center"><font size=2><i>#{x}</i></font></p>\n}}
- @@tablefoot=[]
- parablock.gsub!(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,
- %{#{@vz.table_close}\n}) # +
- #%{#{tablefoot}})
- end
- if @@tablehead == 1
- if parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
- parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{\n<tr>} +
- %{\n<td width="\\1%" valign="top">} +
- %{#{para_table}<b>})
- parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</b></td><td width="\\1%" valign="top">} +
- %{#{para_table}<b>})
- parablock.gsub!(/#{Mx[:tc_c]}/, '</b></td></tr>')
- @@tablehead=0
- end
- parablock
- else
- parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{\n<tr>} +
- %{\n<td width="\\1%" valign="top">} +
- %{#{para_table}})
- parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</td><td width="\\1%" valign="top">} +
- %{#{para_table}})
- parablock.gsub!(/#{Mx[:tc_c]}/, '</td></tr>')
- parablock
- end
- @new_content << parablock
- end
- @new_content.join
- end
- end
- class CSS_Format_generic #does CSS_Format in one definition, needs to be told about attrib, despite brevity of generic, easier to see structure with CSS_Format
- def initialize(attrib='',txt='',id=nil,ocnd=nil,ocns=nil,lv='',hname=nil)
- @tab="\t"
- @attrib=attrib
- @txt=txt
- @lv=@notenumber=lv.to_s
- #{@ocn}=ocn.to_s
- @hname=hname.to_s
- @id=@ocn=id
- end
- def paragraph
- attrib=%{class="#{@attrib}" }
- if @ocn
- id=%{id="#{@ocn}" }
- type=%{type="substantive" }
- else
- id=%{id="none" }
- type=%{type="comment" }
- end
- header=%{header="#{@hname}" } if @hname
- %{#{@tab*1}<p #{attrib}#{id}#{type}#{header}>\n#{@tab*2}#{@txt}\n#{@tab*1}</p>\n} << "\n"
- end
- def para
- paragraph
- end
- end
-end
-__END__