Method: Deplate::Counters#def_counter

Defined in:
lib/deplate/counters.rb

#def_counter(name, args = {}) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/deplate/counters.rb', line 15

def def_counter(name, args={})
    parent_counter = args[:parent]
    if parent_counter
        parent, parent_level = parent_counter.split(/[.,:;@-_<> ]+/)
        parent_level = parent_level.to_i
        if parent_level > 0
            parent_level -= 1
        end
        pc = @counters[parent]
        if pc
            pc[:children] << {:name => name, :level => parent_level}
        else
            Deplate::Core.log(['Unknown counter', pc], :error)
        end
    else
        parent = nil
        parent_level = nil
    end
    init = args[:init] || [0]
    @counters[name] = {
        :value        => init.dup,
        :init         => init.dup,
        :children     => [],
        :parent       => parent,
        :parent_level => parent_level,
    }
end