Module: Libis::Tools::ParameterContainer::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#parameter(options = {}) ⇒ Object



187
188
189
190
191
192
193
194
195
196
197
# File 'lib/libis/tools/parameter.rb', line 187

def parameter(options = {})
  return self.parameter_defs[options] unless options.is_a? Hash
  return nil if options.keys.empty?
  param_def = options.shift
  name = param_def.first.to_s.to_sym
  default = param_def.last
  param = (self.parameter_defs[name] ||= Parameter.new(name, default))
  options[:default] = default
  options.each { |key, value| param[key] = value if value }
  param
end

#parameter_defsObject



169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/libis/tools/parameter.rb', line 169

def parameter_defs
  return @parameters if @parameters
  @parameters = Hash.new
  begin
    self.superclass.parameter_defs.
        each_with_object(@parameters) do |(name, param), hash|
      if hash.has_key?(name)
        hash[name].merge!(param)
      else
        hash[name] = param.dup
      end
    end
  rescue NoMethodError
    # ignored
  end
  @parameters
end