class SiSU_FormatShared::CSS_Format

Public Class Methods

new(md,t_o) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 62
def initialize(md,t_o)
  @md,@t_o=md,t_o
  @txt=@t_o.obj
  @id=@ocn=@t_o.ocn if defined? @t_o.ocn
  @lv=@t_o.lv.to_s if @t_o.is==:heading
  if @md.fns != @@fns
    @@fns,@@hname=@md.fns,''
  end
  @hname=if defined? @t_o.name \
  and not @t_o.name.to_s.empty?
    @@hname=@t_o.name
  else @@hname
  end
  @tab="\t"
  @@tablehead,@@tablefoot=[],[]
  @env=SiSU_Env::InfoEnv.new(@md.fns)
  @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
end

Public Instance Methods

code() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 229
def code
  txt=markup_object(@t_o)
  h={ txt: "<tt>#{txt}</tt>", class: 'code', type: 'substantive', id: @ocn }
  tag_para(h)
end
endnote(nr,en) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 189
    def endnote(nr,en) #used only by db
      txt=markup_note(en)
      <<GSUB
<p class="endnote" name="note_#{nr}" from="#{@t_o.ocn}">
<a href="#{@base_url}#-#{nr}" name="_#{nr}">#{nr}.</a> <note>#{txt}</note>
</p>
GSUB
    end
hang_indent(f,t) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 239
def hang_indent(f,t)
  txt=markup_object(@t_o)
  h={ txt: txt, class: "hang#{f}indent#{t}", type: 'substantive', id: @ocn }
  #h={ txt: txt, class: "h#{f}i#{t}", type: 'substantive', id: @ocn }
  tag_para(h)
end
html_table() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 251
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=parablock.gsub(/<!f.+?!>/,'')
    @@tablehead=1 if parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
    parablock=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" 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=parablock.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,
        %{#{the_table_close}\n}) # +
    end
    if @@tablehead==1
      if parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
        parablock=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>}).
          gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
            %{</b></td><td width="\\1%" valign="top">} +
            %{#{para_table}<b>}).
          gsub(/#{Mx[:tc_c]}/, '</b></td></tr>')
        @@tablehead=0
      end
      parablock
    else
      parablock=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}}).
        gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
          %{</td><td width="\\1%" valign="top">} +
          %{#{para_table}}).
        gsub(/#{Mx[:tc_c]}/, '</td></tr>')
      parablock
    end
    @new_content << parablock
  end
  @new_content.join
end
indent(t) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 234
def indent(t)
  txt=markup_object(@t_o)
  h={ txt: txt, class: "indent#{t}", type: 'substantive', id: @ocn }
  tag_para(h)
end
lev4_minus() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 215
def lev4_minus
  txt=markup_object(@t_o)
  h={ txt: txt, class: "h#{@t_o.ln}", type: 'substantive', id: @ocn }
  tag_para(h)
end
lev4_plus() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 210
def lev4_plus
  txt=markup_object(@t_o)
  h={ txt: txt, class: "h#{@lv}", type: 'substantive', id: @ocn, header: @hname }
  tag_header(h)
end
lev_toc() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 206
def lev_toc
  h={ txt: txt, class: "toc#{@lv}", type: 'toc' }
  tag_para(h)
end
lev_toc_hname() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 203
def lev_toc_hname
  %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">#{@txt}</a></p>\n}  #<< "\n"
end
markup_generic(s) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 141
def markup_generic(s)
  s=s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>').
    gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>').
    gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>').
    gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
    gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
    gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
    gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>').
    gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>').
    gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd
    gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
end
markup_note(s) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 173
def markup_note(s)
  s=markup_generic(s)
  if s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
    wm=s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)|\S+/)
    words=urls(wm)
    s=s.gsub(/.+/m,words)
  end
  s=s.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
    gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;').
    gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>\2'). #http ftp matches escaped, no decoration
    gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>'). #special case \{ e.g. \}http://url
    gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{the_url_decoration.xml_open}<a href="\\1" target="_top">\\1</a>#{the_url_decoration.xml_close}}) #http ftp matches with decoration
end
markup_object(t_o) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 153
def markup_object(t_o)
  s=t_o.obj
  s=if t_o.is !=:code
    s=markup_generic(s)
    if s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
      wm=s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)|\S+/)
      words=urls(wm)
      s=s.gsub(/.+/m,words)
    end
    s.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
      gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;').
      gsub(/#{Mx[:url_o]}[_\\](\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>'). #http ftp matches escaped, no decoration
      gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>'). #special case \{ e.g. \}http://url
      gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{\\1#{the_url_decoration.xml_open}<a href="\\2" target="_top">\\2</a>#{the_url_decoration.xml_close}\\3}) #http ftp matches with decoration
  else
    s.gsub(/</m,'&lt;').
      gsub(/>/m,'&gt;')
  end
  s
end
norm() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 224
def norm
  txt=markup_object(@t_o)
  h={ txt: txt, class: 'norm', type: 'substantive', id: @ocn }
  tag_para(h)
end
norm_comment() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 220
def norm_comment
  h={ txt: @t_o.obj, class: 'norm', type: 'comment' }
  tag_para(h)
end
ocn() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 248
def ocn
  %{<label class="ocn">#{@ocn}</label>} << "\n"
end
para_table() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 245
def para_table
  %{<p class="norm" align="left"><font #{the_font.set_small} #{the_font.set_color} #{the_font.set_face}>}
end
paragraph() click to toggle source
# File lib/sisu/html_lite_shared.rb, line 186
def paragraph
  %{<p class="h#{@lv}" type="substantive" header="#{@hname}">#{@txt}</p>\n} # << "\n"
end
tag_header(h) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 197
def tag_header(h)
  %{<p class="#{h[:class]}" type="#{h[:type]}" header="#{h[:header]}">#{h[:txt]}</a></p>\n} # << "\n"
end
tag_para(h) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 200
def tag_para(h)
  %{<p class="#{h[:class]}" type="#{h[:type]}">#{h[:txt]}</a></p>\n}  << "\n"
end
urls(data) click to toggle source
# File lib/sisu/html_lite_shared.rb, line 80
def urls(data)
  @words=[]
  map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map
  data.each do |word|
    @words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
      if word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
        m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/.match(word).captures
      elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
        m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/.match(word).captures
      elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image/
        m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(image)/.match(word).captures
      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]
        ins=if u \
        and u.strip !~/^image$/
          %{<a href="#{u}">[#{png}]</a>#{caption}}
        else %{[#{png}] #{caption}}
        end
        word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
      else
        u=case u
        when /^https?:\/\//
          u
        when /^:/
          u=u.gsub(/^:/,'')
          "#{@env.url.root}/#{u}"
        when /^\.\.\// # can remove
          u=u.gsub(/^\.\.\//,'')
          "#{@env.url.root}/#{u}"
        else
          if not map_nametags[u].nil?
            @env.url.root + '/' \
            + @md.fnb + '/' \
            + map_nametags[u][:segname] \
            + Sfx[:html] \
            + '#' + u
          else ''
          end
        end
        link=m[/(.+)/m]
        png=m.scan(/\S+/)[0].strip
        link=link.strip
        ins=%{<a href="#{u}">#{link}</a>}
        word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
          gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
        word
      end
      word
    else word
    end
    word
  end
  @words=@words.join(' ')
end