Class: Kafo::Param

Inherits:
Object
  • Object
show all
Defined in:
lib/kafo/param.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(builder, name) ⇒ Param

Returns a new instance of Param.



10
11
12
13
# File 'lib/kafo/param.rb', line 10

def initialize(builder, name)
  @name   = name
  @module = builder
end

Instance Attribute Details

#conditionObject

Returns the value of attribute condition.



7
8
9
# File 'lib/kafo/param.rb', line 7

def condition
  @condition
end

#defaultObject

Returns the value of attribute default.



7
8
9
# File 'lib/kafo/param.rb', line 7

def default
  @default
end

#docObject

Returns the value of attribute doc.



7
8
9
# File 'lib/kafo/param.rb', line 7

def doc
  @doc
end

#groupsObject



15
16
17
# File 'lib/kafo/param.rb', line 15

def groups
  @groups || []
end

#moduleObject (readonly)

Returns the value of attribute module.



6
7
8
# File 'lib/kafo/param.rb', line 6

def module
  @module
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/kafo/param.rb', line 6

def name
  @name
end

#value_setObject

Returns the value of attribute value_set.



7
8
9
# File 'lib/kafo/param.rb', line 7

def value_set
  @value_set
end

Instance Method Details

#<=>(o) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/kafo/param.rb', line 86

def <=> o
  unless KafoConfigure.config.app[:no_prefix]
    r = self.module_name <=> o.module_name
    return r unless r == 0
  end
  self.name <=> o.name
end

#condition_valueObject



98
99
100
# File 'lib/kafo/param.rb', line 98

def condition_value
  value.to_s
end

#dump_defaultObject



29
30
31
# File 'lib/kafo/param.rb', line 29

def dump_default
  default
end

#module_nameObject



33
34
35
# File 'lib/kafo/param.rb', line 33

def module_name
  self.module.name
end

#multivalued?Boolean

To be overwritten in children

Returns:

  • (Boolean)


82
83
84
# File 'lib/kafo/param.rb', line 82

def multivalued?
  false
end

#set_default(defaults) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/kafo/param.rb', line 41

def set_default(defaults)
  if default == 'UNSET'
    self.value = nil
  else
    self.value = (value = defaults[default]) == :undef ? nil : value
  end
end

#set_value_by_config(config) ⇒ Object



49
50
51
52
# File 'lib/kafo/param.rb', line 49

def set_value_by_config(config)
  base       = config[module_name]
  self.value = base[name] if base.has_key?(name)
end

#to_sObject



37
38
39
# File 'lib/kafo/param.rb', line 37

def to_s
  "#<#{self.class}:#{self.object_id} @name=#{name.inspect} @default=#{default.inspect} @value=#{value.inspect}>"
end

#valid?Boolean

Returns:

  • (Boolean)


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/kafo/param.rb', line 54

def valid?
  validations = self.module.validations(self)
  # we get validations that can also run on other arguments, we need to take only current param
  # also we want to clone validations so we don't interfere
  validations.map! do |v|
    v = v.clone
    if v.name == 'validate_re'
      # validate_re does not take more variables as arguments, instead we need to pass all arguments
      args = v.arguments
    else
      args = v.arguments.select { |a| a.to_s == "$#{self.name}" }
    end
    v.arguments = Puppet::Parser::AST::ASTArray.new :children => args
    v
  end

  validator = Validator.new([self])
  validations.map! do |v|
    result = v.evaluate(validator)
    # validate_re returns nil if succeeds
    result = true if v.name == 'validate_re' && result.nil?
    result
  end

  validations.all?
end

#valueObject

we use @value_set flag because even nil can be valid value



20
21
22
# File 'lib/kafo/param.rb', line 20

def value
  @value_set ? @value : default
end

#value=(value) ⇒ Object



24
25
26
27
# File 'lib/kafo/param.rb', line 24

def value=(value)
  @value_set = true
  @value     = value == 'UNDEF' ? nil : value
end

#visible?(context = []) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/kafo/param.rb', line 94

def visible?(context = [])
  condition.nil? || condition.empty? ? true : evaluate_condition(context)
end