Method: Climate::ParsingMethods#check_arguments

Defined in:
lib/climate/parser.rb

#check_arguments(args, command = self) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/climate/parser.rb', line 44

def check_arguments(args, command=self)

  if args.size > cli_arguments.size
    raise UnexpectedArgumentError.new(command, "#{args.size} for #{cli_arguments.size}")
  end

  cli_arguments.zip(args).map do |argument, arg_value|
    if argument.required? && (arg_value.nil? || arg_value.empty?)
      raise MissingArgumentError.new(command, argument.name)
    end

    # no arg given is different to an empty arg
    if arg_value.nil?
      {}
    else
      {argument.name => arg_value}
    end
  end.inject {|a,b| a.merge(b) } || {}
end