module NxtInit::ClassMethods
Attributes
attr_init_opts[RW]
Public Instance Methods
attr_init(*args)
click to toggle source
# File lib/nxt_init.rb, line 8 def attr_init(*args) options_map = build_options_map(*args) self.attr_init_opts ||= {} self.attr_init_opts.merge!(options_map) define_private_readers(*options_map.keys) end
Private Instance Methods
build_options_map(*args)
click to toggle source
# File lib/nxt_init.rb, line 30 def build_options_map(*args) options_hash = *args.extract_options! options_from_args = args.each_with_object({}) { |key, acc| acc[key] = Option.new(key) } options_from_options = options_hash.each_with_object({}) { |(key, value), acc| acc[key] = Option.new(key, default_value: value) } options_from_args.merge(options_from_options) end
define_private_readers(*keys)
click to toggle source
# File lib/nxt_init.rb, line 25 def define_private_readers(*keys) attr_reader *keys private *keys end
inherited(subclass)
click to toggle source
# File lib/nxt_init.rb, line 21 def inherited(subclass) subclass.attr_init_opts = attr_init_opts.deep_dup end