acts_as_word_cloud 0.0.3 → 0.0.4
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/CHANGELOG +7 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +2 -2
- data/VERSION +1 -1
- data/acts_as_word_cloud.gemspec +8 -8
- data/lib/acts_as_word_cloud/word_cloud.rb +11 -3
- data/lib/generators/acts_as_word_cloud/templates/config.rb +1 -1
- data/spec/acts_as_word_cloud_spec.rb +12 -2
- data/spec/dummy/db/migrate/20121107162154_create_system.rb +1 -0
- data/spec/dummy/db/schema.rb +1 -0
- data/spec/integration_spec.rb +4 -3
- data/spec/support/blueprints.rb +1 -0
- metadata +5 -5
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== unreleased changes
|
2
|
+
|
3
|
+
== 0.0.4
|
4
|
+
|
5
|
+
* Improved performance of the recursive word cloud by avoiding calling it multiple times on the same object
|
6
|
+
* Made rails requirements more general
|
7
|
+
|
1
8
|
== 0.0.3
|
2
9
|
|
3
10
|
* Added an option for permanently excluded models to the config file
|
data/Gemfile
CHANGED
@@ -2,7 +2,7 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
|
-
gem "rails", "
|
5
|
+
gem "rails", ">= 3.1.0"
|
6
6
|
|
7
7
|
# Add dependencies to develop your gem here.
|
8
8
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -11,7 +11,7 @@ group :development do
|
|
11
11
|
gem "rspec", "~> 2.8.0"
|
12
12
|
gem "rspec-rails"
|
13
13
|
gem "database_cleaner", "~>0.6.7"
|
14
|
-
gem "bundler", "
|
14
|
+
gem "bundler", ">= 1.2.3"
|
15
15
|
gem "jeweler", "~> 1.8.4"
|
16
16
|
gem "debugger"
|
17
17
|
end
|
data/Gemfile.lock
CHANGED
@@ -117,13 +117,13 @@ PLATFORMS
|
|
117
117
|
ruby
|
118
118
|
|
119
119
|
DEPENDENCIES
|
120
|
-
bundler (
|
120
|
+
bundler (>= 1.2.3)
|
121
121
|
database_cleaner (~> 0.6.7)
|
122
122
|
debugger
|
123
123
|
faker (~> 1.0.1)
|
124
124
|
jeweler (~> 1.8.4)
|
125
125
|
machinist (= 1.0.6)
|
126
|
-
rails (
|
126
|
+
rails (>= 3.1.0)
|
127
127
|
rspec (~> 2.8.0)
|
128
128
|
rspec-rails
|
129
129
|
sqlite3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/acts_as_word_cloud.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "acts_as_word_cloud"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jeremiah Hemphill", "Alfredo Uribe"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-03-14"
|
13
13
|
s.description = "Returns values for specified methods on each object containing mixix and values from general methods specified for models that don't have the mixin; depending on 'depth' value passed in the method will also recursively return values for associated objects on each model scanned"
|
14
14
|
s.email = "jeremiah@cloudspace.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -90,31 +90,31 @@ Gem::Specification.new do |s|
|
|
90
90
|
s.specification_version = 3
|
91
91
|
|
92
92
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
93
|
-
s.add_runtime_dependency(%q<rails>, ["
|
93
|
+
s.add_runtime_dependency(%q<rails>, [">= 3.1.0"])
|
94
94
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
95
95
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
96
96
|
s.add_development_dependency(%q<rspec-rails>, [">= 0"])
|
97
97
|
s.add_development_dependency(%q<database_cleaner>, ["~> 0.6.7"])
|
98
|
-
s.add_development_dependency(%q<bundler>, ["
|
98
|
+
s.add_development_dependency(%q<bundler>, [">= 1.2.3"])
|
99
99
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
100
100
|
s.add_development_dependency(%q<debugger>, [">= 0"])
|
101
101
|
else
|
102
|
-
s.add_dependency(%q<rails>, ["
|
102
|
+
s.add_dependency(%q<rails>, [">= 3.1.0"])
|
103
103
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
104
104
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
105
105
|
s.add_dependency(%q<rspec-rails>, [">= 0"])
|
106
106
|
s.add_dependency(%q<database_cleaner>, ["~> 0.6.7"])
|
107
|
-
s.add_dependency(%q<bundler>, ["
|
107
|
+
s.add_dependency(%q<bundler>, [">= 1.2.3"])
|
108
108
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
109
109
|
s.add_dependency(%q<debugger>, [">= 0"])
|
110
110
|
end
|
111
111
|
else
|
112
|
-
s.add_dependency(%q<rails>, ["
|
112
|
+
s.add_dependency(%q<rails>, [">= 3.1.0"])
|
113
113
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
114
114
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
115
115
|
s.add_dependency(%q<rspec-rails>, [">= 0"])
|
116
116
|
s.add_dependency(%q<database_cleaner>, ["~> 0.6.7"])
|
117
|
-
s.add_dependency(%q<bundler>, ["
|
117
|
+
s.add_dependency(%q<bundler>, [">= 1.2.3"])
|
118
118
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
119
119
|
s.add_dependency(%q<debugger>, [">= 0"])
|
120
120
|
end
|
@@ -53,10 +53,12 @@ module ActsAsWordCloud
|
|
53
53
|
protected
|
54
54
|
|
55
55
|
# Finds all text attributes, associated objects, and included methods down to a specified depth
|
56
|
+
# Avoids running the word cloud on objects that have already been included
|
56
57
|
#
|
57
58
|
# @param [Integer] depth How many layers of associations to search
|
59
|
+
# @param [Array] already_included_objects List of objects of models that have already been included in the word cloud
|
58
60
|
# @return [Array] The word cloud for the specified object and depth
|
59
|
-
def recursive_word_cloud(depth)
|
61
|
+
def recursive_word_cloud(depth, already_included_objects = [])
|
60
62
|
# prepare an array of strings to be used as an output
|
61
63
|
output = []
|
62
64
|
|
@@ -65,10 +67,16 @@ module ActsAsWordCloud
|
|
65
67
|
|
66
68
|
# array of objects for every association minus a list of excluded objects
|
67
69
|
objects = word_cloud_associated_objects
|
70
|
+
|
71
|
+
# do not search again on self
|
72
|
+
already_included_objects << self
|
73
|
+
|
68
74
|
objects.each do |obj|
|
69
|
-
if
|
75
|
+
if already_included_objects.include?(obj)
|
76
|
+
# pass because the data is already in the output
|
77
|
+
elsif obj.respond_to?(:recursive_word_cloud) && depth > 1
|
70
78
|
# if the object has a word cloud mixin and we can recurse
|
71
|
-
output |= obj.recursive_word_cloud(depth - 1)
|
79
|
+
output |= obj.recursive_word_cloud(depth - 1, already_included_objects)
|
72
80
|
else
|
73
81
|
# otherwise get the default name for the object
|
74
82
|
output |= [self.word_cloud_object_name(obj)]
|
@@ -15,5 +15,5 @@ ActsAsWordCloud.configure do |config|
|
|
15
15
|
#
|
16
16
|
# Each of the contants in this list will be added to the word cloud attribute, excluded_models.
|
17
17
|
# This will happen even when the attribute is included in the mixin call.
|
18
|
-
# config.
|
18
|
+
# config.permanently_excluded_models = []
|
19
19
|
end
|
@@ -33,6 +33,7 @@ describe "ActsAsWordCloud" do
|
|
33
33
|
@article.stub(:word_cloud_get_valid_strings).and_return([])
|
34
34
|
@article.stub(:word_cloud_associated_objects).and_return([])
|
35
35
|
end
|
36
|
+
|
36
37
|
it "should call word_cloud_get_valid_strings" do
|
37
38
|
@article.should_receive(:word_cloud_get_valid_strings).and_return([])
|
38
39
|
@article.send(:recursive_word_cloud, 1)
|
@@ -43,9 +44,9 @@ describe "ActsAsWordCloud" do
|
|
43
44
|
@article.send(:recursive_word_cloud, 1)
|
44
45
|
end
|
45
46
|
|
46
|
-
it "should call rescursive_word_cloud on an associated object if the depth is more than 1" do
|
47
|
+
it "should call rescursive_word_cloud on an associated object if the depth is more than 1 and it should include the calling object in the parameters" do
|
47
48
|
object_with_word_cloud = mock(Author)
|
48
|
-
object_with_word_cloud.should_receive(:recursive_word_cloud).with(1).and_return([])
|
49
|
+
object_with_word_cloud.should_receive(:recursive_word_cloud).with(1, [@article]).and_return([])
|
49
50
|
|
50
51
|
@article.stub(:word_cloud_associated_objects).and_return([object_with_word_cloud])
|
51
52
|
@article.send(:recursive_word_cloud, 2)
|
@@ -68,6 +69,15 @@ describe "ActsAsWordCloud" do
|
|
68
69
|
@article.send(:recursive_word_cloud, 2)
|
69
70
|
end
|
70
71
|
|
72
|
+
it "should not call rescursive_word_cloud on an associated object if the object is included in the already_included_objects" do
|
73
|
+
object_with_word_cloud = mock(Author)
|
74
|
+
object_with_word_cloud.should_not_receive(:recursive_word_cloud)
|
75
|
+
object_with_word_cloud.should_not_receive(:name)
|
76
|
+
|
77
|
+
@article.stub(:word_cloud_associated_objects).and_return([object_with_word_cloud])
|
78
|
+
@article.send(:recursive_word_cloud, 2, [object_with_word_cloud])
|
79
|
+
end
|
80
|
+
|
71
81
|
it "should return an array of strings" do
|
72
82
|
@article.stub(:word_cloud_get_valid_strings).and_return(["hello"])
|
73
83
|
results = @article.send(:recursive_word_cloud, 1)
|
data/spec/dummy/db/schema.rb
CHANGED
data/spec/integration_spec.rb
CHANGED
@@ -108,12 +108,13 @@ describe "Integration tests" do
|
|
108
108
|
|
109
109
|
end
|
110
110
|
|
111
|
-
it "should return
|
111
|
+
it "should return two levels of associations if the depth is set to 2" do
|
112
112
|
@word_cloud_output = @article.word_cloud(:array)
|
113
113
|
|
114
114
|
expected_word_cloud_output = [
|
115
|
-
@author.name,
|
116
|
-
@
|
115
|
+
@author.name, # default name
|
116
|
+
@author.biography, # from author word cloud
|
117
|
+
@publisher.name # default name
|
117
118
|
]
|
118
119
|
expected_word_cloud_output.each do |str|
|
119
120
|
@word_cloud_output.should include str
|
data/spec/support/blueprints.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: acts_as_word_cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeremiah Hemphill
|
@@ -11,14 +11,14 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-03-14 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
18
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 3.1.0
|
24
24
|
type: :runtime
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
requirement: &id006 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
|
-
- -
|
76
|
+
- - ">="
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: 1.2.3
|
79
79
|
type: :development
|
@@ -186,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
186
|
requirements:
|
187
187
|
- - ">="
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
hash:
|
189
|
+
hash: 2627755293098628913
|
190
190
|
segments:
|
191
191
|
- 0
|
192
192
|
version: "0"
|