Module: Predicates
- Defined in:
- lib/predicates.rb,
lib/predicates/version.rb
Defined Under Namespace
Classes: NameError
Constant Summary collapse
- VERSION =
"0.1.5"
Instance Method Summary collapse
-
#predicate(method) ⇒ Object
Defines a predicate (truth accessor) for a given attribute.
Instance Method Details
#predicate(method) ⇒ Object
Defines a predicate (truth accessor) for a given attribute. If the attribute has not been predefined, an attribute writer will be created along with the predicate.
Class Example
class User
extend Predicates
predicate :confirmed?
end
user = User.new
user.confirmed = 1
user.confirmed? #=> true
user.confirmed = nil
user.confirmed? #=> false
Ohm Model Example
class User < Ohm::Model
include Predicates
attribute :confirmed
predicate :confirmed?
end
user = User.new
user.confirmed = 1
user.confirmed? #=> true
user.confirmed = nil
user.confirmed? #=> false
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/predicates.rb', line 38 def predicate(method) if method.to_s =~ /(.*?)\?+$/ attribute = $1.to_sym else raise NameError end attr_writer attribute unless method_defined? attribute if method_defined? attribute define_method method do !!send(attribute) end else define_method method do !!instance_variable_get(:"@#{attribute}") end end end |