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