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 CHANGED
@@ -1 +1 @@
1
- 1.5.0
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(method_id) || super
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 types = tag_types_for_questioner_method(method_name)
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
- types.any? { |type| is_a?(type.klass) }
172
+ self.class.send(method_name)
161
173
  end
162
174
  send(method_name)
163
175
  else
data/spec/models.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  ### START Tag Subclasses ###
2
- puts "loadinfg"
3
2
  module Tagtical
4
3
  class Tag
5
4
  class Language < Tagtical::Tag
@@ -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.0
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-05 00:00:00.000000000 -07:00
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: &2156294600 !ruby/object:Gem::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: *2156294600
25
+ version_requirements: *2160337900
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
- requirement: &2156294120 !ruby/object:Gem::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: *2156294120
36
+ version_requirements: *2160337420
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3-ruby
39
- requirement: &2156293640 !ruby/object:Gem::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: *2156293640
47
+ version_requirements: *2160336940
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: mysql
50
- requirement: &2156293160 !ruby/object:Gem::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: *2156293160
58
+ version_requirements: *2160336460
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jeweler
61
- requirement: &2156292680 !ruby/object:Gem::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: *2156292680
69
+ version_requirements: *2160335980
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rcov
72
- requirement: &2156292200 !ruby/object:Gem::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: *2156292200
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.