Module: Clafamatt::Macros::ClassMethods

Defined in:
lib/clafamatt.rb

Instance Method Summary collapse

Instance Method Details

#class_family_accessor(*symbols) ⇒ Object



126
127
128
129
# File 'lib/clafamatt.rb', line 126

def class_family_accessor(*symbols)
  class_family_reader(*symbols)
  class_family_writer(*symbols)
end

#class_family_reader(*symbols) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/clafamatt.rb', line 101

def class_family_reader(*symbols)
  symbols.each do |name|
    ivar   = '@' + name.to_s
    define_macro(name) do ||
        # Explicitly checking for variable definition avoids warnings.
        if instance_variable_defined?(ivar)
          instance_variable_get(ivar)
         # super() doesn't work the way we need in singleton class world
        elsif can_pass?(name)
          pass(name)
        else
          nil
        end
    end
  end
end

#class_family_writer(*symbols) ⇒ Object



117
118
119
120
121
122
123
124
125
# File 'lib/clafamatt.rb', line 117

def class_family_writer(*symbols)
  symbols.each do |name|
    setter = name.to_s + '='
    ivar   = '@' + name.to_s
    define_macro(setter) do |new_value|
      instance_variable_set(ivar, new_value)
    end
  end
end