class Hinge::Resolver::Node
Attributes
dependency_names[R]
method[R]
method_name[R]
name[R]
Public Class Methods
new(name, container)
click to toggle source
# File lib/hinge/resolver.rb, line 56 def initialize(name, container) @name = name @method_name = "build_#{@name}" @method = begin container.method(@method_name) rescue NameError nil end if @method @dependency_names = [] @positional_args_count = 0 @keyword_arg_names = [] @method.parameters.each do |kind, argument_name| argument_name = argument_name.to_sym @dependency_names << argument_name case kind when :req @positional_args_count += 1 when :keyreq @keyword_arg_names << argument_name end end end end
Public Instance Methods
invoke(ordered_values)
click to toggle source
# File lib/hinge/resolver.rb, line 85 def invoke(ordered_values) splat = ordered_values.take(@positional_args_count) splat << Hash[ @keyword_arg_names.zip(ordered_values.drop(@positional_args_count)) ] if @keyword_arg_names.any? @method.call(*splat) end