acts-as-taggable-on-mongoid 6.0.1.1

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.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +63 -0
  3. data/.gitignore +54 -0
  4. data/.reek.yml +8 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +59 -0
  7. data/.ruby-version +1 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +10 -0
  10. data/Gemfile.lock +203 -0
  11. data/LICENSE.txt +21 -0
  12. data/PULL_REQUEST_TEMPLATE.md +11 -0
  13. data/README.md +741 -0
  14. data/Rakefile +8 -0
  15. data/acts-as-taggable-on-mongoid.gemspec +54 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/codecov.yml +3 -0
  19. data/config/pronto-circleci.yml +7 -0
  20. data/lib/acts-as-taggable-on-mongoid.rb +80 -0
  21. data/lib/acts_as_taggable_on_mongoid/configuration.rb +94 -0
  22. data/lib/acts_as_taggable_on_mongoid/default_parser.rb +120 -0
  23. data/lib/acts_as_taggable_on_mongoid/errors/duplicate_tag_error.rb +9 -0
  24. data/lib/acts_as_taggable_on_mongoid/generic_parser.rb +44 -0
  25. data/lib/acts_as_taggable_on_mongoid/models/tag.rb +103 -0
  26. data/lib/acts_as_taggable_on_mongoid/models/tagging.rb +80 -0
  27. data/lib/acts_as_taggable_on_mongoid/tag_list.rb +169 -0
  28. data/lib/acts_as_taggable_on_mongoid/taggable.rb +131 -0
  29. data/lib/acts_as_taggable_on_mongoid/taggable/changeable.rb +71 -0
  30. data/lib/acts_as_taggable_on_mongoid/taggable/core.rb +219 -0
  31. data/lib/acts_as_taggable_on_mongoid/taggable/list_tags.rb +45 -0
  32. data/lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition.rb +189 -0
  33. data/lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition/attributes.rb +77 -0
  34. data/lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition/changeable.rb +140 -0
  35. data/lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition/names.rb +39 -0
  36. data/lib/acts_as_taggable_on_mongoid/taggable/utils/tag_list_diff.rb +121 -0
  37. data/lib/acts_as_taggable_on_mongoid/version.rb +5 -0
  38. metadata +352 -0
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOnMongoid
4
+ module Taggable
5
+ class TagTypeDefinition
6
+ # This module extracts out the basic configuration type attributes of the tag definition.
7
+ #
8
+ # All attributes are based off of the Configuration class and in fact will default to
9
+ # the corresponding value in the configuration if not explicitly specified/set when the
10
+ # tag is defined.
11
+ module Attributes
12
+ attr_reader :cached_in_model,
13
+ :default
14
+
15
+ def parser
16
+ @parser || ActsAsTaggableOnMongoid.default_parser
17
+ end
18
+
19
+ def tags_table
20
+ @tags_table || ActsAsTaggableOnMongoid.tags_table
21
+ end
22
+
23
+ def taggings_table
24
+ @taggings_table || ActsAsTaggableOnMongoid.taggings_table
25
+ end
26
+
27
+ def force_lowercase
28
+ if defined?(@force_lowercase)
29
+ @force_lowercase
30
+ else
31
+ ActsAsTaggableOnMongoid.configuration.force_lowercase?
32
+ end
33
+ end
34
+
35
+ def force_parameterize
36
+ if defined?(@force_parameterize)
37
+ @force_parameterize
38
+ else
39
+ ActsAsTaggableOnMongoid.configuration.force_parameterize?
40
+ end
41
+ end
42
+
43
+ def preserve_tag_order
44
+ if defined?(@preserve_tag_order)
45
+ @preserve_tag_order
46
+ else
47
+ ActsAsTaggableOnMongoid.configuration.preserve_tag_order?
48
+ end
49
+ end
50
+
51
+ def remove_unused_tags
52
+ if defined?(@remove_unused_tags)
53
+ @remove_unused_tags
54
+ else
55
+ ActsAsTaggableOnMongoid.configuration.remove_unused_tags?
56
+ end
57
+ end
58
+
59
+ alias preserve_tag_order? preserve_tag_order
60
+ alias cached_in_model? cached_in_model
61
+ alias force_lowercase? force_lowercase
62
+ alias force_parameterize? force_parameterize
63
+ alias remove_unused_tags? remove_unused_tags
64
+
65
+ private
66
+
67
+ def default_value=(value)
68
+ value = Array.wrap(value)
69
+ options = value.extract_options!
70
+ options[:parse] = true unless options.key?(:parse)
71
+
72
+ @default = ActsAsTaggableOnMongoid::TagList.new self, value, options
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOnMongoid
4
+ module Taggable
5
+ class TagTypeDefinition
6
+ # This module adds methods to a model for the tag_list fields for the Mongoid::Changable attributes of a field
7
+ # including:
8
+ # * tag_list?
9
+ # * tag_list_change
10
+ # * tag_list_changed?
11
+ # * tag_list_will_change!
12
+ # * tag_list_changed_from_default?
13
+ # * tag_list_was
14
+ # * reset_tag_list!
15
+ # * reset_tag_list_to_default!
16
+ module Changeable
17
+ def add_list_exists
18
+ tag_definition = self
19
+ tag_list_name = tag_definition.tag_list_name
20
+
21
+ owner.taggable_mixin.module_eval do
22
+ define_method("#{tag_list_name}?") do
23
+ public_send(tag_list_name).present?
24
+ end
25
+ end
26
+ end
27
+
28
+ def add_list_change
29
+ tag_definition = self
30
+ tag_list_name = tag_definition.tag_list_name
31
+
32
+ owner.taggable_mixin.module_eval do
33
+ define_method("#{tag_list_name}_change") do
34
+ return nil unless public_send("#{tag_list_name}_changed?")
35
+
36
+ changed_value = public_send("#{tag_list_name}_was")
37
+ current_value = public_send(tag_list_name)
38
+
39
+ [changed_value, current_value] unless current_value == changed_value
40
+ end
41
+ end
42
+ end
43
+
44
+ # rubocop:disable Metrics/AbcSize
45
+
46
+ def add_list_changed
47
+ tag_definition = self
48
+ tag_list_name = tag_definition.tag_list_name
49
+
50
+ owner.taggable_mixin.module_eval do
51
+ define_method("#{tag_list_name}_changed?") do
52
+ return false unless changed_attributes.key?(tag_list_name)
53
+
54
+ changed_value = new_record? ? tag_definition.default : changed_attributes[tag_list_name]
55
+ current_value = public_send(tag_list_name)
56
+
57
+ unless tag_definition.preserve_tag_order?
58
+ changed_value.sort!
59
+ current_value.sort!
60
+ end
61
+
62
+ current_value != changed_value
63
+ end
64
+ end
65
+ end
66
+
67
+ # rubocop:enable Metrics/AbcSize
68
+
69
+ def add_will_change
70
+ tag_definition = self
71
+ tag_list_name = tag_definition.tag_list_name
72
+
73
+ owner.taggable_mixin.module_eval do
74
+ define_method("#{tag_list_name}_will_change!") do
75
+ attribute_wil_change! tag_list_name
76
+ end
77
+ end
78
+ end
79
+
80
+ def add_changed_from_default?
81
+ tag_definition = self
82
+ tag_list_name = tag_definition.tag_list_name
83
+
84
+ owner.taggable_mixin.module_eval do
85
+ define_method("#{tag_list_name}_changed_from_default?") do
86
+ changed_value = tag_definition.default
87
+ current_value = public_send(tag_list_name)
88
+
89
+ unless tag_definition.preserve_tag_order?
90
+ changed_value.sort!
91
+ current_value.sort!
92
+ end
93
+
94
+ current_value != changed_value
95
+ end
96
+ end
97
+ end
98
+
99
+ def add_get_was
100
+ tag_definition = self
101
+ tag_list_name = tag_definition.tag_list_name
102
+
103
+ owner.taggable_mixin.module_eval do
104
+ define_method("#{tag_list_name}_was") do
105
+ return tag_definition.default if new_record?
106
+
107
+ if public_send "#{tag_list_name}_changed?"
108
+ changed_attributes[tag_list_name]
109
+ else
110
+ public_send tag_list_name
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ def add_reset_list
117
+ tag_definition = self
118
+ tag_list_name = tag_definition.tag_list_name
119
+
120
+ owner.taggable_mixin.module_eval do
121
+ define_method("reset_#{tag_list_name}!") do
122
+ public_send "#{tag_list_name}=", public_send("#{tag_list_name}_was")
123
+ end
124
+ end
125
+ end
126
+
127
+ def add_reset_to_default
128
+ tag_definition = self
129
+ tag_list_name = tag_definition.tag_list_name
130
+
131
+ owner.taggable_mixin.module_eval do
132
+ define_method("reset_#{tag_list_name}_to_default!") do
133
+ public_send "#{tag_list_name}=", tag_definition.default
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOnMongoid
4
+ module Taggable
5
+ class TagTypeDefinition
6
+ # Methods for the TagTypeDefinition class which provide the names for important/commonly used methods that will
7
+ # be defined/added for a tag when it is added to a model.
8
+ module Names
9
+ def tag_list_name
10
+ @tag_list_name ||= "#{single_tag_type}_list"
11
+ end
12
+
13
+ def tag_list_variable_name
14
+ @tag_list_variable_name ||= "@#{tag_list_name}"
15
+ end
16
+
17
+ def all_tag_list_name
18
+ @all_tag_list_name ||= "all_#{tag_type}_list"
19
+ end
20
+
21
+ def all_tag_list_variable_name
22
+ @all_tag_list_variable_name ||= "@#{all_tag_list_name}"
23
+ end
24
+
25
+ def single_tag_type
26
+ @single_tag_type ||= tag_type.to_s.singularize
27
+ end
28
+
29
+ def base_tags_method
30
+ @base_tags_method ||= "base_#{tags_table.name.demodulize.underscore.downcase.pluralize}".to_sym
31
+ end
32
+
33
+ def taggings_name
34
+ @taggings_name ||= taggings_table.name.demodulize.underscore.downcase.pluralize.to_sym
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOnMongoid
4
+ module Taggable
5
+ module Utils
6
+ # A utility class for creating new taggings and deleting old taggings when the list of tags for an object
7
+ # is changed and that change is saved.
8
+ #
9
+ # The class will respect the preserve_tag_order? option for the tag and will delete any existing taggings
10
+ # and recreate them from the first moved tag onwards.
11
+ #
12
+ # If order is not preserved, it will simply delete unused taggings and add new taggings that do not already
13
+ # exist.
14
+
15
+ # :reek:TooManyInstanceVariables
16
+ # :reek:InstanceVariableAssumption
17
+ class TagListDiff
18
+ def initialize(tag_definition:, tags:, current_tags:)
19
+ @tag_definition = tag_definition
20
+ @tags = tags
21
+ @current_tags = current_tags
22
+
23
+ @old_tags = {}
24
+ @new_tags = {}
25
+ end
26
+
27
+ def call
28
+ @old_tags = current_tags - tags
29
+ @new_tags = tags - current_tags
30
+
31
+ preserve_tag_list_order
32
+ end
33
+
34
+ def create_new_tags(taggable)
35
+ new_tags.each do |tag|
36
+ tagging = taggable.
37
+ public_send(tag_definition.taggings_name).
38
+ new(tag_name: tag.name, context: tag_definition.tag_type, taggable: taggable, tag: tag)
39
+
40
+ next if tagging.save
41
+ next if ignore_tagging_error(tagging)
42
+
43
+ # re-raise error.
44
+ tagging.save!
45
+ end
46
+ end
47
+
48
+ def destroy_old_tags(taggable)
49
+ return if old_tags.blank?
50
+
51
+ taggable.
52
+ public_send(tag_definition.taggings_name).
53
+ by_context(tag_definition.tag_type).
54
+ where(:tag_name.in => old_tags.map(&:name)).
55
+ destroy_all
56
+ end
57
+
58
+ private
59
+
60
+ attr_reader :old_tags,
61
+ :new_tags,
62
+ :tag_definition,
63
+ :current_tags,
64
+ :shared_tags,
65
+ :tags
66
+
67
+ # :reek:UtilityFunction
68
+ # ignore the error if it is that the tagging already exists.
69
+ def ignore_tagging_error(tagging)
70
+ tagging_errors = tagging.errors
71
+
72
+ tagging_errors.count == 1 &&
73
+ tagging.tag_name.present? &&
74
+ tagging.tag.present? &&
75
+ (tagging_errors.key?(:tag_name) || tagging_errors.key?(:tag_id))
76
+ end
77
+
78
+ def preserve_tag_list_order
79
+ return unless tag_definition.preserve_tag_order?
80
+
81
+ @shared_tags = current_tags & tags
82
+
83
+ return if share_tags_sorted?
84
+
85
+ # Update arrays of tag objects
86
+ @old_tags |= current_tags[first_ordered_difference..-1]
87
+
88
+ preserve_new_tag_list_order
89
+ end
90
+
91
+ def share_tags_sorted?
92
+ shared_tags.none? || tags[0...shared_tags.size] == shared_tags
93
+ end
94
+
95
+ # :reek:NestedIterators
96
+ def preserve_new_tag_list_order
97
+ preserved_tags = new_tags | current_tags[first_ordered_difference..-1] & shared_tags
98
+
99
+ # Order the array of tag objects to match the tag list
100
+ @new_tags = tags.map do |tag|
101
+ preserved_tags.find { |preserved_tag| preserved_tag.name == tag.name }
102
+ end.compact
103
+ end
104
+
105
+ def first_ordered_difference
106
+ return @first_ordered_difference if defined?(@first_ordered_difference)
107
+
108
+ index = 0
109
+
110
+ while index < shared_tags.length
111
+ break unless shared_tags[index] == tags[index]
112
+
113
+ index += 1
114
+ end
115
+
116
+ @first_ordered_difference = index
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOnMongoid
4
+ VERSION = "6.0.1.1"
5
+ end
metadata ADDED
@@ -0,0 +1,352 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts-as-taggable-on-mongoid
3
+ version: !ruby/object:Gem::Version
4
+ version: 6.0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - RealNobody
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-09-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mongoid
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.16'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.16'
55
+ - !ruby/object:Gem::Dependency
56
+ name: codecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.1'
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: 0.1.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '0.1'
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.1.0
75
+ - !ruby/object:Gem::Dependency
76
+ name: cornucopia
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: database_cleaner
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: pronto
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: pronto-brakeman
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: pronto-circleci
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: pronto-fasterer
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: pronto-rails_best_practices
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: pronto-reek
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: pronto-rubocop
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rake
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '10.0'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '10.0'
215
+ - !ruby/object:Gem::Dependency
216
+ name: rspec
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '3.0'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '3.0'
229
+ - !ruby/object:Gem::Dependency
230
+ name: rspec_junit_formatter
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: 0.3.0
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: 0.3.0
243
+ - !ruby/object:Gem::Dependency
244
+ name: rubocop
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ - !ruby/object:Gem::Dependency
258
+ name: simplecov
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: simplecov-rcov
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ description: A partial mongoid implementation of tagging based on/inspired by acts-as-taggable-on.
286
+ email:
287
+ - admin@cardtapp.com
288
+ executables: []
289
+ extensions: []
290
+ extra_rdoc_files: []
291
+ files:
292
+ - ".circleci/config.yml"
293
+ - ".gitignore"
294
+ - ".reek.yml"
295
+ - ".rspec"
296
+ - ".rubocop.yml"
297
+ - ".ruby-version"
298
+ - CODE_OF_CONDUCT.md
299
+ - Gemfile
300
+ - Gemfile.lock
301
+ - LICENSE.txt
302
+ - PULL_REQUEST_TEMPLATE.md
303
+ - README.md
304
+ - Rakefile
305
+ - acts-as-taggable-on-mongoid.gemspec
306
+ - bin/console
307
+ - bin/setup
308
+ - codecov.yml
309
+ - config/pronto-circleci.yml
310
+ - lib/acts-as-taggable-on-mongoid.rb
311
+ - lib/acts_as_taggable_on_mongoid/configuration.rb
312
+ - lib/acts_as_taggable_on_mongoid/default_parser.rb
313
+ - lib/acts_as_taggable_on_mongoid/errors/duplicate_tag_error.rb
314
+ - lib/acts_as_taggable_on_mongoid/generic_parser.rb
315
+ - lib/acts_as_taggable_on_mongoid/models/tag.rb
316
+ - lib/acts_as_taggable_on_mongoid/models/tagging.rb
317
+ - lib/acts_as_taggable_on_mongoid/tag_list.rb
318
+ - lib/acts_as_taggable_on_mongoid/taggable.rb
319
+ - lib/acts_as_taggable_on_mongoid/taggable/changeable.rb
320
+ - lib/acts_as_taggable_on_mongoid/taggable/core.rb
321
+ - lib/acts_as_taggable_on_mongoid/taggable/list_tags.rb
322
+ - lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition.rb
323
+ - lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition/attributes.rb
324
+ - lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition/changeable.rb
325
+ - lib/acts_as_taggable_on_mongoid/taggable/tag_type_definition/names.rb
326
+ - lib/acts_as_taggable_on_mongoid/taggable/utils/tag_list_diff.rb
327
+ - lib/acts_as_taggable_on_mongoid/version.rb
328
+ homepage: http://www.cardtapp.com
329
+ licenses:
330
+ - MIT
331
+ metadata: {}
332
+ post_install_message:
333
+ rdoc_options: []
334
+ require_paths:
335
+ - lib
336
+ required_ruby_version: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - ">="
339
+ - !ruby/object:Gem::Version
340
+ version: '0'
341
+ required_rubygems_version: !ruby/object:Gem::Requirement
342
+ requirements:
343
+ - - ">="
344
+ - !ruby/object:Gem::Version
345
+ version: '0'
346
+ requirements: []
347
+ rubyforge_project:
348
+ rubygems_version: 2.5.1
349
+ signing_key:
350
+ specification_version: 4
351
+ summary: A partial mongoid implementation of tagging based on/inspired by acts-as-taggable-on.
352
+ test_files: []