predicates 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -32,7 +32,7 @@ Include Predicates in your class or model and define the predicate by supplying
32
32
  user.confirmed = 1
33
33
  user.confirmed? #=> true
34
34
 
35
- Predicates will define the attribute for you using `attr_accessor` if the attribute you supplied has not been defined yet.
35
+ Predicates will also create an attribute writer for you using `attr_writer` if the attribute you supplied has not been predefined.
36
36
 
37
37
  class User
38
38
  extend Predicates
@@ -1,3 +1,3 @@
1
1
  module Predicates
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/predicates.rb CHANGED
@@ -3,8 +3,8 @@ require "predicates/version"
3
3
  module Predicates
4
4
  class NameError < Exception; end
5
5
 
6
- # Defines a predicate (truth accessor) for a given attribute. If the attribute has not been defined yet,
7
- # the attribute will be created along with the predicate via +attr_accessor+.
6
+ # Defines a predicate (truth accessor) for a given attribute. If the attribute has not been predefined,
7
+ # an attribute writer will be created along with the predicate.
8
8
  #
9
9
  # == Class Example
10
10
  #
@@ -42,10 +42,10 @@ module Predicates
42
42
  raise NameError
43
43
  end
44
44
 
45
- attr_accessor attribute unless method_defined? attribute
45
+ attr_writer attribute unless method_defined? attribute
46
46
 
47
47
  define_method method do
48
- !!send(attribute)
48
+ !!eval("@#{attribute}")
49
49
  end
50
50
  end
51
51
  end
@@ -21,7 +21,7 @@ class PredicatesTest < MiniTest::Unit::TestCase
21
21
  end
22
22
  end
23
23
 
24
- def test_define_a_predicate_with_an_existing_attribute_accessor
24
+ def test_define_a_predicate_with_a_predefined_attribute_accessor
25
25
  klass = Class.new WithPredicates do
26
26
  attr_accessor :attribute
27
27
  predicate :attribute?
@@ -41,7 +41,7 @@ class PredicatesTest < MiniTest::Unit::TestCase
41
41
  refute object.attribute?
42
42
  end
43
43
 
44
- def test_define_a_predicate_with_an_existing_attribute_reader
44
+ def test_define_a_predicate_with_only_a_predefined_attribute_reader
45
45
  klass = Class.new WithPredicates do
46
46
  attr_reader :attribute
47
47
  predicate :attribute?
@@ -59,20 +59,45 @@ class PredicatesTest < MiniTest::Unit::TestCase
59
59
  assert object.attribute?
60
60
  end
61
61
 
62
- def test_define_a_predicate_with_an_existing_attribute_method
62
+ def test_define_a_predicate_with_only_a_predefined_attribute_writer
63
63
  klass = Class.new WithPredicates do
64
- def attribute
65
- 1
66
- end
64
+ attr_writer :attribute
65
+ predicate :attribute?
66
+ end
67
+
68
+ object = klass.new
69
+
70
+ assert object.respond_to?(:attribute?)
71
+ refute object.respond_to?(:attribute)
72
+
73
+ object.attribute = 1
74
+ assert object.attribute?
75
+
76
+ object.attribute = true
77
+ assert object.attribute?
67
78
 
79
+ object.attribute = nil
80
+ refute object.attribute?
81
+ end
82
+
83
+ def test_define_a_predicate_with_no_predefined_attribute_accessor
84
+ klass = Class.new WithPredicates do
68
85
  predicate :attribute?
69
86
  end
70
87
 
71
88
  object = klass.new
72
89
 
73
90
  assert object.respond_to?(:attribute?)
74
- refute object.respond_to?(:attribute=)
91
+ assert object.respond_to?(:attribute=)
92
+ refute object.respond_to?(:attribute)
75
93
 
94
+ object.attribute = 1
76
95
  assert object.attribute?
96
+
97
+ object.attribute = true
98
+ assert object.attribute?
99
+
100
+ object.attribute = nil
101
+ refute object.attribute?
77
102
  end
78
103
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: predicates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: