Class: Tabry::Models::ArgsList
Instance Attribute Summary
Attributes inherited from ConfigList
#unflattened
Instance Method Summary
collapse
Methods inherited from ConfigList
#[], #as_json, #each, #empty?, #flatten, #length, #to_a
Constructor Details
#initialize(**args) ⇒ ArgsList
9
10
11
|
# File 'lib/tabry/models/args_list.rb', line 9
def initialize(**args)
super(**args, klass: Arg)
end
|
Instance Method Details
#n_passed_in_varargs(n_total_passed_in_args) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/tabry/models/args_list.rb', line 13
def n_passed_in_varargs(n_total_passed_in_args)
case to_a.count(&:varargs?)
when 0
0
when 1
n_regular_passed_in_args = to_a.length - 1
[n_total_passed_in_args - n_regular_passed_in_args, 0].max
else
arg_names = to_a.map { |a| "#{a.name || "[unnamed]"}#{a.varargs? ? " (varargs)" : ""}" }
raise ConfigError, "More than one varargs args in one sub: #{arg_names.join(", ")}"
end
end
|
#varargs_arg ⇒ Object
26
27
28
|
# File 'lib/tabry/models/args_list.rb', line 26
def varargs_arg
to_a.find(&:varargs?)
end
|