mongoid-tags 0.3.1 → 1.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc23706960b5dbdd4256df7b49a3d3627e8da8f3
4
- data.tar.gz: e4290aff3b45355969dc1a7dc41e673478b9d9b1
3
+ metadata.gz: cddf6fe5b25717c93d1e89b7d9de37b80fb64464
4
+ data.tar.gz: fd6d7ec565cec4c463023284e10dbf4b33c771ea
5
5
  SHA512:
6
- metadata.gz: c412f36d162f9ad8b0cb75931e8151445a4e38bf7c3929c99ce21c3d664983afb2751556d0eebb103230444c1ba787617b3f849a0b324ce926692a1bae930882
7
- data.tar.gz: 794f323764521ee059f88eda133bcea5f3bba9902b8a2ab377fa12ac2ee54cbc1c2da104387d9258008cee9ca0fddd9ac064f6bb1d539e0a07e346ec8744347a
6
+ metadata.gz: bbbeb676b72c5e002f652b892a1adaad91d9a45702d700e092cf03fcccf66b378ec118917214683fd7fcacd11813b1146f8e40a32680397ac90d58b630a31e17
7
+ data.tar.gz: d49e6435a96626e5f4415c3595b318cbec2e3cd606e93f4727bd824d61bb40c096877852642889e1270eba77eaa44721154ce7039fb2246b9072eb5f640019bc
data/.yardopts ADDED
@@ -0,0 +1,7 @@
1
+ --title "mongoid-tags"
2
+ --charset utf-8
3
+ --no-stats
4
+ --no-api
5
+ -
6
+ README.md
7
+ LICENSE.md
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ # Not released
2
+ * Adds subqueries. See README.md for examples.
3
+
1
4
  # 0.3.0 (February 12, 2014)
2
5
  * Use Rake::FileList.
3
6
  * Removes Gemfile warning.
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
-
3
2
  gemspec
4
3
 
5
4
  gem 'minitest'
6
5
  gem 'rake'
6
+ gem 'yard'
data/LICENSE.md ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012-2014 Mario Uher
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -19,9 +19,7 @@ class Document
19
19
  include Mongoid::Document
20
20
  include Mongoid::Tags
21
21
  end
22
- ```
23
22
 
24
- ```ruby
25
23
  # Documents tagged foo || bar
26
24
  Document.tagged('foo bar')
27
25
 
@@ -30,9 +28,15 @@ Document.tagged('+foo bar')
30
28
 
31
29
  # Documents tagged foo, but !bar
32
30
  Document.tagged('foo -bar')
31
+
32
+ # Documents tagged foo and bar or baz
33
+ Document.tagged('(+foo +bar) baz')
34
+
35
+ # Documents tagged foo and bar, or foo and baz
36
+ Document.tagged('(+foo +bar)(+foo +baz)')
33
37
  ```
34
38
 
35
- Be sure to checkout spec/integration_spec.rb for more examples. By the way, `tagged` returns a `Mongoid::Criteria` object so you can chain it to your existing criteria, e.g: `Document.where(published: true).tagged('foo').desc(:created_at)`
39
+ Be sure to checkout test/integration_test.rb for more examples. By the way, `tagged` returns a `Mongoid::Criteria` object so you can chain it to your existing criteria, e.g: `Document.where(published: true).tagged('foo').desc(:created_at)`
36
40
 
37
41
  ## Contributing
38
42
 
@@ -48,21 +52,4 @@ Be sure to checkout spec/integration_spec.rb for more examples. By the way, `tag
48
52
 
49
53
  Copyright (c) 2012-2014 Mario Uher
50
54
 
51
- Permission is hereby granted, free of charge, to any person obtaining
52
- a copy of this software and associated documentation files (the
53
- "Software"), to deal in the Software without restriction, including
54
- without limitation the rights to use, copy, modify, merge, publish,
55
- distribute, sublicense, and/or sell copies of the Software, and to
56
- permit persons to whom the Software is furnished to do so, subject to
57
- the following conditions:
58
-
59
- The above copyright notice and this permission notice shall be
60
- included in all copies or substantial portions of the Software.
61
-
62
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
63
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
64
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
65
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
66
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
67
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
68
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
55
+ See LICENSE.md.
data/Rakefile CHANGED
@@ -1,3 +1,13 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ Bundler.require
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+
9
+ YARD::Rake::YardocTask.new(:doc)
10
+
1
11
  require 'rake/testtask'
2
12
 
3
13
  Rake::TestTask.new do |t|
data/lib/mongoid/tags.rb CHANGED
@@ -6,20 +6,45 @@ module Mongoid
6
6
  module Tags
7
7
  extend ActiveSupport::Concern
8
8
 
9
+ # @!attribute tags
10
+ # @return [Array] all tags of the current document
9
11
  included do |base|
10
12
  field :tags, type: Array, default: []
11
13
  index tags: 1
12
14
  end
13
15
 
14
16
  module ClassMethods
17
+ ##
18
+ # Returns a hash representing a Mongoid criteria
19
+ # for the given tag query.
20
+ #
21
+ # @example
22
+ # hash = Document.selector('foo bar')
23
+ # hash # => {"tags"=>{"$in"=>["foo", "bar"]}}
24
+ #
25
+ # @param [String] query The query you're searching for
26
+ #
27
+ # @return [Hash] Hash which can be used as a Mongoid criteria
15
28
  def selector(query)
16
- parser.parse(query).tap do |result|
17
- raise Error, parser.failure_reason unless result
18
- end.to_criteria
29
+ parsed_query = parser.parse(query)
30
+ raise Mongoid::Tags::Error, parser.failure_reason unless parsed_query
31
+
32
+ parsed_query.to_criteria
19
33
  end
20
34
 
35
+ ##
36
+ # Returns a chainable criteria for all documents
37
+ # found by the given tag query.
38
+ #
39
+ # @example
40
+ # documents = Document.tagged('foo bar')
41
+ # documents # all documents tagged foo OR bar
42
+ #
43
+ # @param [String] query The query you're searching for
44
+ #
45
+ # @return [Mongoid::Criteria] Mongoid criteria to retrieve all matching documents
21
46
  def tagged(query)
22
- where(tags: selector(query))
47
+ where(selector(query))
23
48
  end
24
49
 
25
50
  private
@@ -28,37 +53,135 @@ module Mongoid
28
53
  end
29
54
  end
30
55
 
56
+ ##
57
+ # Representation class for a tag query, e.g. `foo bar`.
58
+ #
59
+ # @api private
31
60
  class Query < Treetop::Runtime::SyntaxNode
32
- def to_criteria(tags = nil)
33
- {}.tap do |criteria|
34
- (tags.presence || elements).each do |tag|
35
- (criteria[tag.operator.selector] ||= []) << tag.to_criteria if tag.is_a? Tag
61
+ ##
62
+ # Returns a hash representing a Mongoid criteria
63
+ # for the current query.
64
+ #
65
+ # @api private
66
+ #
67
+ # @param elements
68
+ #
69
+ # @return [Hash] Hash which can be used as a Mongoid criteria
70
+ def to_criteria(elements = nil)
71
+ elements ||= self.elements
72
+
73
+ criteria = { 'tags' => Hash.new { |h, k| h[k] = [] } }
74
+
75
+ elements.each do |element|
76
+ criteria['tags'][element.operator.selector] << element.to_criteria if element.is_a?(Tag)
77
+
78
+ criteria['tags'].merge! to_criteria(Array(element.elements))['tags'] do |_, first, second|
79
+ first + second
80
+ end
81
+ end
82
+
83
+ criteria
84
+ end
85
+ end
86
+
87
+ ##
88
+ # Representation class for a subquery, e.g. `(foo bar)`.
89
+ #
90
+ # @api private
91
+ class SubQuery < Treetop::Runtime::SyntaxNode
92
+ ##
93
+ # Returns a hash representing a Mongoid criteria
94
+ # for the current query.
95
+ #
96
+ # @api private
97
+ #
98
+ # @param elements
99
+ #
100
+ # @return [Hash] Hash which can be used as a Mongoid criteria
101
+ def to_criteria(elements = nil)
102
+ elements ||= self.elements
103
+
104
+ criteria = []
105
+ subcriteria = { '$or' => [] }
36
106
 
37
- criteria.merge!(to_criteria(tag.elements)) { |key, first, second| first + second } if tag.elements.present?
107
+ elements.each do |element|
108
+ case element
109
+ when Query
110
+ criteria << element.to_criteria
111
+ when SubQuery
112
+ element.to_criteria['$or'].each do |criterion|
113
+ criteria << criterion
114
+ end
38
115
  end
39
116
  end
117
+
118
+ criteria.each do |criterion|
119
+ subcriteria['$or'] << criterion
120
+ end
121
+
122
+ subcriteria
40
123
  end
41
124
  end
42
125
 
126
+ ##
127
+ # Representation class for a tag, e.g. `foo`.
128
+ #
129
+ # @api private
43
130
  class Tag < Treetop::Runtime::SyntaxNode
131
+ ##
132
+ # Returns a string for using this tag in a Mongoid criteria.
133
+ #
134
+ # @api private
135
+ #
136
+ # @return [String] String representing this tag for a Mongoid criteria
44
137
  def to_criteria
45
138
  tag.text_value
46
139
  end
47
140
  end
48
141
 
142
+ ##
143
+ # Representation class for "or" operator, e.g. ` `.
144
+ #
145
+ # @api private
49
146
  class OrOperator < Treetop::Runtime::SyntaxNode
147
+ ##
148
+ # Returns a string for using this operator in a Mongoid criteria.
149
+ #
150
+ # @api private
151
+ #
152
+ # @return [String] String representing this operator for a Mongoid criteria
50
153
  def selector
51
154
  '$in'
52
155
  end
53
156
  end
54
157
 
158
+ ##
159
+ # Representation class for "and" operator, e.g. `+`.
160
+ #
161
+ # @api private
55
162
  class AndOperator < Treetop::Runtime::SyntaxNode
163
+ ##
164
+ # Returns a string for using this operator in a Mongoid criteria.
165
+ #
166
+ # @api private
167
+ #
168
+ # @return [String] String representing this operator for a Mongoid criteria
56
169
  def selector
57
170
  '$all'
58
171
  end
59
172
  end
60
173
 
174
+ ##
175
+ # Representation class for "not" operator, e.g. `-`.
176
+ #
177
+ # @api private
61
178
  class NotOperator < Treetop::Runtime::SyntaxNode
179
+ ##
180
+ # Returns a string for using this operator in a Mongoid criteria.
181
+ #
182
+ # @api private
183
+ #
184
+ # @return [String] String representing this operator for a Mongoid criteria
62
185
  def selector
63
186
  '$nin'
64
187
  end
data/lib/mongoid/tags.tt CHANGED
@@ -2,15 +2,19 @@ module Mongoid
2
2
  module Tags
3
3
  grammar Tags
4
4
  rule query
5
- tag (space tag)* <Query>
5
+ subquery / tag (space tag)* <Query>
6
+ end
7
+
8
+ rule subquery
9
+ '(' space? query space? ')' space? query? <SubQuery>
6
10
  end
7
11
 
8
12
  rule tag
9
- operator tag:([a-zA-Z0-9] [a-zA-Z0-9_]*) <Tag>
13
+ operator tag:([a-zA-Z0-9_]+) <Tag>
10
14
  end
11
15
 
12
16
  rule operator
13
- and_operator / not_operator / or_operator
17
+ and_operator / not_operator / or_operator
14
18
  end
15
19
 
