class EacRubyUtils::CommonConstructor::SuperArgs
Attributes
args[R]
class_initialize[R]
object[R]
Public Class Methods
new(class_initialize, args, object)
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 11 def initialize(class_initialize, args, object) @class_initialize = class_initialize @args = args @object = object end
Public Instance Methods
auto_result()
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 17 def auto_result r = [] sub_args.each do |name, value| i = super_arg_index(name) r[i] = value if i end r end
result()
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 26 def result result_from_options || auto_result end
result_from_options()
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 30 def result_from_options return unless common_constructor.super_args object.instance_exec(&common_constructor.super_args) end
sub_args()
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 36 def sub_args common_constructor.args.each_with_index.map do |name, index| [name, args[index]] end.to_h end
super_arg_index(name)
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 42 def super_arg_index(name) super_method.parameters.each_with_index do |arg, index| return index if arg[1] == name end nil end
super_method()
click to toggle source
# File lib/eac_ruby_utils/common_constructor/super_args.rb, line 49 def super_method class_initialize.klass.superclass&.instance_method(:initialize) end