Method: Rundoc#code_command_from_keyword

Defined in:
lib/rundoc.rb

#code_command_from_keyword(keyword, args) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/rundoc.rb', line 8

def code_command_from_keyword(keyword, args)
  klass = code_command(keyword.to_sym) || Rundoc::CodeCommand::NoSuchCommand
  original_args = args.dup
  if args.is_a?(Array) && args.last.is_a?(Hash)
    kwargs = args.pop
    cc = klass.new(*args, **kwargs)
  elsif args.is_a?(Hash)
    cc = klass.new(**args)
  else
    cc = klass.new(*args)
  end

  cc.original_args = original_args
  cc.keyword = keyword
  cc
rescue ArgumentError => e
  raise ArgumentError, "Wrong method signature for #{keyword} with arguments: #{original_args.inspect}, error:\n #{e.message}"
end