Module: Tablesalt::DSLAccessor::ClassMethods
- Defined in:
- lib/tablesalt/dsl_accessor.rb
Instance Method Summary collapse
- #_define_dsl_accessor(attr) ⇒ Object private
- #_define_instance_reader(attr) ⇒ Object private
- #dsl_accessor(*accessors, **options) ⇒ Object private
Instance Method Details
#_define_dsl_accessor(attr) ⇒ Object (private)
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/tablesalt/dsl_accessor.rb', line 55 def _define_dsl_accessor(attr) ivar_name = attr_internal_ivar_name(attr) define_singleton_method attr do |*args| if instance_variable_defined?(ivar_name) raise NameError, "internal attribute #{attr} already set" if args.one? raise ArgumentError, "wrong number of arguments (given #{args.size}, expected 0)" if args.size > 1 instance_variable_get(ivar_name) else raise ArgumentError, "wrong number of arguments (given #{args.size}, expected 1)" unless args.one? instance_variable_set(ivar_name, args.first) end end private_class_method attr end |
#_define_instance_reader(attr) ⇒ Object (private)
74 75 76 77 78 79 80 81 82 |
# File 'lib/tablesalt/dsl_accessor.rb', line 74 def _define_instance_reader(attr) ivar_name = attr_internal_ivar_name(attr) define_method attr do self.class.instance_variable_get(ivar_name) end private attr end |
#dsl_accessor(*accessors, **options) ⇒ Object (private)
48 49 50 51 52 53 |
# File 'lib/tablesalt/dsl_accessor.rb', line 48 def dsl_accessor(*accessors, **) accessors.each do |attr| _define_dsl_accessor(attr) _define_instance_reader(attr) if [:instance_reader] end end |