Class: Module
- Inherits:
-
Object
- Object
- Module
- Defined in:
- lib/defaultinator.rb
Instance Method Summary collapse
-
#__original_attr_accessor ⇒ Object
todo: figure out how to mix this in as a module slightly nicer.
- #__original_attr_reader ⇒ Object
- #attr_accessor(*args) ⇒ Object
- #attr_reader(*args) ⇒ Object
Instance Method Details
#__original_attr_accessor ⇒ Object
todo: figure out how to mix this in as a module slightly nicer
5 |
# File 'lib/defaultinator.rb', line 5 alias_method :__original_attr_accessor, :attr_accessor |
#__original_attr_reader ⇒ Object
13 |
# File 'lib/defaultinator.rb', line 13 alias_method :__original_attr_reader, :attr_reader |
#attr_accessor(*args) ⇒ Object
6 7 8 9 10 11 |
# File 'lib/defaultinator.rb', line 6 def attr_accessor *args return send(:__original_attr_accessor, *args) unless args.last.is_a?(Hash) *method_names, = args attr_reader(*method_names, ) attr_writer(*method_names) end |
#attr_reader(*args) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/defaultinator.rb', line 14 def attr_reader *args # Hand-off if no options for us to be clever with return send(:__original_attr_reader, *args) unless args.last.is_a?(Hash) *method_names, = args # Hand-off if no defaults or if the default is nil, because that's the ruby runtime default too. return send(:__original_attr_reader, *method_names) unless .has_key?(:default) && [:default] != nil method_names.uniq.each do |name| instance_name = "@#{name}".to_sym # @foo ||= {} define_method(name) do instance_variable_defined?(instance_name) && instance_variable_get(instance_name) || instance_variable_set(instance_name, [:default]) end end end |