module NxtInit::InstanceMethods
Public Class Methods
new(*args, **attrs)
click to toggle source
Calls superclass method
# File lib/nxt_init.rb, line 39 def initialize(*args, **attrs) option_keys = self.class.send(:attr_init_opts).keys attr_init_opts = attrs.slice(*option_keys) other_options = attrs.slice!(*option_keys) # passing **{} is like calling super({}) which does not work when super does not except arguments# initialize_attrs_from_options(**attr_init_opts) other_options.empty? ? super(*args) : super(*args, **other_options) end
Private Instance Methods
initialize_attrs_from_options(**attrs)
click to toggle source
# File lib/nxt_init.rb, line 51 def initialize_attrs_from_options(**attrs) self.class.send(:attr_init_opts).each do |_, opt| value = opt.resolve(attrs, target: self) instance_variable_set("@#{opt.key}", value) end end