tagtical 1.5.5 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.5
1
+ 1.5.6
data/lib/tagtical/tag.rb CHANGED
@@ -220,7 +220,11 @@ module Tagtical
220
220
  case input
221
221
  when self then input
222
222
  when String, Symbol then new(sanitize(input), taggable_class)
223
- when Hash then input.map { |input, klass| new(sanitize(input), taggable_class, :klass => klass) }
223
+ when Hash
224
+ input.map do |input, class_or_string|
225
+ class_key = class_or_string.is_a?(String) ? :class_name : :klass
226
+ new(sanitize(input), taggable_class, class_key => class_or_string)
227
+ end
224
228
  when Array then input.map { |c| find(c, taggable_class) }.flatten
225
229
  end
226
230
  end
@@ -416,6 +420,7 @@ module Tagtical
416
420
  end
417
421
 
418
422
  def find_tag_class!
423
+ return ActiveSupport::Dependencies.constantize(@class_name) if @class_name
419
424
  return Tagtical::Tag if base?
420
425
 
421
426
  # Logic comes from ActiveRecord::Base#compute_type.
data/spec/models.rb CHANGED
@@ -27,11 +27,13 @@ class NeedTag < Tagtical::Tag # Tag subclass ending in "Tag"
27
27
  end
28
28
  class Offering < Tagtical::Tag # Top level
29
29
  end
30
+ class BarCraft < Tagtical::Tag
31
+ end
30
32
 
31
33
  ### END Tag Subclasses ###
32
34
 
33
35
  class TaggableModel < ActiveRecord::Base
34
- acts_as_taggable(:languages, :skills, {:crafts => Tag::FooCraft}, :needs, :offerings)
36
+ acts_as_taggable(:languages, :skills, {:crafts => Tag::FooCraft}, :needs, :offerings, {:styles => "BarCraft"})
35
37
  has_many :untaggable_models
36
38
  end
37
39
 
@@ -356,6 +356,15 @@ describe Tagtical::Tag do
356
356
  its(:klass) { should == Tag::Skill }
357
357
  its(:scope_name) { should == :skills }
358
358
 
359
+ it "should be initialized by a class name if the name is provided" do
360
+ type = @klass.new("style", @taggable_model, :class_name => "BarCraft")
361
+ type.klass.should == BarCraft
362
+ end
363
+
364
+ it "should be able to provide class name through acts_as_taggable" do
365
+ @klass.cache["style"].first.klass.should == BarCraft
366
+ end
367
+
359
368
  describe ".find" do
360
369
  it "converts string into correct format" do
361
370
  {"ClassNames" => "class_name", "photo_tags" => "photo", :photo => "photo"}.each do |input, result|
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.5
4
+ version: 1.5.6
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: 2012-01-14 00:00:00.000000000 -08:00
12
+ date: 2012-01-25 00:00:00.000000000 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2166180240 !ruby/object:Gem::Requirement
17
+ requirement: &2154913940 !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: *2166180240
25
+ version_requirements: *2154913940
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
- requirement: &2166179760 !ruby/object:Gem::Requirement
28
+ requirement: &2154913460 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2166179760
36
+ version_requirements: *2154913460
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3-ruby
39
- requirement: &2166179280 !ruby/object:Gem::Requirement
39
+ requirement: &2154912980 !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: *2166179280
47
+ version_requirements: *2154912980
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: mysql
50
- requirement: &2166178800 !ruby/object:Gem::Requirement
50
+ requirement: &2154912500 !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: *2166178800
58
+ version_requirements: *2154912500
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jeweler
61
- requirement: &2166178320 !ruby/object:Gem::Requirement
61
+ requirement: &2154912020 !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: *2166178320
69
+ version_requirements: *2154912020
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rcov
72
- requirement: &2166194980 !ruby/object:Gem::Requirement
72
+ requirement: &2154911540 !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: *2166194980
80
+ version_requirements: *2154911540
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.