lib/attribute_predicates/extensions/module.rb in attribute_predicates-0.1.2 vs lib/attribute_predicates/extensions/module.rb in attribute_predicates-0.2.0
- old
+ new
@@ -1,81 +1,79 @@
-module PluginAWeek #:nodoc:
- module AttributePredicates
- module Extensions
- # Adds support for automatically defining predicate methods using +attr_predicate+
- # when defining attributes using +attr+, +attr_reader+, +attr_reader+, and
- # +attr_accessor+.
+module AttributePredicates
+ module Extensions
+ # Adds support for automatically defining predicate methods using +attr_predicate+
+ # when defining attributes using +attr+, +attr_reader+, +attr_reader+, and
+ # +attr_accessor+.
+ #
+ # == Examples
+ #
+ # The predicate methods for attributes checks whether the value is blank?
+ # for determining whether true or false should be returned. For example,
+ #
+ # class Person
+ # attr_accessor :value
+ # end
+ #
+ # p = Person.new
+ # p.value = false
+ # p.value? # => false
+ #
+ # p.value = true
+ # p.value? # => true
+ #
+ # p.value = []
+ # p.value? # => false
+ #
+ # p.value = [false]
+ # p.value? # => true
+ module Module
+ def self.included(base) #:nodoc:
+ base.class_eval do
+ %w(attr attr_reader attr_writer attr_accessor).each do |method|
+ alias_method "#{method}_without_predicates", method
+ alias_method method, "#{method}_with_predicates"
+ end
+ end
+ end
+
+ # Defines a predicate method, using +attr_predicate+, in addition to the
+ # attribute accessors. For example,
#
- # == Examples
- #
- # The predicate methods for attributes checks whether the value is blank?
- # for determining whether true or false should be returned. For example,
- #
- # class Person
- # attr_accessor :value
+ # module Mod
+ # attr :is_okay
# end
#
- # p = Person.new
- # p.value = false
- # p.value? # => false
- #
- # p.value = true
- # p.value? # => true
- #
- # p.value = []
- # p.value? # => false
- #
- # p.value = [false]
- # p.value? # => true
- module Module
- def self.included(base) #:nodoc:
- base.class_eval do
- %w(attr attr_reader attr_writer attr_accessor).each do |method|
- alias_method "#{method}_without_predicates", method
- alias_method method, "#{method}_with_predicates"
- end
- end
+ # Mod.instance-methods.sort # => ["is_okay", "is_okay?"]
+ def attr_with_predicates(*args)
+ attr_without_predicates(*args)
+ attr_predicate(args.first)
+ end
+
+ [:attr_reader, :attr_writer, :attr_accessor].each do |method|
+ define_method("#{method}_with_predicates") do |*symbols|
+ send("#{method}_without_predicates", *symbols)
+ symbols.each {|symbol| attr_predicate(symbol)}
end
-
- # Defines a predicate method, using +attr_predicate+, in addition to the
- # attribute accessors. For example,
- #
- # module Mod
- # attr :is_okay
- # end
- #
- # Mod.instance-methods.sort # => ["is_okay", "is_okay?"]
- def attr_with_predicates(*args)
- attr_without_predicates(*args)
- attr_predicate(args.first)
- end
-
- [:attr_reader, :attr_writer, :attr_accessor].each do |method|
- define_method("#{method}_with_predicates") do |*symbols|
- send("#{method}_without_predicates", *symbols)
- symbols.each {|symbol| attr_predicate(symbol)}
- end
- end
-
- private
- # Returns true if the specified variable is not blank, otherwise false
- def attr_predicate(symbol)
- define_method("#{symbol}?") do
- value = instance_variable_get("@#{symbol}")
- if value.respond_to?(:blank?)
- # Use ActiveSupport's implementation
- !value.blank?
- elsif value.respond_to?(:empty?)
- !value.empty?
- else
- !!value
- end
+ end
+
+ private
+ # Returns true if the specified variable is not blank, otherwise false
+ def attr_predicate(symbol)
+ define_method("#{symbol}?") do
+ value = instance_variable_get("@#{symbol}")
+ if value.respond_to?(:blank?)
+ # Use ActiveSupport's implementation
+ !value.blank?
+ elsif value.respond_to?(:empty?)
+ !value.empty?
+ else
+ !!value
end
end
- end
+ end
end
end
end
::Module.class_eval do
- include PluginAWeek::AttributePredicates::Extensions::Module
+ include AttributePredicates::Extensions::Module
end