class ParamsCollector::Parser
Public Class Methods
new()
click to toggle source
# File lib/params_collector/parser.rb, line 36 def initialize @valid = {} @params = {} @defaults = {} end
register_marshaler(name, marshaler)
click to toggle source
# File lib/params_collector/parser.rb, line 28 def self.register_marshaler(name, marshaler) method_text = "def #{name}(key, default = nil) key = key.to_sym declare_params(key, default, #{marshaler}) end" Parser.module_eval(method_text) end
Public Instance Methods
[](name)
click to toggle source
# File lib/params_collector/parser.rb, line 53 def [](name) @params[name].value end
merge(params)
click to toggle source
# File lib/params_collector/parser.rb, line 64 def merge(params) new_parser = dup new_parser.parse(params) new_parser.to_hash end
parse(params)
click to toggle source
# File lib/params_collector/parser.rb, line 42 def parse(params) params.each do |key, value| key = key.to_sym prepare_param(key, value) if @params.key?(key) end end
to_hash()
click to toggle source
# File lib/params_collector/parser.rb, line 57 def to_hash @params.each_with_object({}) do |(key, marshaler), memo| memo[key] = marshaler.value if presentable?(key) memo end end
valid?()
click to toggle source
# File lib/params_collector/parser.rb, line 49 def valid? !@valid.any? { |_, value| value == false } end
Private Instance Methods
declare_params(key, default, marshaler)
click to toggle source
# File lib/params_collector/parser.rb, line 72 def declare_params(key, default, marshaler) marshaler_instance = marshaler.new marshaler_instance.set(default) @params[key] = marshaler_instance @defaults[key] = marshaler_instance.dup @valid[key] = !default.nil? end
different_than_default?(key)
click to toggle source
# File lib/params_collector/parser.rb, line 89 def different_than_default?(key) @params[key].value != @defaults[key].value end
prepare_param(key, value)
click to toggle source
# File lib/params_collector/parser.rb, line 80 def prepare_param(key, value) @params[key].set(value) @valid[key] = true end
presentable?(key)
click to toggle source
# File lib/params_collector/parser.rb, line 85 def presentable?(key) @valid[key] && different_than_default?(key) end