Module: ClassProp::ClassMethods

Defined in:
lib/classprop.rb

Overview


ClassMethods

Instance Method Summary collapse

Instance Method Details

#define_class_prop(prop_name) ⇒ Object

Defines the set and get methods for the given property.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/classprop.rb', line 47

def define_class_prop(prop_name)
  # set
  self.define_singleton_method("#{prop_name}=") do |val|
    instance_variable_set "@#{prop_name}", val
  end
  
  # get
  self.define_singleton_method(prop_name) do
    if instance_variable_defined?("@#{prop_name}")
      rv = instance_variable_get("@#{prop_name}")
      
      if rv == ClassProp::MustDefine
        raise "must-define-class-property: #{prop_name}" 
      else
        return rv
      end
    else
      if superclass.respond_to?(prop_name)
        return superclass.public_send(prop_name)
      else
        return nil
      end
    end
  end
end

#delete_class_prop(prop_name) ⇒ Object

delete_class_prop



74
75
76
77
78
# File 'lib/classprop.rb', line 74

def delete_class_prop(prop_name)
  if instance_variable_defined?("@#{prop_name}")
    remove_instance_variable "@#{prop_name}"
  end
end