16
20
  rule or_operator
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Tags
3
- VERSION = '0.3.1'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
data/mongoid-tags.gemspec CHANGED
@@ -1,19 +1,23 @@
1
- $: << File.expand_path('../lib', __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
2
4
  require 'mongoid/tags/version'
3
5
 
4
- Gem::Specification.new do |gem|
5
- gem.name = 'mongoid-tags'
6
- gem.version = Mongoid::Tags::VERSION
7
- gem.authors = 'Mario Uher'
8
- gem.email = 'uher.mario@gmail.com'
9
- gem.homepage = 'https://github.com/haihappen/mongoid-tags'
10
- gem.summary = 'Simple tagging system with boolean search.'
11
- gem.description = 'Mongoid::Tags adds a simple tagging system to your Mongoid documents, and allows you to query them using a boolean search syntax.'
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mongoid-tags"
8
+ spec.version = Mongoid::Tags::VERSION
9
+ spec.authors = "Mario Uher"
10
+ spec.email = "uher.mario@gmail.com"
11
+ spec.homepage = "https://github.com/haihappen/mongoid-tags"
12
+ spec.summary = "Simple tagging system with boolean search."
13
+ spec.description = "Mongoid::Tags adds a simple tagging system to your Mongoid documents, and allows you to query them using a boolean search syntax."
14
+ spec.license = "MIT"
12
15
 
13
- gem.files = `git ls-files`.split("\n")
14
- gem.require_path = 'lib'
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
15
19
 
16
- gem.add_dependency 'activesupport'
17
- gem.add_dependency 'mongoid'
18
- gem.add_dependency 'treetop'
20
+ spec.add_dependency 'activesupport', '~> 4'
21
+ spec.add_dependency 'mongoid', '~> 4'
22
+ spec.add_dependency 'treetop', '~> 1'
19
23
  end
@@ -1,8 +1,8 @@
1
1
  require_relative 'test_helper'
2
2
 
3
3
  # Create all possible combinations of tags.
4
- 3.times do |i|
5
- %w[foo bar baz].combination(i + 1).each do |tags|
4
+ 4.times do |i|
5
+ %w[foo bar baz qux].combination(i + 1).each do |tags|
6
6
  Document.create tags: tags
7
7
  end
8
8
  end
@@ -16,8 +16,16 @@ def include?(*tags)
16
16
  end
17
17
  end
18
18
 
19
+ def include_all?(*tags)
20
+ proc do |document|
21
+ tags.all? do |tag|
22
+ document.tags.include?(tag)
23
+ end
24
+ end
25
+ end
19
26
 
20
- class IntegrationTest < Minitest::Unit::TestCase
27
+
28
+ class IntegrationTest < Minitest::Test
21
29
  def test_documents_including_foo
22
30
  assert Document.tagged('foo').all? &include?('foo')
23
31
  end
@@ -117,4 +125,31 @@ class IntegrationTest < Minitest::Unit::TestCase
117
125
  assert documents.none? &include?('bar')
118
126
  assert documents.none? &include?('baz')
119
127
  end
128
+
129
+
130
+ def test_documents_including_both_foo_and_bar_and_or_baz
131
+ documents = Document.tagged('(+foo +bar) baz').to_a
132
+
133
+ assert documents.any? &include_all?('foo', 'bar')
134
+ documents.delete_if &include_all?('foo', 'bar')
135
+ assert documents.all? &include?('baz')
136
+ end
137
+
138
+
139
+ def test_documents_including_both_foo_and_bar_and_or_baz_or_qux
140
+ documents = Document.tagged('(+foo +bar) baz qux').to_a
141
+
142
+ assert documents.any? &include_all?('foo', 'bar')
143
+ documents.delete_if &include_all?('foo', 'bar')
144
+ assert documents.any? &include?('baz', 'qux')
145
+ end
146
+
147
+
148
+ def test_documents_including_foo_and_bar_or_baz_and_qux
149
+ documents = Document.tagged('(+foo +bar)(+baz +qux)').to_a
150
+
151
+ assert documents.any? &include_all?('foo', 'bar')
152
+ documents.delete_if &include_all?('foo', 'bar')
153
+ assert documents.any? &include_all?('baz', 'qux')
154
+ end
120
155
  end
data/test/mongoid.yml CHANGED
@@ -4,5 +4,3 @@ test:
4
4
  database: mongoid_tags_test
5
5
  hosts:
6
6
  - localhost:27017
7
- options:
8
- consistency: :strong
data/test/tags_test.rb CHANGED
@@ -1,19 +1,33 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- class TagsTest < Minitest::Unit::TestCase
3
+ class TagsTest < Minitest::Test
4
4
  def assert_selector(query, selector)
5
5
  assert_equal selector, Document.selector(query)
6
6
  end
7
7
 
8
8
  def test_valid_queries
9
- assert_selector 'foo', '$in' => %w[foo]
10
- assert_selector '+foo', '$all' => %w[foo]
11
- assert_selector '-foo', '$nin' => %w[foo]
12
- assert_selector 'foo bar', '$in' => %w[foo bar]
13
- assert_selector 'foo +bar', '$in' => %w[foo], '$all' => %w[bar]
14
- assert_selector 'foo +bar +baz', '$in' => %w[foo], '$all' => %w[bar baz]
15
- assert_selector 'foo +bar baz', '$in' => %w[foo baz], '$all' => %w[bar]
16
- assert_selector 'foo +bar -baz', '$in' => %w[foo], '$all' => %w[bar], '$nin' => %w[baz]
9
+ assert_selector 'foo', { 'tags' => { '$in' => %w[foo] }}
10
+ assert_selector '+foo', { 'tags' => { '$all' => %w[foo] }}
11
+ assert_selector '-foo', { 'tags' => { '$nin' => %w[foo] }}
12
+ assert_selector 'foo bar', { 'tags' => { '$in' => %w[foo bar] }}
13
+ assert_selector 'foo +bar', { 'tags' => { '$in' => %w[foo], '$all' => %w[bar] }}
14
+ assert_selector 'foo +bar +baz', { 'tags' => { '$in' => %w[foo], '$all' => %w[bar baz] }}
15
+ assert_selector 'foo +bar baz', { 'tags' => { '$in' => %w[foo baz], '$all' => %w[bar] }}
16
+ assert_selector 'foo +bar -baz', { 'tags' => { '$in' => %w[foo], '$all' => %w[bar], '$nin' => %w[baz] }}
17
+
18
+ assert_selector '(foo)', { '$or' => [{ 'tags' => { '$in' => %w[foo] } }] }
19
+ assert_selector '(foo bar)', { '$or' => [{ 'tags' => { '$in' => %w[foo bar] } }] }
20
+ assert_selector '( foo bar )', { '$or' => [{ 'tags' => { '$in' => %w[foo bar] } }] }
21
+ assert_selector '(foo)(bar)', { '$or' => [{ 'tags' => { '$in' => %w[foo] } }, { 'tags' => { '$in' => %w[bar] } }] }
22
+ assert_selector '(foo)(bar)(baz)', { '$or' => [{ 'tags' => { '$in' => %w[foo] } }, { 'tags' => { '$in' => %w[bar] } }, { 'tags' => { '$in' => %w[baz] } }] }
23
+ assert_selector '(+foo)(-bar)', { '$or' => [{ 'tags' => { '$all' => %w[foo] } }, { 'tags' => { '$nin' => %w[bar] } }] }
24
+
25
+ assert_selector '(+foo +bar)(+foo +baz)', { '$or' => [{ 'tags' => { '$all' => %w[foo bar] } }, { 'tags' => { '$all' => %w[foo baz] } }] }
26
+ assert_selector '(+foo +bar)(+foo +baz)(+foo +qux)', { '$or' => [{ 'tags' => { '$all' => %w[foo bar] } }, { 'tags' => { '$all' => %w[foo baz] } }, { 'tags' => { '$all' => %w[foo qux] } }] }
27
+
28
+ assert_selector '(+foo +bar) baz qux', { '$or' => [{ 'tags' => { '$all' => %w[foo bar] } }, { 'tags' => { '$in' => %w[baz qux] } } ]}
29
+
30
+ assert_selector '_foo _bar', { 'tags' => { '$in' => %w[_foo _bar] }}
17
31
  end
18
32
 
19
33
  def test_invalid_queries
data/test/test_helper.rb CHANGED
@@ -12,3 +12,4 @@ class Document
12
12
  end
13
13
 
14
14
  Mongoid.load!(File.expand_path('../mongoid.yml', __FILE__), 'test')
15
+ Mongoid.purge!
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-tags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Uher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-17 00:00:00.000000000 Z
11
+ date: 2014-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongoid
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: treetop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '1'
55
55
  description: Mongoid::Tags adds a simple tagging system to your Mongoid documents,
56
56
  and allows you to query them using a boolean search syntax.
57
57
  email: uher.mario@gmail.com
@@ -60,8 +60,10 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
+ - ".yardopts"
63
64
  - CHANGELOG.md
64
65
  - Gemfile
66
+ - LICENSE.md
65
67
  - README.md
66
68
  - Rakefile
67
69
  - lib/mongoid/tags.rb
@@ -73,7 +75,8 @@ files:
73
75
  - test/tags_test.rb
74
76
  - test/test_helper.rb
75
77
  homepage: https://github.com/haihappen/mongoid-tags
76
- licenses: []
78
+ licenses:
79
+ - MIT
77
80
  metadata: {}
78
81
  post_install_message:
79
82
  rdoc_options: []
@@ -91,8 +94,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
94
  version: '0'
92
95
  requirements: []
93
96
  rubyforge_project:
94
- rubygems_version: 2.2.0
97
+ rubygems_version: 2.2.2
95
98
  signing_key:
96
99
  specification_version: 4
97
100
  summary: Simple tagging system with boolean search.
98
- test_files: []
101
+ test_files:
102
+ - test/integration_test.rb
103
+ - test/mongoid.yml
104
+ - test/tags_test.rb
105
+ - test/test_helper.rb
106
+ has_rdoc: