Class: IsoDoc::XrefGen::Counter
- Inherits:
-
Object
- Object
- IsoDoc::XrefGen::Counter
- Defined in:
- lib/isodoc/xref/xref_counter.rb
Instance Method Summary collapse
- #increment(node) ⇒ Object
-
#initialize ⇒ Counter
constructor
A new instance of Counter.
- #listlabel(depth) ⇒ Object
- #new_subseq_increment(node) ⇒ Object
- #print ⇒ Object
- #sequence_increment(node) ⇒ Object
- #subsequence_increment(node) ⇒ Object
Constructor Details
#initialize ⇒ Counter
Returns a new instance of Counter.
5 6 7 8 9 10 11 12 |
# File 'lib/isodoc/xref/xref_counter.rb', line 5 def initialize @num = 0 @letter = "" @subseq = "" @letter_override = nil @number_override = nil @base = "" end |
Instance Method Details
#increment(node) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/isodoc/xref/xref_counter.rb', line 61 def increment(node) return self if node["unnumbered"] @letter_override = nil @number_override = nil if node["subsequence"] != @subseq new_subseq_increment(node) elsif @letter.empty? sequence_increment(node) else subsequence_increment(node) end self end |
#listlabel(depth) ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'lib/isodoc/xref/xref_counter.rb', line 79 def listlabel(depth) return @num.to_s if [2, 7].include? depth return (96 + @num).chr.to_s if [1, 6].include? depth return (64 + @num).chr.to_s if [4, 9].include? depth return RomanNumerals.to_roman(@num).downcase if [3, 8].include? depth return RomanNumerals.to_roman(@num).upcase if [5, 10].include? depth return @num.to_s end |
#new_subseq_increment(node) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/isodoc/xref/xref_counter.rb', line 14 def new_subseq_increment(node) @subseq = node["subsequence"] @num += 1 @letter = node["subsequence"] ? "a" : "" @base = "" if node["number"] /^(?<b>.*?)(?<n>\d*)(?<a>[a-z]*)$/ =~ node["number"] if !n.empty? || !a.empty? @letter_override = @letter = a unless a.empty? @number_override = @num = n.to_i unless n.empty? @base = b else @letter_override = node["number"] @letter = @letter_override if /^[a-z]$/.match(@letter_override) end end end |
#print ⇒ Object
75 76 77 |
# File 'lib/isodoc/xref/xref_counter.rb', line 75 def print "#{@base}#{@number_override || @num}#{@letter_override || @letter}" end |
#sequence_increment(node) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/isodoc/xref/xref_counter.rb', line 32 def sequence_increment(node) if node["number"] @base = "" @number_override = node["number"] /^(?<b>.*?)(?<n>\d+)$/ =~ node["number"] unless n.nil? || n.empty? @num = n.to_i @base = b end else @num += 1 end end |
#subsequence_increment(node) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/isodoc/xref/xref_counter.rb', line 46 def subsequence_increment(node) if node["number"] @base = "" @letter_override = node["number"] /^(?<b>.*?)(?<n>\d*)(?<a>[a-z]+)$/ =~ node["number"] unless a.empty? @letter = a @base = b @number_override = @num = n.to_i unless n.empty? end else @letter = (@letter.ord + 1).chr.to_s end end |