LittleWeasel 4.0.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -1
  3. data/Jenkinsfile +20 -0
  4. data/LittleWeasel.gemspec +3 -3
  5. data/README.md +1 -1
  6. data/lib/LittleWeasel/dictionary_key.rb +2 -2
  7. data/lib/LittleWeasel/dictionary_manager.rb +10 -4
  8. data/lib/LittleWeasel/metadata/metadatable.rb +5 -7
  9. data/lib/LittleWeasel/modules/dictionary_cache_validatable.rb +3 -5
  10. data/lib/LittleWeasel/modules/dictionary_key_validatable.rb +3 -5
  11. data/lib/LittleWeasel/modules/dictionary_metadata_validatable.rb +3 -5
  12. data/lib/LittleWeasel/modules/dictionary_source_validatable.rb +15 -0
  13. data/lib/LittleWeasel/modules/dictionary_sourceable.rb +66 -6
  14. data/lib/LittleWeasel/modules/dictionary_validatable.rb +0 -12
  15. data/lib/LittleWeasel/modules/language.rb +10 -9
  16. data/lib/LittleWeasel/modules/language_validatable.rb +2 -4
  17. data/lib/LittleWeasel/modules/locale.rb +7 -24
  18. data/lib/LittleWeasel/modules/order_validatable.rb +3 -5
  19. data/lib/LittleWeasel/modules/region.rb +10 -9
  20. data/lib/LittleWeasel/modules/region_validatable.rb +2 -4
  21. data/lib/LittleWeasel/modules/tag_validatable.rb +2 -4
  22. data/lib/LittleWeasel/preprocessors/preprocessed_word.rb +1 -0
  23. data/lib/LittleWeasel/preprocessors/preprocessed_word_validatable.rb +1 -0
  24. data/lib/LittleWeasel/preprocessors/preprocessed_words.rb +6 -2
  25. data/lib/LittleWeasel/preprocessors/preprocessed_words_validatable.rb +1 -0
  26. data/lib/LittleWeasel/preprocessors/word_preprocessor.rb +1 -0
  27. data/lib/LittleWeasel/services/dictionary_cache_service.rb +11 -62
  28. data/lib/LittleWeasel/services/dictionary_creator_service.rb +2 -2
  29. data/lib/LittleWeasel/services/dictionary_file_loader_service.rb +1 -1
  30. data/lib/LittleWeasel/services/dictionary_metadata_service.rb +4 -2
  31. data/lib/LittleWeasel/version.rb +1 -1
  32. data/spec/factories/dictionary_cache_service.rb +2 -2
  33. data/spec/lib/LittleWeasel/dictionary_manager_spec.rb +52 -2
  34. data/spec/lib/LittleWeasel/metadata/invalid_words_metadata_spec.rb +1 -1
  35. data/spec/lib/LittleWeasel/modules/dictionary_sourceable_spec.rb +56 -19
  36. data/spec/lib/LittleWeasel/modules/language_spec.rb +65 -5
  37. data/spec/lib/LittleWeasel/modules/locale_spec.rb +4 -49
  38. data/spec/lib/LittleWeasel/modules/region_spec.rb +65 -5
  39. data/spec/lib/LittleWeasel/preprocessors/word_preprocessor_managable_spec.rb +28 -2
  40. data/spec/lib/LittleWeasel/preprocessors/word_preprocessor_spec.rb +43 -0
  41. data/spec/lib/LittleWeasel/services/dictionary_cache_service_spec.rb +25 -25
  42. data/spec/support/file_helpers.rb +17 -3
  43. data/spec/support/shared_contexts.rb +0 -1
  44. metadata +12 -15
  45. data/lib/LittleWeasel/modules/dictionary_loader_servicable.rb +0 -27
  46. data/lib/LittleWeasel/services/dictionary_loader_service.rb +0 -59
  47. data/spec/factories/dictionary_loader_service.rb +0 -14
  48. data/spec/lib/LittleWeasel/services/dictionary_loader_service_spec.rb +0 -50
@@ -11,8 +11,6 @@ RSpec.describe LittleWeasel::Preprocessors::WordPreprocessorManagable, type: :mo
11
11
  include WordPreprocessorManagable
12
12
  end
13
13
 
14
- subject { MockSubject.new }
15
-
16
14
  class MockWordPreprocessor01 < LittleWeasel::Preprocessors::WordPreprocessor
17
15
  def initialize(order: 0)
18
16
  super order: order
@@ -153,6 +151,34 @@ RSpec.describe LittleWeasel::Preprocessors::WordPreprocessorManagable, type: :mo
153
151
  expect(subject.word_preprocessors).to eq expected_results
154
152
  end
155
153
  end
154
+
155
+ context 'when passing a nil argument' do
156
+ before do
157
+ subject.clear_preprocessors
158
+ end
159
+
160
+ context 'when a block is provided' do
161
+ it 'does NOT raise an error' do
162
+ expect do
163
+ subject.add_preprocessors { |_word_preprocessors| }
164
+ end.to_not raise_error
165
+ end
166
+
167
+ it 'uses the word preprocessors added via the block' do
168
+ expect do
169
+ subject.add_preprocessors do |word_preprocessors|
170
+ word_preprocessors.concat word_preprocessors_01_thru_03
171
+ end
172
+ end.to change { subject.word_preprocessors.count }.from(0).to(3)
173
+ end
174
+ end
175
+
176
+ context 'when a block is NOT provided' do
177
+ it 'raises an error' do
178
+ expect { subject.add_preprocessors }.to raise_error('A block is required if argument word_preprocessors is nil')
179
+ end
180
+ end
181
+ end
156
182
  end
157
183
 
158
184
  #replace_preprocessors
@@ -84,6 +84,20 @@ RSpec.describe LittleWeasel::Preprocessors::WordPreprocessor do
84
84
  end
85
85
  end
86
86
 
87
+ #preprocessor_on!
88
+ describe '#preprocessor_on!' do
89
+ before do
90
+ expect(subject.preprocessor_off?).to eq true
91
+ end
92
+
93
+ let(:preprocessor_on) { false }
94
+
95
+ it 'turns the preprocessor on' do
96
+ subject.preprocessor_on!
97
+ expect(subject.preprocessor_on).to eq true
98
+ end
99
+ end
100
+
87
101
  #preprocessor_on?
88
102
  describe '#preprocessor_on?' do
89
103
  context 'when #preprocessor_on is true' do
@@ -172,4 +186,33 @@ RSpec.describe LittleWeasel::Preprocessors::WordPreprocessor do
172
186
  end
173
187
  end
174
188
  end
189
+
190
+ #preprocessor_off?
191
+ describe '#preprocessor_off?' do
192
+ context 'when #preprocessor_on is false' do
193
+ let(:preprocessor_on) { false }
194
+
195
+ it 'returns true' do
196
+ expect(subject.preprocessor_off?).to eq true
197
+ end
198
+ end
199
+
200
+ context 'when #preprocessor_on is true' do
201
+ it 'returns false' do
202
+ expect(subject.preprocessor_off?).to eq false
203
+ end
204
+ end
205
+ end
206
+
207
+ #preprocessor_off!
208
+ describe '#preprocessor_off!' do
209
+ before do
210
+ expect(subject.preprocessor_on?).to eq true
211
+ end
212
+
213
+ it 'turns the preprocessor off' do
214
+ subject.preprocessor_off!
215
+ expect(subject.preprocessor_on).to eq false
216
+ end
217
+ end
175
218
  end
@@ -58,7 +58,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
58
58
 
59
59
  context 'when passing a NON-initialized dictionary cache Hash' do
60
60
  before do
61
- subject.add_dictionary_source source: file
61
+ subject.add_dictionary_source dictionary_source: file
62
62
  end
63
63
 
64
64
  it 'returns false' do
@@ -122,9 +122,9 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
122
122
 
123
123
  before do
124
124
  create(:dictionary_cache_service, dictionary_key: en_us_dictionary_key, dictionary_cache: dictionary_cache)
125
- .add_dictionary_source source: memory_source
125
+ .add_dictionary_source dictionary_source: memory_source
126
126
  create(:dictionary_cache_service, dictionary_key: en_gb_dictionary_key, dictionary_cache: dictionary_cache)
127
- .add_dictionary_source source: dictionary_path_for(file_name: en_gb_dictionary_key.key)
127
+ .add_dictionary_source dictionary_source: dictionary_path_for(file_name: en_gb_dictionary_key.key)
128
128
  end
129
129
 
130
130
  it 'returns false' do
@@ -140,18 +140,18 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
140
140
  end
141
141
  end
142
142
 
143
- #add_dictionary_source source: memory_source
144
- describe '#add_dictionary_source source: memory_source' do
143
+ #add_dictionary_source dictionary_source: memory_source
144
+ describe '#add_dictionary_source dictionary_source: memory_source' do
145
145
  subject! do
146
146
  create(:dictionary_cache_service, dictionary_cache: dictionary_cache, dictionary_key: dictionary_key)
147
- .add_dictionary_source source: memory_source
147
+ .add_dictionary_source dictionary_source: memory_source
148
148
  end
149
149
 
150
150
  context 'when a dictionary already exists' do
151
151
  it 'raises an error' do
152
152
  expect do
153
153
  create(:dictionary_cache_service, dictionary_key: dictionary_key, dictionary_cache: subject.dictionary_cache)
154
- .add_dictionary_source source: memory_source
154
+ .add_dictionary_source dictionary_source: memory_source
155
155
  end.to raise_error "The dictionary source associated with key '#{key}' already exists."
156
156
  end
157
157
  end
@@ -162,7 +162,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
162
162
  end
163
163
 
164
164
  before do
165
- dictionary_cache_service.add_dictionary_source source: memory_source
165
+ dictionary_cache_service.add_dictionary_source dictionary_source: memory_source
166
166
  end
167
167
 
168
168
  let(:dictionary_source) { dictionary_cache_service.dictionary_source }
@@ -180,7 +180,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
180
180
  describe 'maintains dictionary_cache object integrity' do
181
181
  it_behaves_like 'the dictionary_cache object reference has not changed' do
182
182
  subject { create(:dictionary_cache_service, dictionary_key: dictionary_key, dictionary_cache: dictionary_cache) }
183
- let(:actual_dictionary_cache) { subject.add_dictionary_source(source: memory_source).dictionary_cache }
183
+ let(:actual_dictionary_cache) { subject.add_dictionary_source(dictionary_source: memory_source).dictionary_cache }
184
184
  let(:expected_dictionary_cache) { dictionary_cache }
185
185
  end
186
186
  end
@@ -191,13 +191,13 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
191
191
  context 'when a dictionary reference for the key already exists' do
192
192
  before do
193
193
  create(:dictionary_cache_service, dictionary_cache: dictionary_cache, dictionary_key: dictionary_key)
194
- .add_dictionary_source(source: file)
194
+ .add_dictionary_source(dictionary_source: file)
195
195
  end
196
196
 
197
197
  it 'raises an error' do
198
198
  expect do
199
199
  create(:dictionary_cache_service, dictionary_cache: dictionary_cache, dictionary_key: dictionary_key, dictionary_cache: subject.dictionary_cache)
200
- .add_dictionary_source(source: file)
200
+ .add_dictionary_source(dictionary_source: file)
201
201
  end.to raise_error "The dictionary source associated with key '#{key}' already exists."
202
202
  end
203
203
  end
@@ -205,7 +205,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
205
205
  context 'when a dictionary reference for the key DOES NOT already exist' do
206
206
  subject! do
207
207
  create(:dictionary_cache_service, dictionary_cache: dictionary_cache, dictionary_key: dictionary_key)
208
- .add_dictionary_source(source: file)
208
+ .add_dictionary_source(dictionary_source: file)
209
209
  end
210
210
 
211
211
  let(:en_gb_file) do
@@ -214,7 +214,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
214
214
 
215
215
  it 'creates a new dictionary reference' do
216
216
  dictionary_cache_service = create(:dictionary_cache_service, dictionary_key: en_gb_dictionary_key, dictionary_cache: subject.dictionary_cache)
217
- dictionary_cache_service.add_dictionary_source source: en_gb_file
217
+ dictionary_cache_service.add_dictionary_source dictionary_source: en_gb_file
218
218
  expect(dictionary_cache_service.dictionary_reference?).to eq true
219
219
  end
220
220
 
@@ -223,7 +223,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
223
223
  dictionary_cache_service = create(:dictionary_cache_service, dictionary_key: en_gb_dictionary_key, dictionary_cache: subject.dictionary_cache)
224
224
  # Note: We're using the same file as en-US dictionary key, so
225
225
  # the file source is NOT unique and will be reused.
226
- dictionary_cache_service.add_dictionary_source source: file
226
+ dictionary_cache_service.add_dictionary_source dictionary_source: file
227
227
  expect(LittleWeasel::Modules::DictionarySourceable.file_source? dictionary_cache_service.dictionary_source).to be_truthy
228
228
  expect(dictionary_cache_service.dictionary_source == subject.dictionary_source).to eq true
229
229
  end
@@ -234,7 +234,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
234
234
  dictionary_cache_service = create(:dictionary_cache_service, dictionary_key: en_gb_dictionary_key, dictionary_cache: subject.dictionary_cache)
235
235
  # Note: We're using file that is DIFFERENT from the file being used by the
236
236
  # en-US dictionary key, the file source created will be unique.
237
- dictionary_cache_service.add_dictionary_source source: en_gb_file
237
+ dictionary_cache_service.add_dictionary_source dictionary_source: en_gb_file
238
238
  expect(LittleWeasel::Modules::DictionarySourceable.file_source? dictionary_cache_service.dictionary_source).to be_truthy
239
239
  expect(dictionary_cache_service.dictionary_source == subject.dictionary_source).to eq false
240
240
  end
@@ -244,7 +244,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
244
244
  describe 'maintains dictionary_cache object integrity' do
245
245
  it_behaves_like 'the dictionary_cache object reference has not changed' do
246
246
  subject { create(:dictionary_cache_service, dictionary_key: dictionary_key, dictionary_cache: dictionary_cache) }
247
- let(:actual_dictionary_cache) { subject.add_dictionary_source(source: file).dictionary_cache }
247
+ let(:actual_dictionary_cache) { subject.add_dictionary_source(dictionary_source: file).dictionary_cache }
248
248
  let(:expected_dictionary_cache) { dictionary_cache }
249
249
  end
250
250
  end
@@ -253,7 +253,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
253
253
  #dictionary_file
254
254
  describe '#dictionary_file' do
255
255
  context 'when a file source is used' do
256
- subject! { create(:dictionary_cache_service, dictionary_key: dictionary_key).add_dictionary_source(source: file) }
256
+ subject! { create(:dictionary_cache_service, dictionary_key: dictionary_key).add_dictionary_source(dictionary_source: file) }
257
257
 
258
258
  it 'returns the dictionary file' do
259
259
  expect(subject.dictionary_file).to eq file
@@ -261,7 +261,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
261
261
  end
262
262
 
263
263
  context 'when a memory source is used' do
264
- subject! { create(:dictionary_cache_service, dictionary_key: dictionary_key).add_dictionary_source source: memory_source }
264
+ subject! { create(:dictionary_cache_service, dictionary_key: dictionary_key).add_dictionary_source dictionary_source: memory_source }
265
265
 
266
266
  let(:dictionary_words) { dictionary_words_for(dictionary_file_path: file) }
267
267
 
@@ -275,7 +275,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
275
275
  describe '#dictionary_id' do
276
276
  context 'when a dictionary id exists for the given dictionary key' do
277
277
  before do
278
- subject.add_dictionary_source source: memory_source
278
+ subject.add_dictionary_source dictionary_source: memory_source
279
279
  end
280
280
 
281
281
  it 'returns the key' do
@@ -309,13 +309,13 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
309
309
  end
310
310
  end
311
311
 
312
- #dictionary_exists?
313
- describe '#dictionary_exists?' do
312
+ #dictionary_exist?
313
+ describe '#dictionary_exist?' do
314
314
  context 'when the dictionary reference does not exist' do
315
315
  subject { create(:dictionary_cache_service, dictionary_cache: dictionary_cache) }
316
316
 
317
317
  it 'returns false' do
318
- expect(subject.dictionary_exists?).to eq false
318
+ expect(subject.dictionary_exist?).to eq false
319
319
  end
320
320
  end
321
321
 
@@ -323,7 +323,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
323
323
  subject { create(:dictionary_cache_service, dictionary_cache: dictionary_cache, dictionary_file_source: true, load: true) }
324
324
 
325
325
  it 'returns true' do
326
- expect(subject.dictionary_exists?).to eq true
326
+ expect(subject.dictionary_exist?).to eq true
327
327
  end
328
328
  end
329
329
 
@@ -331,7 +331,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
331
331
  subject { create(:dictionary_cache_service, dictionary_cache: dictionary_cache, dictionary_file_source: true) }
332
332
 
333
333
  it 'returns false' do
334
- expect(subject.dictionary_exists?).to eq false
334
+ expect(subject.dictionary_exist?).to eq false
335
335
  end
336
336
  end
337
337
  end
@@ -374,7 +374,7 @@ RSpec.describe LittleWeasel::Services::DictionaryCacheService do
374
374
 
375
375
  it 'returns the dictionary cache for the dictionary' do
376
376
  expect(subject.dictionary_reference?).to eq true
377
- expect(subject.dictionary_exists?).to eq true
377
+ expect(subject.dictionary_exist?).to eq true
378
378
  expect(subject.dictionary_object!).to be_kind_of LittleWeasel::Dictionary
379
379
  end
380
380
  end
@@ -4,18 +4,32 @@ require_relative '../../lib/LittleWeasel/modules/locale'
4
4
 
5
5
  module Support
6
6
  # This module contains methods to help with dictionary files.
7
- module FileHelpers
7
+
8
+ class Locale
8
9
  include LittleWeasel::Modules::Locale
9
10
 
11
+ attr_accessor :language, :region
12
+
13
+ def initialize(language:, region:)
14
+ self.language = language
15
+ self.region = region
16
+ end
17
+ end
18
+
19
+ module FileHelpers
10
20
  module_function
11
21
 
22
+ def locale_for(language:, region: nil)
23
+ Locale.new(language: language, region: region).locale
24
+ end
25
+
12
26
  def region_dictionary_path language:, region:
13
- file_name = FileHelpers.locale language: language, region: region
27
+ file_name = locale_for language: language, region: region
14
28
  dictionary_path_for file_name: file_name
15
29
  end
16
30
 
17
31
  def language_dictionary_path language:
18
- file_name = FileHelpers.locale language:language
32
+ file_name = locale_for language: language
19
33
  dictionary_path_for file_name: file_name
20
34
  end
21
35
 
@@ -43,7 +43,6 @@ RSpec.shared_context 'dictionary keys' do
43
43
  end
44
44
 
45
45
  RSpec.shared_context 'mock word filters' do
46
-
47
46
  unless Object.const_defined?('WordFilter01')
48
47
  class WordFilter01 < LittleWeasel::Filters::WordFilter
49
48
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: LittleWeasel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gene M. Angelo, Jr.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-03 00:00:00.000000000 Z
11
+ date: 2022-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -96,16 +96,16 @@ dependencies:
96
96
  name: rake
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - "~>"
99
+ - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: '0'
101
+ version: 12.3.3
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - "~>"
106
+ - - ">="
107
107
  - !ruby/object:Gem::Version
108
- version: '0'
108
+ version: 12.3.3
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: redcarpet
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -250,7 +250,8 @@ dependencies:
250
250
  - - "~>"
251
251
  - !ruby/object:Gem::Version
252
252
  version: 0.9.26
253
- description: Simple spellchecker for single, or multiple word blocks.
253
+ description: Spellchecker+ with preprocessing and filtering for single and multiple
254
+ word blocks.
254
255
  email:
255
256
  - public.gma@gmail.com
256
257
  executables: []
@@ -277,6 +278,7 @@ files:
277
278
  - ".yardopts"
278
279
  - CHANGELOG.md
279
280
  - Gemfile
281
+ - Jenkinsfile
280
282
  - LICENSE.txt
281
283
  - LittleWeasel.gemspec
282
284
  - README.md
@@ -317,9 +319,9 @@ files:
317
319
  - lib/LittleWeasel/modules/dictionary_file_loader.rb
318
320
  - lib/LittleWeasel/modules/dictionary_key_validatable.rb
319
321
  - lib/LittleWeasel/modules/dictionary_keyable.rb
320
- - lib/LittleWeasel/modules/dictionary_loader_servicable.rb
321
322
  - lib/LittleWeasel/modules/dictionary_metadata_servicable.rb
322
323
  - lib/LittleWeasel/modules/dictionary_metadata_validatable.rb
324
+ - lib/LittleWeasel/modules/dictionary_source_validatable.rb
323
325
  - lib/LittleWeasel/modules/dictionary_sourceable.rb
324
326
  - lib/LittleWeasel/modules/dictionary_validatable.rb
325
327
  - lib/LittleWeasel/modules/language.rb
@@ -346,7 +348,6 @@ files:
346
348
  - lib/LittleWeasel/services/dictionary_creator_service.rb
347
349
  - lib/LittleWeasel/services/dictionary_file_loader_service.rb
348
350
  - lib/LittleWeasel/services/dictionary_killer_service.rb
349
- - lib/LittleWeasel/services/dictionary_loader_service.rb
350
351
  - lib/LittleWeasel/services/dictionary_metadata_service.rb
