Method: Module#attr_setter

Defined in:
lib/core/facets/module/attr_setter.rb

#attr_setter(*args) ⇒ Object

Create an attribute method for both getting and setting an instance variable:

attr_setter :a

is equivalent to:

def a(*args)
  if args.size > 0
    @a = args[0]
    self
  else
    @a
  end
end

CREDIT: Trans



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/core/facets/module/attr_setter.rb', line 21

def attr_setter(*args)
  code, made = '', []
  args.each do |a|
    code << %{
      def #{a}(*args)
        args.size > 0 ? ( @#{a}=args[0] ; self ) : @#{a}
      end
    }
    made << "#{a}".to_sym
  end
  module_eval code
  made
end