class ReVIEW::SecCounter
Secion Counter class
Public Class Methods
new(n, chapter)
click to toggle source
# File lib/review/sec_counter.rb, line 13 def initialize(n, chapter) @chapter = chapter reset(n) end
Public Instance Methods
anchor(level)
click to toggle source
# File lib/review/sec_counter.rb, line 32 def anchor(level) str = @chapter.format_number(false) 0.upto(level - 2) do |i| str << "-#{@counter[i]}" end str end
inc(level)
click to toggle source
# File lib/review/sec_counter.rb, line 22 def inc(level) n = level - 2 @counter[n] += 1 if n >= 0 if @counter.size > n (n + 1..@counter.size).each do |i| @counter[i] = 0 end end end
number_list()
click to toggle source
# File lib/review/sec_counter.rb, line 40 def number_list buf = @counter.dup while buf.present? if buf.last == 0 buf.pop else return buf end end buf end
prefix(level, secnolevel)
click to toggle source
# File lib/review/sec_counter.rb, line 53 def prefix(level, secnolevel) return nil if @chapter.number.blank? if level == 1 return nil unless secnolevel >= 1 if @chapter.is_a?(ReVIEW::Book::Part) num = @chapter.number "#{I18n.t('part', num)}#{I18n.t('chapter_postfix')}" else "#{@chapter.format_number}#{I18n.t('chapter_postfix')}" end elsif secnolevel >= level prefix = if @chapter.is_a?(ReVIEW::Book::Part) I18n.t('part_short', @chapter.number) else @chapter.format_number(false) end 0.upto(level - 2) { |i| prefix << ".#{@counter[i]}" } prefix << I18n.t('chapter_postfix') prefix end end
reset(n)
click to toggle source
# File lib/review/sec_counter.rb, line 18 def reset(n) @counter = Array.new(n, 0) end