identifies_as 1.0.10 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/identifies_as/object_instance.rb +2 -1
- data/lib/identifies_as.rb +16 -8
- data/lib/module.rb +12 -6
- data/lib/requires.rb +1 -0
- data/spec/identifies_as_spec.rb +2 -0
- metadata +3 -4
- data/lib/namespaces.rb +0 -0
data/lib/identifies_as.rb
CHANGED
@@ -13,6 +13,18 @@ module ::IdentifiesAs
|
|
13
13
|
@do_not_identify_as = { }
|
14
14
|
@instances_do_not_identify_as = { }
|
15
15
|
|
16
|
+
###################
|
17
|
+
# self.included #
|
18
|
+
###################
|
19
|
+
|
20
|
+
def self.included( module_instance )
|
21
|
+
|
22
|
+
super if defined?( super )
|
23
|
+
|
24
|
+
module_instance.extend( self )
|
25
|
+
|
26
|
+
end
|
27
|
+
|
16
28
|
################################
|
17
29
|
# self.object_identifies_as! #
|
18
30
|
################################
|
@@ -70,7 +82,7 @@ module ::IdentifiesAs
|
|
70
82
|
################################
|
71
83
|
|
72
84
|
def self.object_identifies_as?( object, other_object_type )
|
73
|
-
|
85
|
+
|
74
86
|
object_identifies = object_instance_identifies_as?( object, other_object_type )
|
75
87
|
|
76
88
|
# If we got nil that means we were told to stop looking.
|
@@ -95,7 +107,7 @@ module ::IdentifiesAs
|
|
95
107
|
object_identifies = false
|
96
108
|
|
97
109
|
object_ancestor_chain = nil
|
98
|
-
|
110
|
+
|
99
111
|
if object.actually_is_a?( ::Module )
|
100
112
|
object_ancestor_chain = object.ancestors.dup
|
101
113
|
else
|
@@ -138,11 +150,11 @@ module ::IdentifiesAs
|
|
138
150
|
object_identifies = nil
|
139
151
|
break
|
140
152
|
elsif identifies_as_hash = @instance_identities[ this_ancestor ]
|
141
|
-
object_identifies = identifies_as_hash.has_key?( other_object_type )
|
153
|
+
break if object_identifies = identifies_as_hash.has_key?( other_object_type )
|
142
154
|
end
|
143
155
|
|
144
156
|
end
|
145
|
-
|
157
|
+
|
146
158
|
return object_identifies
|
147
159
|
|
148
160
|
end
|
@@ -241,7 +253,3 @@ module ::IdentifiesAs
|
|
241
253
|
end
|
242
254
|
|
243
255
|
end
|
244
|
-
|
245
|
-
class ::Object
|
246
|
-
include ::IdentifiesAs
|
247
|
-
end
|
data/lib/module.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
class ::Module
|
3
|
-
|
3
|
+
|
4
4
|
############################
|
5
5
|
# instances_identify_as! #
|
6
6
|
############################
|
@@ -63,7 +63,9 @@ class ::Module
|
|
63
63
|
|
64
64
|
is_equal = false
|
65
65
|
|
66
|
-
if ::IdentifiesAs.respond_to?( :object_identifies_as? ) and
|
66
|
+
if ::IdentifiesAs.respond_to?( :object_identifies_as? ) and
|
67
|
+
object.actually_is_a?( ::IdentifiesAs ) and
|
68
|
+
::IdentifiesAs.object_identifies_as?( object, self )
|
67
69
|
is_equal = true
|
68
70
|
else
|
69
71
|
is_equal = case_compare( object )
|
@@ -85,7 +87,8 @@ class ::Module
|
|
85
87
|
|
86
88
|
if is_less_than.nil?
|
87
89
|
# a class is < another class if it has the other class as one of its ancestors
|
88
|
-
if self != object and
|
90
|
+
if self != object and
|
91
|
+
::IdentifiesAs.object_instance_identifies_as?( self, object )
|
89
92
|
is_less_than = true
|
90
93
|
end
|
91
94
|
end
|
@@ -106,7 +109,8 @@ class ::Module
|
|
106
109
|
|
107
110
|
if is_greater_than.nil?
|
108
111
|
# a class is > another class if the other class has it as one of its ancestors
|
109
|
-
if self != object and
|
112
|
+
if self != object and
|
113
|
+
::IdentifiesAs.object_instance_identifies_as?( object, self )
|
110
114
|
is_greater_than = true
|
111
115
|
else
|
112
116
|
is_less_than = self < object
|
@@ -132,7 +136,8 @@ class ::Module
|
|
132
136
|
|
133
137
|
if is_less_than_or_equal_to.nil?
|
134
138
|
# a class is < another class if it has the other class as one of its ancestors
|
135
|
-
if self == object or
|
139
|
+
if self == object or
|
140
|
+
::IdentifiesAs.object_instance_identifies_as?( self, object )
|
136
141
|
is_less_than_or_equal_to = true
|
137
142
|
end
|
138
143
|
end
|
@@ -153,7 +158,8 @@ class ::Module
|
|
153
158
|
|
154
159
|
if is_greater_than_or_equal_to.nil?
|
155
160
|
# a class is < another class if it has the other class as one of its ancestors
|
156
|
-
if self == object or
|
161
|
+
if self == object or
|
162
|
+
::IdentifiesAs.object_instance_identifies_as?( object, self )
|
157
163
|
is_greater_than_or_equal_to = true
|
158
164
|
else
|
159
165
|
is_less_than_or_equal_to = self <= object
|
data/lib/requires.rb
CHANGED
data/spec/identifies_as_spec.rb
CHANGED
@@ -18,6 +18,7 @@ describe ::IdentifiesAs do
|
|
18
18
|
it 'lets an object pretend it is another object' do
|
19
19
|
|
20
20
|
instance = Object.new
|
21
|
+
instance.extend( ::IdentifiesAs )
|
21
22
|
|
22
23
|
instance.identifies_as!( Array )
|
23
24
|
instance.identifies_as?( Array ).should == true
|
@@ -54,6 +55,7 @@ describe ::IdentifiesAs do
|
|
54
55
|
end
|
55
56
|
|
56
57
|
class NotAnArray
|
58
|
+
include ::IdentifiesAs
|
57
59
|
identifies_as!( Array )
|
58
60
|
instances_identify_as!( Array )
|
59
61
|
identifies_as!( SomeOtherClass )
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: identifies_as
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-22 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Identities are interfaces. Sometimes it makes more sense to test an identity
|
15
15
|
than a method- but then you don't want to limit flexibility. So why not let objects
|
@@ -24,7 +24,6 @@ files:
|
|
24
24
|
- lib/identifies_as/object_instance.rb
|
25
25
|
- lib/identifies_as.rb
|
26
26
|
- lib/module.rb
|
27
|
-
- lib/namespaces.rb
|
28
27
|
- lib/requires.rb
|
29
28
|
- spec/identifies_as_spec.rb
|
30
29
|
- README.md
|
@@ -40,7 +39,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
40
39
|
requirements:
|
41
40
|
- - ! '>='
|
42
41
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
42
|
+
version: 1.9.1
|
44
43
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
44
|
none: false
|
46
45
|
requirements:
|
data/lib/namespaces.rb
DELETED
File without changes
|