Sha256: 6c5a4509596c1424474324456fc449d55eea830dbf7ae151e2428bf9f782473e
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
module Nugrant class ParameterBag def initialize(parameters) if parameters == nil return end @bag = {} @defaults = {} parameters.each do |key, value| if key == "defaults" raise ArgumentError, "The key 'defaults' has restricted usage and cannot be defined" end if not value.is_a?(Hash) @bag[key] = value next end # It is a hash, transform it into a bag @bag[key] = Nugrant::ParameterBag.new(value) end end def [](param_name) return get_param(param_name) end def method_missing(method, *args, &block) return get_param(method.to_s) end def has_param?(param_name) return @bag != nil && @bag.has_key?(param_name) end def get_param(param_name) if not has_param?(param_name) if @defaults[param_name] return @defaults[param_name] end raise KeyError, "Undefined parameter '#{param_name}'" end return @bag[param_name] end def get_params() return @bag end def defaults(parameters) parameters.each do |key, value| if value.is_a?(Hash) and has_param?(key) @bag[key].defaults(value) end end @defaults = Nugrant::ParameterBag.new(parameters) end def defaults=(parameters) defaults(parameters) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nugrant-0.0.12 | lib/nugrant/parameter_bag.rb |
nugrant-0.0.11 | lib/nugrant/parameter_bag.rb |