tagtical 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/tagtical/tag.rb +19 -7
- data/spec/models.rb +0 -1
- data/spec/tagtical/tag_spec.rb +7 -0
- metadata +14 -14
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.5.
|
1
|
+
1.5.1
|
data/lib/tagtical/tag.rb
CHANGED
@@ -99,6 +99,21 @@ module Tagtical
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
+
def tag_types_for_questioner_method(method_name)
|
103
|
+
method_name[-1]=="?" && Type.cache[method_name[0..-2]]
|
104
|
+
end
|
105
|
+
|
106
|
+
def method_missing(method_name, *args, &block)
|
107
|
+
if types = tag_types_for_questioner_method(method_name)
|
108
|
+
self.class.send(:define_method, method_name) do
|
109
|
+
types.any? { |type| self <= type.klass }
|
110
|
+
end
|
111
|
+
send(method_name)
|
112
|
+
else
|
113
|
+
super
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
102
117
|
end
|
103
118
|
|
104
119
|
### INSTANCE METHODS:
|
@@ -140,7 +155,7 @@ module Tagtical
|
|
140
155
|
end
|
141
156
|
|
142
157
|
def respond_to?(method_id, include_private = false)
|
143
|
-
!!tag_types_for_questioner_method
|
158
|
+
!!self.class.send(:tag_types_for_questioner_method, method_id) || super
|
144
159
|
end
|
145
160
|
|
146
161
|
# Carried over from tagging.
|
@@ -150,14 +165,11 @@ module Tagtical
|
|
150
165
|
|
151
166
|
private
|
152
167
|
|
153
|
-
def tag_types_for_questioner_method(method_name)
|
154
|
-
method_name[-1]=="?" && Type.cache[method_name[0..-2]]
|
155
|
-
end
|
156
|
-
|
157
168
|
def method_missing(method_name, *args, &block)
|
158
|
-
if
|
169
|
+
if self.class.send(:tag_types_for_questioner_method, method_name)
|
170
|
+
self.class.send(:method_missing, method_name, *args, &block)
|
159
171
|
self.class.send(:define_method, method_name) do
|
160
|
-
|
172
|
+
self.class.send(method_name)
|
161
173
|
end
|
162
174
|
send(method_name)
|
163
175
|
else
|
data/spec/models.rb
CHANGED
data/spec/tagtical/tag_spec.rb
CHANGED
@@ -66,6 +66,13 @@ describe Tagtical::Tag do
|
|
66
66
|
should_not be_offering
|
67
67
|
end
|
68
68
|
|
69
|
+
it "should have methods on the class to question the tag type" do
|
70
|
+
@tag.class.should be_skill
|
71
|
+
@tag.class.should be_craft
|
72
|
+
@tag.class.should be_tag
|
73
|
+
@tag.class.should_not be_offering
|
74
|
+
end
|
75
|
+
|
69
76
|
context "before methods are defined" do
|
70
77
|
before do
|
71
78
|
@types = [:craft?, :skill?, :tag?]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tagtical
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-06 00:00:00.000000000 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2160337900 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - <=
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.0.5
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2160337900
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec
|
28
|
-
requirement: &
|
28
|
+
requirement: &2160337420 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - <=
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 2.6.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2160337420
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sqlite3-ruby
|
39
|
-
requirement: &
|
39
|
+
requirement: &2160336940 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2160336940
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: mysql
|
50
|
-
requirement: &
|
50
|
+
requirement: &2160336460 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2160336460
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: jeweler
|
61
|
-
requirement: &
|
61
|
+
requirement: &2160335980 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2160335980
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rcov
|
72
|
-
requirement: &
|
72
|
+
requirement: &2160335500 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2160335500
|
81
81
|
description: Tagtical allows you do create subclasses for Tag and add additional functionality
|
82
82
|
in an STI fashion. For example. You could do Tag::Color.find_by_name('blue').to_rgb.
|
83
83
|
It also supports storing weights or relevance on the taggings.
|