module Tablesalt::DSLAccessor::ClassMethods
Private Instance Methods
_define_dsl_accessor(attr)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
@param *accessors [Array<String, Symbol>] A list of dsl accessor attributes to define @param :instance_reader [Boolean] If true, a reader method is defined on the instance. Default: false
# File lib/tablesalt/dsl_accessor.rb, line 48 def dsl_accessor(*accessors, **options) accessors.each do |attr| _define_dsl_accessor(attr) _define_instance_reader(attr) if options[:instance_reader] end end