From 7372f56054259457f77c64cbdb34e736531cfc0e Mon Sep 17 00:00:00 2001
From: Ralph Amissah
Date: Sat, 4 Jul 2009 11:57:29 -0400
Subject: move lib to version 1 directory, (lib/sisu/v1) and make related
changes
---
lib/sisu/v1/shared_html_lite.rb | 276 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 276 insertions(+)
create mode 100644 lib/sisu/v1/shared_html_lite.rb
(limited to 'lib/sisu/v1/shared_html_lite.rb')
diff --git a/lib/sisu/v1/shared_html_lite.rb b/lib/sisu/v1/shared_html_lite.rb
new file mode 100644
index 00000000..7fe77e0b
--- /dev/null
+++ b/lib/sisu/v1/shared_html_lite.rb
@@ -0,0 +1,276 @@
+# coding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997 - 2009 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 .
+
+ If you have Internet connection, the latest version of the GPL should be
+ available at these locations:
+
+
+
+
+
+
+
+ * SiSU uses:
+ * Standard SiSU markup syntax,
+ * Standard SiSU meta-markup syntax, and the
+ * Standard SiSU object citation numbering and system
+
+ * Hompages:
+
+
+
+ * Download:
+
+
+ * Ralph Amissah
+
+
+
+ ** 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=%{
#{c}
} 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$/
+ %{[#{png}]#{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=%{#{link}#{d}}
+ #ins=%{#{link} [link]#{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|$))/,'\1\2') #http ftp matches escaped, no decoration
+ para.gsub!(/((?:^|\s)#{Mx[:lnk_c]})((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1\2\3') #special case \{ e.g. \}http://url
+ para.gsub!(/(^|#{Mx[:gl_c]}|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}\\2#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
+ else
+ para.gsub!(/(^|[^}])_/m,'\1>') #code-block: angle brackets special characters
+ para.gsub!(/(^|[^}])_/m,'\1>')
+ end
+ para
+ end
+ def paragraph
+ %{#{@tab*1}
\n#{@tab*2}#{@txt}\n#{@tab*1}
\n} << "\n"
+ end
+ def endnote #used only by db
+ @txt=markup(@txt)
+ <
+#{@tab*2}#{@notenumber}.#{@txt}
+#{@tab*1}