Module: AttrExtras::Mixin
- Defined in:
- lib/attr_extras/explicit.rb
Overview
Separate module so that mixing in the methods doesn’t also mix in constants: thepugautomatic.com/2014/02/private-api/
Instance Method Summary collapse
- #aattr_initialize(*names, &block) ⇒ Object (also: #attr_accessor_initialize)
- #attr_id_query(*names) ⇒ Object
- #attr_implement(*names) ⇒ Object
- #attr_initialize(*names, &block) ⇒ Object
- #attr_private(*names) ⇒ Object
- #attr_query(*names) ⇒ Object
- #attr_value(*names) ⇒ Object
- #cattr_implement(*names) ⇒ Object
- #method_object(*names) ⇒ Object
- #pattr_initialize(*names, &block) ⇒ Object (also: #attr_private_initialize)
- #rattr_initialize(*names, &block) ⇒ Object (also: #attr_reader_initialize)
- #static_facade(method_name_or_names, *names) ⇒ Object
- #vattr_initialize(*names, &block) ⇒ Object (also: #attr_value_initialize)
Instance Method Details
#aattr_initialize(*names, &block) ⇒ Object Also known as: attr_accessor_initialize
56 57 58 59 |
# File 'lib/attr_extras/explicit.rb', line 56 def aattr_initialize(*names, &block) attr_initialize(*names, &block) attr_accessor(*Utils.flat_names(names)) end |
#attr_id_query(*names) ⇒ Object
89 90 91 |
# File 'lib/attr_extras/explicit.rb', line 89 def attr_id_query(*names) AttrQuery.define_with_suffix(self, "_id", *names) end |
#attr_implement(*names) ⇒ Object
93 94 95 |
# File 'lib/attr_extras/explicit.rb', line 93 def attr_implement(*names) AttrImplement.new(self, names).apply end |
#attr_initialize(*names, &block) ⇒ Object
19 20 21 |
# File 'lib/attr_extras/explicit.rb', line 19 def attr_initialize(*names, &block) AttrInitialize.new(self, names, block).apply end |
#attr_private(*names) ⇒ Object
23 24 25 26 27 28 29 |
# 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_query(*names) ⇒ Object
85 86 87 |
# File 'lib/attr_extras/explicit.rb', line 85 def attr_query(*names) AttrQuery.define_with_suffix(self, "", *names) end |
#attr_value(*names) ⇒ Object
31 32 33 |
# File 'lib/attr_extras/explicit.rb', line 31 def attr_value(*names) AttrValue.new(self, *names).apply end |
#cattr_implement(*names) ⇒ Object
97 98 99 |
# File 'lib/attr_extras/explicit.rb', line 97 def cattr_implement(*names) AttrImplement.new(self.singleton_class, names).apply end |
#method_object(*names) ⇒ Object
81 82 83 |
# File 'lib/attr_extras/explicit.rb', line 81 def method_object(*names) static_facade :call, *names end |
#pattr_initialize(*names, &block) ⇒ Object Also known as: attr_private_initialize
35 36 37 38 |
# File 'lib/attr_extras/explicit.rb', line 35 def pattr_initialize(*names, &block) attr_initialize(*names, &block) attr_private(*Utils.flat_names(names)) end |
#rattr_initialize(*names, &block) ⇒ Object Also known as: attr_reader_initialize
49 50 51 52 |
# File 'lib/attr_extras/explicit.rb', line 49 def rattr_initialize(*names, &block) attr_initialize(*names, &block) attr_reader(*Utils.flat_names(names)) end |
#static_facade(method_name_or_names, *names) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# 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) ⇒ Object Also known as: attr_value_initialize
42 43 44 45 |
# File 'lib/attr_extras/explicit.rb', line 42 def vattr_initialize(*names, &block) attr_initialize(*names, &block) attr_value(*Utils.flat_names(names)) end |