module AttrExtras::Mixin

Separate module so that mixing in the methods doesn't also mix in constants: thepugautomatic.com/2014/02/private-api/

Public Instance Methods

aattr_initialize(*names, &block) click to toggle source
# File lib/attr_extras/explicit.rb, line 56
def aattr_initialize(*names, &block)
  attr_initialize(*names, &block)
  attr_accessor(*Utils.flat_names(names))
end
Also aliased as: attr_accessor_initialize
attr_accessor_initialize(*names, &block)
Alias for: aattr_initialize
attr_id_query(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 89
def attr_id_query(*names)
  AttrQuery.define_with_suffix(self, "_id", *names)
end
attr_implement(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 93
def attr_implement(*names)
  AttrImplement.new(self, names).apply
end
attr_initialize(*names, &block) click to toggle source
# File lib/attr_extras/explicit.rb, line 19
def attr_initialize(*names, &block)
  AttrInitialize.new(self, names, block).apply
end
attr_private(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 23
def attr_private(*names)
  # Avoid warnings: https://github.com/barsoom/attr_extras/pull/31
  return unless names && names.any?

  attr_reader(*names)
  private(*names)
end
attr_private_initialize(*names, &block)
Alias for: pattr_initialize
attr_query(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 85
def attr_query(*names)
  AttrQuery.define_with_suffix(self, "", *names)
end
attr_reader_initialize(*names, &block)
Alias for: rattr_initialize
attr_value(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 31
def attr_value(*names)
  AttrValue.new(self, *names).apply
end
attr_value_initialize(*names, &block)
Alias for: vattr_initialize
cattr_implement(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 97
def cattr_implement(*names)
  AttrImplement.new(self.singleton_class, names).apply
end
method_object(*names) click to toggle source
# File lib/attr_extras/explicit.rb, line 81
def method_object(*names)
  static_facade :call, *names
end
pattr_initialize(*names, &block) click to toggle source
# File lib/attr_extras/explicit.rb, line 35
def pattr_initialize(*names, &block)
  attr_initialize(*names, &block)
  attr_private(*Utils.flat_names(names))
end
Also aliased as: attr_private_initialize
rattr_initialize(*names, &block) click to toggle source
# File lib/attr_extras/explicit.rb, line 49
def rattr_initialize(*names, &block)
  attr_initialize(*names, &block)
  attr_reader(*Utils.flat_names(names))
end
Also aliased as: attr_reader_initialize
static_facade(method_name_or_names, *names) click to toggle source
# File lib/attr_extras/explicit.rb, line 63
def static_facade(method_name_or_names, *names)
  if names.any? { |name| name.is_a?(Array) }
    Array(method_name_or_names).each do |method_name|
      define_singleton_method(method_name) do |*args, **opts, &block|
        new(*args, **opts).public_send(method_name, &block)
      end
    end
  else
    Array(method_name_or_names).each do |method_name|
      define_singleton_method(method_name) do |*args, &block|
        new(*args).public_send(method_name, &block)
      end
    end
  end

  pattr_initialize(*names)
end
vattr_initialize(*names, &block) click to toggle source
# File lib/attr_extras/explicit.rb, line 42
def vattr_initialize(*names, &block)
  attr_initialize(*names, &block)
  attr_value(*Utils.flat_names(names))
end
Also aliased as: attr_value_initialize