class Snmp2mkr::ConfigTypes::ValueDefinition

Attributes

name[R]
type[R]
value[R]

Public Instance Methods

collect_children() click to toggle source
# File lib/snmp2mkr/config_types/value_definition.rb, line 45
def collect_children
  [@value]
end
evaluate(context: binded_context, previous: nil) click to toggle source
# File lib/snmp2mkr/config_types/value_definition.rb, line 36
def evaluate(context: binded_context, previous: nil)
  case @type
  when 'string'
    @value.evaluate
  when 'array_append'
    [*previous, @value.evaluate]
  end
end
setup(kv) click to toggle source
# File lib/snmp2mkr/config_types/value_definition.rb, line 10
def setup(kv)
  raise TypeError, "#{self.class} must be given an Array (BUG?)" unless kv.kind_of?(Array) && kv.size == 2
  k, v = kv
  @name = k

  raise ArgumentError, "#{self.class} key must be String" unless k.kind_of?(String)
  raise ArgumentError, "#{self.class} value must be String or Hash" unless v.kind_of?(String) || v.kind_of?(Hash)

  if v.kind_of?(String)
    v = {'value' => TemplateString.new(v), 'type' => 'string'}
  end

  @type = v.fetch('type')
  raise TypeError, "#{self.class} value, key 'type' must be a String" unless @type.kind_of?(String)

  case @type
  when 'array_append', 'string'
    @value = v['value']
    @value = TemplateString.new(v['value']) if @value.kind_of?(String)
  else
    raise ArgumentError, "#{self.class} doesn't know type #{@type.inspect}"
  end
end