Module: Bristow::Sgetter::ClassMethods

Defined in:
lib/bristow/helpers/sgetter.rb

Instance Method Summary collapse

Instance Method Details

#sgetter(attr, default: nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bristow/helpers/sgetter.rb', line 24

def sgetter(attr, default: nil)
  # Define the method that allows for both getter/setter syntax
  define_singleton_method(attr) do |val = nil|
    if val.nil?
      return instance_variable_get("@#{attr}") if instance_variable_defined?("@#{attr}")
      default.respond_to?(:call) ? default.call : default
    else
      instance_variable_set("@#{attr}", val)
    end
  end

  # Instance-level reader
  define_method(attr) do
    instance_variable_get("@#{attr}")
  end
end