aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/current/xhtml.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/current/xhtml.rb')
-rw-r--r--lib/sisu/current/xhtml.rb120
1 files changed, 62 insertions, 58 deletions
diff --git a/lib/sisu/current/xhtml.rb b/lib/sisu/current/xhtml.rb
index 8a7cc176..b40b7550 100644
--- a/lib/sisu/current/xhtml.rb
+++ b/lib/sisu/current/xhtml.rb
@@ -63,10 +63,11 @@ module SiSU_XHTML
include SiSU_XML_Munge
require_relative 'xml_format' # xml_format.rb
include SiSU_XML_Format
+ require_relative 'xml_persist' # xml_persist.rb
require_relative 'rexml' # rexml.rb
include SiSU_Rexml
require_relative 'shared_metadata' # shared_metadata.rb
- @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0
+ @@alt_id_count=0
@@tablefoot=''
class Source
def initialize(opt)
@@ -144,18 +145,22 @@ module SiSU_XHTML
require_relative 'txt_shared' # txt_shared.rb
include SiSU_TextUtils
require_relative 'css' # css.rb
- @@xml={ body: [], sisu: [], open: [], close: [], head: [] }
def initialize(particulars)
@env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array
@tab="\t"
@trans=SiSU_XML_Munge::Trans.new(@md)
@sys=SiSU_Env::SystemCall.new
+ @per=SiSU_XML_Persist::Persist.new
end
def songsheet
- pre
- @data=markup(@ao_array)
- post
- publish
+ begin
+ pre
+ @data=markup(@ao_array)
+ post
+ publish
+ ensure
+ SiSU_XML_Persist::Persist.new.persist_init
+ end
end
protected
def embedded_endnotes(dob='')
@@ -202,7 +207,7 @@ WOK
end
def xml_head
metadata=SiSU_Metadata::Summary.new(@md).xhtml_scroll.metadata
- @@xml[:head] << metadata
+ @per.head << metadata
end
def name_tags(dob)
tags=''
@@ -228,15 +233,15 @@ WOK
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>')
util=SiSU_TextUtils::Wrap.new(dob.obj,70)
wrapped=util.line_wrap
- @@xml[:body] << if defined? dob.ocn
+ @per.body << if defined? dob.ocn
%{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
else "#{Ax[:tab]*0}<object>"
end
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="#{type}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} unless lv # main text, contents, body KEEP
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="h#{lv}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} if lv # main text, contents, body KEEP
- @@xml[:body] << @endnotes.compact.join if @endnotes.length > 0 # main text, endnotes KEEP
- @@xml[:body] << "#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>" if defined? dob.ocn
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
+ @per.body << %{#{Ax[:tab]*1}<text class="#{type}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} unless lv # main text, contents, body KEEP
+ @per.body << %{#{Ax[:tab]*1}<text class="h#{lv}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} if lv # main text, contents, body KEEP
+ @per.body << @endnotes.compact.join if @endnotes.length > 0 # main text, endnotes KEEP
+ @per.body << "#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>" if defined? dob.ocn
+ @per.body << "#{Ax[:tab]*0}</object>"
@endnotes=[]
end
end
@@ -246,12 +251,12 @@ WOK
dob.obj=dob.obj.strip.
gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="block">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
+ @per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
+ @per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
+ @per.body << %{#{Ax[:tab]*1}<text class="block">#{named}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*1}</text>}
+ @per.body << "#{Ax[:tab]*0}</object>"
end
def group_structure(dob)
named=name_tags(dob)
@@ -259,42 +264,42 @@ WOK
dob.obj=dob.obj.strip.
gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="group">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
+ @per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
+ @per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
+ @per.body << %{#{Ax[:tab]*1}<text class="group">#{named}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*1}</text>}
+ @per.body << "#{Ax[:tab]*0}</object>"
end
def poem_structure(dob)
named=name_tags(dob)
dob=@trans.markup_group(dob)
dob.obj=dob.obj.strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="verse">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
+ @per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
+ @per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
+ @per.body << %{#{Ax[:tab]*1}<text class="verse">#{named}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*1}</text>}
+ @per.body << "#{Ax[:tab]*0}</object>"
end
def code_structure(dob)
named=name_tags(dob)
dob=@trans.markup_group(dob)
dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="code">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
+ @per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
+ @per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
+ @per.body << %{#{Ax[:tab]*1}<text class="code">#{named}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
+ @per.body << %{#{Ax[:tab]*1}</text>}
+ @per.body << "#{Ax[:tab]*0}</object>"
end
def table_structure(dob)
named=name_tags(dob)
table=SiSU_XHTML_Shared::TableXHTML.new(dob)
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*2}#{named}#{table.table.obj}}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
+ @per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
+ @per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
+ @per.body << %{#{Ax[:tab]*2}#{named}#{table.table.obj}}
+ @per.body << "#{Ax[:tab]*0}</object>"
end
def markup(data)
@endnotes=[]
@@ -370,39 +375,38 @@ WOK
end
6.downto(4) do |x|
y=x - 1; v=x - 3
- @@xml[:body] << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true
+ @per.body << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true
end
3.downto(1) do |x|
y=x - 1
- @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true
+ @per.body << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true
end
end
def pre
rdf=SiSU_XML_Tags::RDF.new(@md)
- @@xml[:head],@@xml[:body]=[],[]
+ @per.head,@per.body=[],[]
stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xhtml').stylesheet
encoding=(@sys.locale =~/utf-?8/i) \
? '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
: '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
- @@xml[:open] =<<WOK
+ @per.open =<<WOK
#{encoding}
#{stylesheet.css_head_xml}
#{rdf.comment_xml}
<document>
WOK
- @@xml[:head] << %{<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />}
- @@xml[:body] << '<body>'
+ @per.head << %{<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />}
+ @per.body << '<body>'
end
def post
- @@xml[:head] << '</head>'
- @@xml[:body] << '</body>'
- @@xml[:close] = '</document>'
+ @per.head << '</head>'
+ @per.body << '</body>'
+ @per.close = '</document>'
end
def publish
content=[]
- content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
- content << @@xml[:owner_details] if @md.stmp =~/\w\w/
- content << @@xml[:tail] << @@xml[:close]
+ content << @per.open << @per.head << @per.body << @per.metadata
+ content << @per.tail << @per.close
content=content.flatten.compact
Output.new(content,@md).xhtml
@@xml={}
@@ -440,11 +444,11 @@ WOK
'check document structure'
).colorize
tell=SiSU_Screen::Ansi.new(
- @md.opt.act[:color_state][:set],
- 'invert',
- '',
- ''
- )
+ @md.opt.act[:color_state][:set],
+ 'invert',
+ '',
+ ''
+ )
tell.grey_open
end
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags