acts-as-taggable-on-mongoid 6.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []