class Moguro::Extractor::ArgumentsExtractor

Public Class Methods

new(parameters) click to toggle source
# File lib/moguro/extractors/arguments_extractor.rb, line 6
def initialize(parameters)
  @parameters = parameters
end

Public Instance Methods

extract(args) click to toggle source
# File lib/moguro/extractors/arguments_extractor.rb, line 10
def extract(args)
  opt = args.last.is_a?(Hash) ? args.last : nil
  @parameters.each_with_object(Values.new).with_index do |(params, values), i|
    arg_type = params[0]
    key = params[1]
    case arg_type
    when :req
      val = args[i]
      values.add_value(key, val)
    when :keyreq
      if opt&.key?(key)
        val = opt[key]
        values.add_value(key, val)
      else
        values.add_value(key, val, missing: true)
      end
    when :key
      val = opt[key]
      values.add_value(key, val)
    when :opt
      values.add_value(key, args[i])
    end
  end
end