mongoid-simple-tags 0.0.7 → 0.0.8
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/.travis.yml +1 -1
- data/Gemfile.lock +12 -12
- data/README.rdoc +5 -4
- data/VERSION +1 -1
- data/lib/mongoid-simple-tags.rb +16 -8
- data/mongoid-simple-tags.gemspec +1 -1
- data/spec/mongoid-simple-tags_spec.rb +30 -12
- metadata +2 -2
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mongoid-simple-tags (0.0.
|
4
|
+
mongoid-simple-tags (0.0.7)
|
5
5
|
bson_ext (~> 1.6)
|
6
6
|
mongoid (~> 3.0.3)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activemodel (3.2.
|
12
|
-
activesupport (= 3.2.
|
11
|
+
activemodel (3.2.8)
|
12
|
+
activesupport (= 3.2.8)
|
13
13
|
builder (~> 3.0.0)
|
14
|
-
activesupport (3.2.
|
14
|
+
activesupport (3.2.8)
|
15
15
|
i18n (~> 0.6)
|
16
16
|
multi_json (~> 1.0)
|
17
|
-
bson (1.
|
18
|
-
bson_ext (1.
|
19
|
-
bson (~> 1.
|
20
|
-
builder (3.0.
|
17
|
+
bson (1.7.0)
|
18
|
+
bson_ext (1.7.0)
|
19
|
+
bson (~> 1.7.0)
|
20
|
+
builder (3.0.3)
|
21
21
|
diff-lcs (1.1.3)
|
22
|
-
i18n (0.6.
|
23
|
-
mongoid (3.0.
|
22
|
+
i18n (0.6.1)
|
23
|
+
mongoid (3.0.5)
|
24
24
|
activemodel (~> 3.1)
|
25
25
|
moped (~> 1.1)
|
26
26
|
origin (~> 1.0)
|
27
27
|
tzinfo (~> 0.3.22)
|
28
|
-
moped (1.2.
|
28
|
+
moped (1.2.1)
|
29
29
|
multi_json (1.3.6)
|
30
|
-
origin (1.0.
|
30
|
+
origin (1.0.8)
|
31
31
|
rspec (2.10.0)
|
32
32
|
rspec-core (~> 2.10.0)
|
33
33
|
rspec-expectations (~> 2.10.0)
|
data/README.rdoc
CHANGED
@@ -6,11 +6,11 @@ mongoid-simple-tags is a basic and simple tagging system for mongoid using map-r
|
|
6
6
|
== Install
|
7
7
|
|
8
8
|
Add the following to Gemfile:
|
9
|
-
|
9
|
+
|
10
10
|
gem "mongoid-simple-tags", "0.0.7"
|
11
11
|
|
12
12
|
== Usage
|
13
|
-
|
13
|
+
|
14
14
|
=== Model
|
15
15
|
|
16
16
|
class User
|
@@ -34,9 +34,10 @@ mongoid-simple-tags is a basic and simple tagging system for mongoid using map-r
|
|
34
34
|
User.tagged_with("linux") # => [u, u2]
|
35
35
|
|
36
36
|
# using map-reduce function
|
37
|
-
|
38
|
-
User.all_tags #=>[{:name=>"free software", :count=>1}, {:name=>"linux", :count=>2}, {:name=>"tucuman", :count=>1}]
|
39
37
|
|
38
|
+
User.all_tags #=>[{:name=>"free software", :count=>1}, {:name=>"linux", :count=>2}, {:name=>"tucuman", :count=>1}]
|
39
|
+
|
40
|
+
User.tag_list #=>["free software", "linux", "tucuman"]
|
40
41
|
|
41
42
|
== Copyright
|
42
43
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.8
|
data/lib/mongoid-simple-tags.rb
CHANGED
@@ -3,15 +3,15 @@ module Mongoid
|
|
3
3
|
module Taggable
|
4
4
|
def self.included(base)
|
5
5
|
base.class_eval do |klass|
|
6
|
-
klass.field :tags, :type => Array
|
6
|
+
klass.field :tags, :type => Array, :default => []
|
7
7
|
klass.index({ tags: 1 }, { background: true })
|
8
|
-
|
8
|
+
|
9
9
|
include InstanceMethods
|
10
10
|
extend ClassMethods
|
11
|
-
|
11
|
+
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
module InstanceMethods
|
16
16
|
def tag_list=(tags)
|
17
17
|
self.tags = tags.split(",").collect{ |t| t.strip }.delete_if{ |t| t.blank? }
|
@@ -20,8 +20,12 @@ module Mongoid
|
|
20
20
|
def tag_list
|
21
21
|
self.tags.join(", ") if tags
|
22
22
|
end
|
23
|
+
|
24
|
+
def tags
|
25
|
+
super || []
|
26
|
+
end
|
23
27
|
end
|
24
|
-
|
28
|
+
|
25
29
|
|
26
30
|
module ClassMethods
|
27
31
|
|
@@ -57,13 +61,17 @@ module Mongoid
|
|
57
61
|
warn "[DEPRECATION] `scoped_tags` is deprecated. Please use `all_tags` instead."
|
58
62
|
all_tags(scope)
|
59
63
|
end
|
60
|
-
|
64
|
+
|
61
65
|
def tagged_with(tags)
|
62
66
|
tags = [tags] unless tags.is_a? Array
|
63
|
-
criteria.in(:tags => tags)
|
67
|
+
criteria.in(:tags => tags)
|
68
|
+
end
|
69
|
+
|
70
|
+
def tag_list
|
71
|
+
self.all_tags.collect{|tag| tag[:name]}
|
64
72
|
end
|
65
73
|
end
|
66
|
-
|
74
|
+
|
67
75
|
end
|
68
76
|
end
|
69
77
|
end
|
data/mongoid-simple-tags.gemspec
CHANGED
@@ -19,16 +19,29 @@ describe "A Taggable model" do
|
|
19
19
|
let(:user) { User.new(name: 'Tuquito') }
|
20
20
|
|
21
21
|
it "should have a tag_list method" do
|
22
|
-
user.respond_to
|
22
|
+
user.should respond_to(:tag_list)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a tag_list class method" do
|
26
|
+
User.should respond_to(:tag_list)
|
23
27
|
end
|
24
28
|
|
25
29
|
it "should be able to update a tag list" do
|
26
30
|
tag_list = "linux, tucuman, free software"
|
27
31
|
tags = tag_list.split(',').map{ |tag| tag.strip}.flatten
|
28
|
-
|
32
|
+
|
29
33
|
user.tag_list = tag_list
|
30
34
|
user.tags.should == tags
|
31
35
|
end
|
36
|
+
|
37
|
+
it "returns an empty array if there are no tags" do
|
38
|
+
user.tags = nil
|
39
|
+
user.tags.should_not be_nil
|
40
|
+
user.tags.should eql([])
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
32
45
|
end
|
33
46
|
|
34
47
|
|
@@ -37,15 +50,15 @@ describe "A Taggable model with tags assigned" do
|
|
37
50
|
before(:each) do
|
38
51
|
@user = User.create!(name: 'Tuquito', tag_list: "linux, tucuman, free software")
|
39
52
|
end
|
40
|
-
|
41
|
-
it "should be able to find tagged_with objects" do
|
53
|
+
|
54
|
+
it "should be able to find tagged_with objects" do
|
42
55
|
User.tagged_with('linux').first.should == @user
|
43
56
|
User.tagged_with(['tucuman', 'free software']).first.should == @user
|
44
57
|
end
|
45
58
|
|
46
59
|
it "should be able to find tagged_with objects if more than one object is present" do
|
47
60
|
user_2 = User.create!(name: 'ubuntu', tag_list: 'linux')
|
48
|
-
|
61
|
+
|
49
62
|
tagged_with_list = User.tagged_with('linux')
|
50
63
|
tagged_with_list.include?(@user).should be_true
|
51
64
|
tagged_with_list.include?(user_2).should be_true
|
@@ -54,7 +67,7 @@ describe "A Taggable model with tags assigned" do
|
|
54
67
|
it "should return all_tags per Model class" do
|
55
68
|
User.create(name: 'ubuntu', tag_list: 'linux')
|
56
69
|
|
57
|
-
expected_tag_list = [
|
70
|
+
expected_tag_list = [
|
58
71
|
{:name => "free software", :count => 1},
|
59
72
|
{:name => "linux", :count => 2},
|
60
73
|
{:name => "tucuman", :count => 1}
|
@@ -62,11 +75,16 @@ describe "A Taggable model with tags assigned" do
|
|
62
75
|
User.all_tags.should == expected_tag_list
|
63
76
|
end
|
64
77
|
|
78
|
+
it "returns an array of all tags used on all instances of a model" do
|
79
|
+
User.create(name: 'ubuntu', tag_list: 'linux')
|
80
|
+
User.tag_list.sort.should == ["linux", "tucuman", "free software"].sort
|
81
|
+
end
|
82
|
+
|
65
83
|
end
|
66
84
|
|
67
85
|
describe "A Taggable model with scope" do
|
68
86
|
|
69
|
-
before(:each) do
|
87
|
+
before(:each) do
|
70
88
|
@organization_1 = Organization.create(name: 'Qualica')
|
71
89
|
@user_1 = @organization_1.users.create(name: 'User1', tag_list: "ubuntu, linux, tucuman")
|
72
90
|
@user_2 = @organization_1.users.create(name: 'User2', tag_list: "ubuntu, linux, tucuman")
|
@@ -76,14 +94,14 @@ describe "A Taggable model with scope" do
|
|
76
94
|
@user_4 = @organization_2.users.create(name: 'User4', tag_list: 'ubuntu, linux, tucuman')
|
77
95
|
end
|
78
96
|
|
79
|
-
it "should return scoped tags when passing one option" do
|
97
|
+
it "should return scoped tags when passing one option" do
|
80
98
|
results = User.all_tags(organization_id: @organization_1.id)
|
81
99
|
results.empty?.should be_false
|
82
100
|
|
83
101
|
results.include?( {:name => "linux", :count => 2 } ).should be_true
|
84
102
|
results.include?( {:name => "ubuntu", :count => 2 } ).should be_true
|
85
103
|
results.include?( {:name => "tucuman", :count => 2 } ).should be_true
|
86
|
-
|
104
|
+
|
87
105
|
results = User.all_tags(organization_id: @organization_2.id)
|
88
106
|
results.empty?.should be_false
|
89
107
|
results.include?( {:name =>"linux", :count => 1 } ).should be_true
|
@@ -94,16 +112,16 @@ describe "A Taggable model with scope" do
|
|
94
112
|
|
95
113
|
it "should return scoped tags when passing more than one option" do
|
96
114
|
results = User.all_tags(organization_id: @organization_1.id, name: @user_1.name)
|
97
|
-
|
115
|
+
|
98
116
|
results.empty?.should be_false
|
99
117
|
results.include?( {:name => "linux", :count => 1 } ).should be_true
|
100
118
|
results.include?( {:name => "ubuntu", :count => 1 } ).should be_true
|
101
119
|
results.include?( {:name => "tucuman", :count => 1 } ).should be_true
|
102
120
|
end
|
103
121
|
|
104
|
-
it "should return scoped tags when calling deprecated scoped_tags method" do
|
122
|
+
it "should return scoped tags when calling deprecated scoped_tags method" do
|
105
123
|
results = User.all_tags(organization_id: @organization_1.id)
|
106
|
-
|
124
|
+
|
107
125
|
results.empty?.should be_false
|
108
126
|
results.include?( {:name => "linux", :count => 2 } ).should be_true
|
109
127
|
results.include?( {:name => "ubuntu", :count => 2 } ).should be_true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-simple-tags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
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-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|