Class: Tabry::Models::ArgsList

Inherits:
ConfigList show all
Defined in:
lib/tabry/models/args_list.rb

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_argObject



26
27
28
# File 'lib/tabry/models/args_list.rb', line 26

def varargs_arg
  to_a.find(&:varargs?)
end