Class: Kafo::Param
- Inherits:
-
Object
- Object
- Kafo::Param
- Defined in:
- lib/kafo/param.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#condition ⇒ Object
Returns the value of attribute condition.
-
#default ⇒ Object
Returns the value of attribute default.
-
#doc ⇒ Object
Returns the value of attribute doc.
- #groups ⇒ Object
-
#module ⇒ Object
readonly
Returns the value of attribute module.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
-
#value_set ⇒ Object
Returns the value of attribute value_set.
Instance Method Summary collapse
- #<=>(o) ⇒ Object
- #condition_value ⇒ Object
- #dump_default ⇒ Object
-
#initialize(builder, name, type) ⇒ Param
constructor
A new instance of Param.
- #module_name ⇒ Object
- #multivalued? ⇒ Boolean
- #set_default(defaults) ⇒ Object
- #set_value_by_config(config) ⇒ Object
- #to_s ⇒ Object
- #unset_value ⇒ Object
- #valid? ⇒ Boolean
- #validation_errors ⇒ Object
-
#value ⇒ Object
we use @value_set flag because even nil can be valid value.
- #value=(value) ⇒ Object
- #visible?(context = []) ⇒ Boolean
Constructor Details
#initialize(builder, name, type) ⇒ Param
Returns a new instance of Param.
11 12 13 14 15 |
# File 'lib/kafo/param.rb', line 11 def initialize(builder, name, type) @name = name @module = builder @type = DataType.new_from_string(type) end |
Instance Attribute Details
#condition ⇒ Object
Returns the value of attribute condition.
8 9 10 |
# File 'lib/kafo/param.rb', line 8 def condition @condition end |
#default ⇒ Object
Returns the value of attribute default.
8 9 10 |
# File 'lib/kafo/param.rb', line 8 def default @default end |
#doc ⇒ Object
Returns the value of attribute doc.
8 9 10 |
# File 'lib/kafo/param.rb', line 8 def doc @doc end |
#groups ⇒ Object
17 18 19 |
# File 'lib/kafo/param.rb', line 17 def groups @groups || [] end |
#module ⇒ Object (readonly)
Returns the value of attribute module.
7 8 9 |
# File 'lib/kafo/param.rb', line 7 def module @module end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/kafo/param.rb', line 7 def name @name end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
7 8 9 |
# File 'lib/kafo/param.rb', line 7 def type @type end |
#value_set ⇒ Object
Returns the value of attribute value_set.
8 9 10 |
# File 'lib/kafo/param.rb', line 8 def value_set @value_set end |
Instance Method Details
#<=>(o) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/kafo/param.rb', line 111 def <=> o unless @module.configuration.app[:no_prefix] r = self.module_name <=> o.module_name return r unless r == 0 end self.name <=> o.name end |
#condition_value ⇒ Object
123 124 125 |
# File 'lib/kafo/param.rb', line 123 def condition_value @type.condition_value(value) end |
#dump_default ⇒ Object
37 38 39 |
# File 'lib/kafo/param.rb', line 37 def dump_default @type.dump_default(default) end |
#module_name ⇒ Object
41 42 43 |
# File 'lib/kafo/param.rb', line 41 def module_name self.module.name end |
#multivalued? ⇒ Boolean
107 108 109 |
# File 'lib/kafo/param.rb', line 107 def multivalued? @type.multivalued? end |
#set_default(defaults) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/kafo/param.rb', line 49 def set_default(defaults) if default == 'UNSET' self.default = nil else # if we don't have default value from dump (can happen for modules added from hooks, # or without using a params class), the existing default value from the manifest will # be used. On calling #value, the default will be returned if no overriding value is set. value = defaults.has_key?(default) ? defaults[default] : default case value when :undef # value can be set to :undef if value is not defined # (e.g. puppetmaster = $::puppetmaster which is not defined yet) self.default = nil when :undefined # in puppet 2.7 :undefined means that it's param which value is # not set by another parameter (e.g. foreman_group = 'something') # which means, default is sensible unlike dumped default # newer puppet has default dump in format 'value' => 'value' so # it's handled correctly by else branch else self.default = value end end end |
#set_value_by_config(config) ⇒ Object
74 75 76 77 |
# File 'lib/kafo/param.rb', line 74 def set_value_by_config(config) base = config[self.module.class_name] self.value = base[name] if base.has_key?(name) end |
#to_s ⇒ Object
45 46 47 |
# File 'lib/kafo/param.rb', line 45 def to_s "#<#{self.class}:#{self.object_id} @name=#{name.inspect} @default=#{default.inspect} @value=#{value.inspect} @type=#{@type}>" end |
#unset_value ⇒ Object
32 33 34 35 |
# File 'lib/kafo/param.rb', line 32 def unset_value @value_set = false @value = nil end |
#valid? ⇒ Boolean
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/kafo/param.rb', line 79 def valid? # 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 = self.module.validations(self).map do |v| # These functions do not take more variables as arguments, instead we need to pass all arguments if v.name == 'validate_re' || v.name == 'validate_integer' args = v.arguments.to_a else args = v.arguments.select { |a| a.to_s == "$#{self.name}" } end {:name => v.name, :arguments => interpret_validation_args(args)} end # run old style validation functions @validator = Validator.new validations.each { |v| @validator.send(v[:name], v[:arguments]) } @validation_errors = @validator.errors.dup # run data type based validations, append errors @type.valid?(value, @validation_errors) @validation_errors.empty? end |
#validation_errors ⇒ Object
103 104 105 |
# File 'lib/kafo/param.rb', line 103 def validation_errors @validation_errors || [] end |
#value ⇒ Object
we use @value_set flag because even nil can be valid value
22 23 24 |
# File 'lib/kafo/param.rb', line 22 def value @value_set ? @type.typecast(@value) : default end |
#value=(value) ⇒ Object
26 27 28 29 30 |
# File 'lib/kafo/param.rb', line 26 def value=(value) @value_set = true value = value.to_s if value.is_a?(::HighLine::String) # don't persist highline extensions @value = value end |
#visible?(context = []) ⇒ Boolean
119 120 121 |
# File 'lib/kafo/param.rb', line 119 def visible?(context = []) condition.nil? || condition.empty? ? true : evaluate_condition(context) end |