class ParamsParser::Parser

Attributes

config[R]

Public Class Methods

new(config) click to toggle source
# File lib/params_parser.rb, line 7
def initialize(config)
  @config = Hash[config.map do |(key, param_config)|
    [key, ParamConfig.new(key, param_config)]
  end]
end

Public Instance Methods

parse(params) click to toggle source
# File lib/params_parser.rb, line 13
def parse(params)
  params.class.new.tap do |parsed_params|
    config.each do |(key, param_config)|
      if params[key]
        parsed_params[param_config.key] = param_config.transform.call(params[key])
      end

      parsed_params[param_config.key] ||= param_config.default if param_config.has_default?
    end
  end
end
to_proc() click to toggle source
# File lib/params_parser.rb, line 25
def to_proc
  public_method(:parse)
end