tagtical 1.5.5 → 1.5.6

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.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.