Sha256: 99b2cde7bf43a1351b20d9ec66f1dd36016138e38f6183b0d5e06f0dd0b62463

Contents?: true

Size: 629 Bytes

Versions: 4

Compression:

Stored size: 629 Bytes

Contents

module BuildMaster
class Attribute
  def initialize(expression_evaluator, properties = {})
    @evaluator = expression_evaluator
    @properties = properties
  end
  
  def process(target, template, source)
    name = template.attribute_value!('name')
    eval = template.attribute_value!('eval')
    result = nil
    if (@evaluator.respond_to?(eval))
      result = @evaluator.send(eval, source)
    else
      result = @properties[eval]
      raise TemplateError.new(template), '#{@evaluator.class} cannot evaluate expression #{eval}' unless result
    end
    target.attributes[name] = result
  end
end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
BuildMaster-1.0.6 lib/buildmaster/site/templatelets/attribute.rb
BuildMaster-1.0.9 lib/buildmaster/site/templatelets/attribute.rb
BuildMaster-1.1.12 lib/buildmaster/site/templatelets/attribute.rb
BuildMaster-1.1.9 lib/buildmaster/site/templatelets/attribute.rb