class SiSU_AO_Endnotes::Endnotes

Public Class Methods

new(md,data,endnote_array=nil) click to toggle source
# File lib/sisu/ao_endnotes.rb, line 57
def initialize(md,data,endnote_array=nil)
  @md,@data,@endnote_array=
  md, data, endnote_array
  @endnote_counter,
    @endnote_counter_asterisk,
    @endnote_counter_dag=
    1,1,1
end

Public Instance Methods

endnote_call_number(words) click to toggle source
# File lib/sisu/ao_endnotes.rb, line 104
def endnote_call_number(words)
  words.each do |word|
    case word
    when /#{Mx[:en_a_o]}/
      unless word =~/#{Mx[:en_a_o]}[*+]+/
        word.gsub!(/#{Mx[:en_a_o]}/,
          "#{Mx[:en_a_o]}#{@endnote_counter} ")
        @endnote_counter+=1
      end
    when /#{Mx[:en_b_o]}/
      if word =~/#{Mx[:en_b_o]}[+]/
        word.gsub!(/#{Mx[:en_b_o]}[+]/,
          "#{Mx[:en_b_o]}\+#{@endnote_counter_dag} ")
        @endnote_counter_dag+=1
      else
        word.gsub!(/#{Mx[:en_b_o]}[*]?/,
          "#{Mx[:en_b_o]}\*#{@endnote_counter_asterisk} ")
        @endnote_counter_asterisk+=1
      end
    when /~\^/
      if @endnote_array
        word.gsub!(/~\^/,
          "#{@endnote_array[@endnote_counter-1]}")
        @endnote_counter+=1
      end
    end
  end
end
endnotes() click to toggle source
# File lib/sisu/ao_endnotes.rb, line 65
def endnotes
  data=@data
  endnote_ref=1
  @tuned_file=data.each.map do |dob|
                                                                           # manually numbered endnotes <!e(\d)!> <!e_(\d)!> -->
    if @md.opt.selections.str =~/--no-asterisk|--no-annotate/
      dob.obj=dob.obj.
        gsub(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'')
    end
    if @md.opt.selections.str =~/--no-dagger|--no-annotate/
      dob.obj=dob.obj.
        gsub(/#{Mx[:en_b_o]}[+]\s.+?#{Mx[:en_b_c]}/,'')
    end
    if (defined? dob.obj) \
    && (defined? dob.is) \
    && dob.is !=:code
      case dob.obj                                                         # auto-numbered endnotes <!e!> <!e_!> -->
      when /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}[*+]\s+.+?#{Mx[:en_b_c]}/
        dob.obj=dob.obj.
          gsub(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,'\1')
        word_mode=dob.obj.scan(/\S+/m)
        word_mode=endnote_call_number(word_mode)
        dob.obj=word_mode.join(' ')
        endnote_ref+=1
      when /~\^(?:\s|$)/                                              #%note inserts endnotes previously gathered from /^(<!e[:_]!>|[-~]\{{3})/ (in earlier loop)
        word_mode=dob.obj.scan(/\S+/m)
        word_mode=endnote_call_number(word_mode)
        dob.obj=word_mode.join(' ')
        endnote_ref+=1
      end
    end
    dob
  end.flatten
  @endnote_counter,
    @endnote_counter_asterisk,
    @endnote_counter_dag=
    1,1,1
  @tuned_file
end