Class: Penchant::PropertyStackProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/penchant/property_stack_processor.rb

Instance Method Summary collapse

Constructor Details

#initialize(builder) ⇒ PropertyStackProcessor

Returns a new instance of PropertyStackProcessor.



3
4
5
# File 'lib/penchant/property_stack_processor.rb', line 3

def initialize(builder)
  @builder = builder
end

Instance Method Details

#process(gem_name, stack) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/penchant/property_stack_processor.rb', line 7

def process(gem_name, stack)
  properties = {}
  property_stack = stack.dup.to_a

  while !property_stack.empty?
    key, value = property_stack.shift

    if property = @builder[key]
      property_stack += property.process([ value ].flatten)
    else
      value = value % gem_name if value.respond_to?(:%)

      properties[key] = value
    end
  end

  properties
end