module ChainableAccessor

Constants

VERSION

Public Instance Methods

chainable_accessor(*attributes, immutable: false) click to toggle source
Calls superclass method
# File lib/chainable_accessor.rb, line 6
def chainable_accessor(*attributes, immutable: false)
  mod = Module.new do
    attributes.each do |name|
      define_method name do |val = nil|
        return super() unless val

        (immutable ? dup : self).tap { |x| x.send("#{name}=", val) }
      end
    end
  end
  prepend(mod)
end