class SiSU_HTML_Scroll::Scroll

Public Class Methods

new(md='',data='',endnotes='') click to toggle source
# File lib/sisu/html_scroll.rb, line 61
def initialize(md='',data='',endnotes='')
  @md,@data,@endnotes=md,data,endnotes
end

Public Instance Methods

songsheet() click to toggle source
# File lib/sisu/html_scroll.rb, line 64
def songsheet
  begin
    scr=SiSU_HTML_Scroll::Scroll.new(@md,@data,@endnotes).markup
    scr[:tails]=SiSU_HTML_Scroll::Scroll.new(@md).tails
    scr
  rescue
    SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
      __LINE__.to_s + ':' + __FILE__
    end
  ensure
  end
end

Protected Instance Methods

markup() click to toggle source
# File lib/sisu/html_scroll.rb, line 77
def markup
  data=@data
  @rcdc=false
  @scr={ body: [], metadata: [], owner_details: [] }
  data.each do |dob|
    dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m,
      @md.file.output_path.html_scroll.rel_image)
    if defined? dob.name and dob.name =~/^meta/ \
    and dob.obj =~/Document Information/
      dob.obj=dob.obj.
        gsub(/(Document Information(?: \(metadata\))?)/,
          '\1<a name="docinfo"></a>')
    end
    if dob.obj =~/^Metadata$/ \
    and dob.lv =='B'
      dob.obj=dob.obj.gsub(/Metadata/,'') #dob.obj=''
    end
    if defined? dob.name \
    and dob.name =~/^metadata/ \
    and dob.lv =='1' \
    and dob.obj =~/SiSU Metadata, document information/
      @rcdc=true
    end
    dob.obj=dob.obj.gsub(/href="[a-z0-9._-]+(#\S+?")/m,'href="\1'). # internal document links
      gsub(/href="#{Xx[:segment]}/m,'href="')
    if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]})/
      unless dob.is ==:code
        dob.obj=dob.obj.
          gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
      end
      if defined? dob.ocn
        @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
      end
      sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
      para_html=if dob.is==:heading
        x=if dob.ln==0
          sto.heading_body0
        elsif dob.ln==1
          sto.heading_body1
        elsif dob.ln==2
          sto.heading_body2
        elsif dob.ln==3
          sto.heading_body3
        elsif dob.ln==4
          sto.heading_body4
        elsif dob.ln==5
          sto.heading_body5
        elsif dob.ln==6
          sto.heading_body6
        elsif dob.ln==7
          sto.heading_body7
        end
      elsif dob.is==:break \
      and dob.from==:markup
        '<br><hr width=90% /><br>'
      elsif dob.is==:heading_insert
        x=if dob.ln==0
          unless dob.obj.empty?
            sto.heading_body0
          end
        elsif dob.ln==1
          unless dob.obj.empty?
            sto.heading_body1
          end
        elsif dob.ln==2
          unless dob.obj.empty?
            sto.heading_body2
          end
        elsif dob.ln==3
          unless dob.obj.empty?
            sto.heading_body3
          end
        elsif dob.ln==4 \
        and dob.obj !~/^(?:Endnotes|Index|Metadata|Manifest)$/
          unless dob.obj.empty?
            sto.heading_body4
          end
        elsif dob.ln==4 \
        and dob.obj=='Endnotes'
          sto.heading_body4
          @endnotes.join("\n")
        elsif dob.ln==4 \
        and dob.obj=='Index'
          sto.heading_body4
          book_idx=SiSU_Particulars::CombinedSingleton.
            instance.get_idx_html(@md.opt).html_idx
          book_idx.each do |y| #takes book index prepared for segments & strips segment identifying info
            y.gsub!(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,
              '<a href="#\1">\2</a>')
          end
          book_idx.join("\n")
        elsif dob.ln==5
          unless dob.obj.empty?
            sto.heading_body5
          end
        elsif dob.ln==6
          unless dob.obj.empty?
            sto.heading_body6
          end
        elsif dob.ln==7
          unless dob.obj.empty?
            sto.heading_body7
          end
        end
      elsif dob.is==:para
        if dob.indent \
        and dob.hang \
        and dob.indent =~/[0-9]/ \
        and dob.hang =~/[0-9]/
          if dob.bullet_
            (dob.indent =~/[1-9]/) \
            ? sto.format('li',"i#{dob.indent}")
            : sto.format('li','bullet')
          elsif dob.indent == dob.hang
            sto.format('p',"i#{dob.indent}")
          elsif dob.indent != dob.hang
            sto.format('p',"h#{dob.hang}i#{dob.indent}")
          else sto.para
          end
        else sto.para
        end
      elsif dob.is==:block
        sto.block
      elsif dob.is==:group
        sto.group
      elsif dob.is==:alt
        sto.alt
      elsif dob.is==:verse
        sto.verse
      elsif dob.is==:code
        sto.code
      elsif dob.is==:table
        sto.table
      elsif dob.is==:break
      end
      if dob =~/<a name="n\d+">/ \
      and dob =~/^(?:\^~\d+\s|<!e[:_]\d+!>)/ # hmmm re-adjusted 200507, for alt endnote which should again be matched ^~ ... not in response to problem though
        dob=''
      end
      unless @rcdc
        @scr[:body] << para_html unless para_html =~/\A\s*\Z/
      end
    end
  end
  @scr
end
tails() click to toggle source
# File lib/sisu/html_scroll.rb, line 223
def tails
  scr_tail=[]
  format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md)
  scr_tail \
  << format_head_scroll.scroll_tail \
  << format_head_scroll.html_close
  scr_tail
end