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-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