Class: ReVIEW::SecCounter

Inherits:
Object show all
Defined in:
lib/review/sec_counter.rb

Overview

Secion Counter class

Instance Method Summary collapse

Constructor Details

#initialize(n, chapter) ⇒ SecCounter

Returns a new instance of SecCounter.



13
14
15
16
# File 'lib/review/sec_counter.rb', line 13

def initialize(n, chapter)
  @chapter = chapter
  reset(n)
end

Instance Method Details

#anchor(level) ⇒ Object



32
33
34
35
36
37
38
# 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) ⇒ Object



22
23
24
25
26
27
28
29
30
# 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

#prefix(level, secnolevel) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/review/sec_counter.rb', line 40

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) ⇒ Object



18
19
20
# File 'lib/review/sec_counter.rb', line 18

def reset(n)
  @counter = Array.new(n, 0)
end