Module: Libis::Tools::ParameterContainer

Defined in:
lib/libis/tools/parameter.rb

Overview

Parameter

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

NO_VALUE =
'##NAV##'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



201
202
203
# File 'lib/libis/tools/parameter.rb', line 201

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#[](name) ⇒ Object



222
223
224
# File 'lib/libis/tools/parameter.rb', line 222

def [](name)
  parameter(name)
end

#[]=(name, value) ⇒ Object



226
227
228
229
230
# File 'lib/libis/tools/parameter.rb', line 226

def []=(name, value)
  parameter name, value
rescue ParameterFrozenError
  # ignored
end

#parameter(name, value = NO_VALUE) ⇒ Object



207
208
209
210
211
212
213
214
215
216
217
218
219
220
# File 'lib/libis/tools/parameter.rb', line 207

def parameter(name, value = NO_VALUE)
  param_def = get_parameter_definition(name)
  return NO_VALUE unless param_def
  if value.equal? NO_VALUE
    param_value = parameters[name]
    param_def.parse(param_value)
  else
    return NO_VALUE unless param_def.valid_value?(value)
    if param_def[:frozen]
      raise ParameterFrozenError, "Parameter '#{param_def[:name]}' is frozen in '#{self.class.name}'"
    end
    parameters[name] = value
  end
end