351
352
  - lib/LittleWeasel/services/invalid_words_service.rb
352
353
  - lib/LittleWeasel/version.rb
@@ -358,7 +359,6 @@ files:
358
359
  - spec/factories/dictionary_hash.rb
359
360
  - spec/factories/dictionary_key.rb
360
361
  - spec/factories/dictionary_killer_service.rb
361
- - spec/factories/dictionary_loader_service.rb
362
362
  - spec/factories/dictionary_manager.rb
363
363
  - spec/factories/dictionary_metadata.rb
364
364
  - spec/factories/dictionary_metadata_service.rb
@@ -403,7 +403,6 @@ files:
403
403
  - spec/lib/LittleWeasel/services/dictionary_cache_service_spec.rb
404
404
  - spec/lib/LittleWeasel/services/dictionary_creator_service_spec.rb
405
405
  - spec/lib/LittleWeasel/services/dictionary_file_loader_service_spec.rb
406
- - spec/lib/LittleWeasel/services/dictionary_loader_service_spec.rb
407
406
  - spec/lib/LittleWeasel/services/dictionary_metadata_service_spec.rb
408
407
  - spec/lib/LittleWeasel/word_results_spec.rb
409
408
  - spec/lib/LittleWeasel/workflow/workflow_spec.rb
@@ -445,8 +444,8 @@ requirements: []
445
444
  rubygems_version: 3.2.15
446
445
  signing_key:
447
446
  specification_version: 4
448
- summary: Simply checks a word or group of words for validity against an english dictionary
449
- file.
447
+ summary: Checks a word or group of words for validity against a dictionary/ies provided.
448
+ Word filtering and word preprocessing is available.
450
449
  test_files:
451
450
  - spec/factories/dictionary.rb
452
451
  - spec/factories/dictionary_cache_service.rb
@@ -455,7 +454,6 @@ test_files:
455
454
  - spec/factories/dictionary_hash.rb
456
455
  - spec/factories/dictionary_key.rb
457
456
  - spec/factories/dictionary_killer_service.rb
458
- - spec/factories/dictionary_loader_service.rb
459
457
  - spec/factories/dictionary_manager.rb
460
458
  - spec/factories/dictionary_metadata.rb
461
459
  - spec/factories/dictionary_metadata_service.rb
@@ -500,7 +498,6 @@ test_files:
500
498
  - spec/lib/LittleWeasel/services/dictionary_cache_service_spec.rb
501
499
  - spec/lib/LittleWeasel/services/dictionary_creator_service_spec.rb
502
500
  - spec/lib/LittleWeasel/services/dictionary_file_loader_service_spec.rb
503
- - spec/lib/LittleWeasel/services/dictionary_loader_service_spec.rb
504
501
  - spec/lib/LittleWeasel/services/dictionary_metadata_service_spec.rb
505
502
  - spec/lib/LittleWeasel/word_results_spec.rb
