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
|