module Nuggets::Object::LazyAttrMixin

Private Instance Methods

lazy_attr(name, freeze = true, &block) click to toggle source
   # File lib/nuggets/object/lazy_attr_mixin.rb
33 def lazy_attr(name, freeze = true, &block)
34   class << self; self; end.send(:attr_reader, name)
35 
36   value = instance_variable_defined?(ivar = "@#{name}") ?
37     instance_variable_get(ivar) :
38     instance_variable_set(ivar, instance_eval(&block))
39 
40   freeze ? value.freeze : value
41 end