506
503
  - spec/lib/LittleWeasel/workflow/workflow_spec.rb
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../dictionary_key'
4
- require_relative '../services/dictionary_loader_service'
5
- require_relative 'dictionary_cache_validatable'
6
-
7
- module LittleWeasel
8
- module Modules
9
- # This module defines methods and attributes to consume the dictionary
10
- # loader service.
11
- module DictionaryLoaderServicable
12
- include DictionaryCacheValidatable
13
- include DictionaryKeyable
14
-
15
- attr_reader :dictionary_cache, :dictionary_key, :dictionary_metadata
16
-
17
- def dictionary_loader_service
18
- Services::DictionaryLoaderService.new(dictionary_key: dictionary_key, dictionary_cache: dictionary_cache,
19
- dictionary_metadata: dictionary_metadata)
20
- end
21
-
22
- private
23
-
24
- attr_writer :dictionary_cache, :dictionary_key, :dictionary_metadata
25
- end
26
- end
27
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../dictionary'
4
- require_relative '../metadata/dictionary_metadata'
5
- require_relative '../modules/dictionary_cache_servicable'
6
- require_relative '../modules/dictionary_metadata_servicable'
7
- require_relative '../modules/dictionary_keyable'
8
- require_relative 'dictionary_file_loader_service'
9
-
10
- module LittleWeasel
11
- module Services
12
- # This class provides services to load dictionaries from either disk (if
13
- # the dictionary has not been loaded) or from the dictionary cache if the
14
- # dictionary has already been loaded from disk.
15
- class DictionaryLoaderService
16
- include Modules::DictionaryKeyable
17
- include Modules::DictionaryCacheServicable
18
- include Modules::DictionaryMetadataServicable
19
-
20
- def initialize(dictionary_key:, dictionary_cache:, dictionary_metadata:)
21
- validate_dictionary_key dictionary_key: dictionary_key
22
- self.dictionary_key = dictionary_key
23
-
24
- validate_dictionary_cache dictionary_cache: dictionary_cache
25
- self.dictionary_cache = dictionary_cache
26
-
27
- validate_dictionary_metadata dictionary_metadata: dictionary_metadata
28
- self.dictionary_metadata = dictionary_metadata
29
- end
30
-
31
- def execute
32
- if dictionary_cache_service.dictionary_exists?
33
- load_from_cache
34
- else
35
- dictionary_cache_service.dictionary_object = load_from_disk
36
- end
37
- end
38
-
39
- private
40
-
41
- def load_from_cache
42
- dictionary_cache_service.dictionary_object!
43
- end
44
-
45
- def load_from_disk
46
- dictionary_for dictionary_words: dictionary_file_loader_service.execute
47
- end
48
-
49
- def dictionary_for(dictionary_words:)
50
- Dictionary.new dictionary_key: dictionary_key, dictionary_cache: dictionary_cache,
51
- dictionary_metadata: dictionary_metadata, dictionary_words: dictionary_words
52
- end
53
-
54
- def dictionary_file_loader_service
55
- Services::DictionaryFileLoaderService.new dictionary_key: dictionary_key, dictionary_cache: dictionary_cache
56
- end
57
- end
58
- end
59
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: false
2
-
3
- FactoryBot.define do
4
- factory :dictionary_loader_service, class: LittleWeasel::Services::DictionaryLoaderService do
5
- dictionary_key { create(:dictionary_key) }
6
- dictionary_cache { {} }
7
- dictionary_metadata { {} }
8
-
9
- skip_create
10
- initialize_with do
11
- new(dictionary_key: dictionary_key, dictionary_cache: dictionary_cache, dictionary_metadata: dictionary_metadata)
12
- end
13
- end
14
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe LittleWeasel::Services::DictionaryLoaderService do
6
- subject { create(:dictionary_loader_service, dictionary_key: dictionary_key, dictionary_cache: dictionary_cache, dictionary_metadata: dictionary_metadata) }
7
-
8
- let(:language) { :en }
9
- let(:region) { :us }
10
- let(:tag) {}
11
- let(:dictionary_key) { create(:dictionary_key, language: language, region: region, tag: tag) }
12
- let(:dictionary_cache) { {} }
13
- let(:dictionary_metadata) { {} }
14
-
15
- #execute
16
- describe '#execute' do
17
- context 'when loading dictionaries created from a file' do
18
- let!(:dictionary_cache_service) { create(:dictionary_cache_service, dictionary_file_source: true, dictionary_key: dictionary_key, dictionary_cache: dictionary_cache) }
19
-
20
- context 'when the dictionary is not cached' do
21
- it 'loads the dictionary file and returns the Dictionary' do
22
- expect(dictionary_cache_service.dictionary_exists?).to be false
23
- # Remove this line; there is a bug in SimpleCov that will not
24
- # recognize #load_from_cache as having test coverage if we
25
- # stub this out :(
26
- # expect(subject).to_not receive(:load_from_cache)
27
- expect(subject.execute).to be_kind_of LittleWeasel::Dictionary
28
- end
29
- end
30
-
31
- context 'when the dictionary is cached' do
32
- before do
33
- # This will load the dictionary from disk, and cache it in
34
- # the dictionary cache; the DictionaryLoaderService loads
35
- # the dictionary into the dictionary cache if loaded from disk.
36
- subject.execute
37
- end
38
-
39
- it 'loads the dictionary from the dictionary cache and returns the Dictionary' do
40
- expect(dictionary_cache_service.dictionary_exists?).to be true
41
- # Remove this line; there is a bug in SimpleCov that will not
42
- # recognize #load_from_cache as having test coverage if we
43
- # stub this out :(
44
- # expect(subject).to receive(:load_from_cache).and_return(dictionary_cache_service.dictionary_object!)
45
- expect(subject.execute).to be dictionary_cache_service.dictionary_object!
46
- end
47
- end
48
- end
49
- end
50
- end