Module: ChainableAccessor

Defined in:
lib/chainable_accessor.rb,
lib/chainable_accessor/version.rb

Constant Summary collapse

VERSION =
'0.1.0'

Instance Method Summary collapse

Instance Method Details

#chainable_accessor(*attributes) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/chainable_accessor.rb', line 6

def chainable_accessor(*attributes)
  mod = Module.new do
    attributes.each do |name|
      define_method name do |val = nil|
        return super() unless val

        tap { |x| x.send("#{name}=", val) }
      end
    end
  end
  prepend(mod)
end