relaton 1.20.2 → 2.0.0.pre.alpha.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/CLAUDE.md +4 -2
  4. data/Rakefile +1 -1
  5. data/bin/rspec +1 -2
  6. data/docs/README.adoc +93 -86
  7. data/lib/relaton/config.rb +2 -3
  8. data/lib/relaton/db.rb +57 -39
  9. data/lib/relaton/db_cache.rb +3 -2
  10. data/lib/relaton/registry.rb +23 -30
  11. data/lib/relaton/util.rb +2 -1
  12. data/lib/relaton/version.rb +1 -1
  13. data/lib/relaton/workers_pool.rb +1 -1
  14. data/lib/relaton.rb +6 -7
  15. data/relaton.gemspec +31 -31
  16. data/spec/relaton/db_cache_spec.rb +1 -1
  17. data/spec/relaton/db_spec.rb +84 -46
  18. data/spec/relaton/registry_spec.rb +43 -41
  19. data/spec/relaton/util_spec.rb +1 -0
  20. data/spec/relaton_spec.rb +345 -163
  21. data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +12595 -13226
  22. data/spec/vcr_cassetes/api_relaton_org.yml +7 -7
  23. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +76 -78
  24. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +48 -42
  25. data/spec/vcr_cassetes/cie_001_1980.yml +302 -262
  26. data/spec/vcr_cassetes/cipm_meeting_43.yml +1380 -1370
  27. data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +3 -3
  28. data/spec/vcr_cassetes/ecma_6.yml +182 -238
  29. data/spec/vcr_cassetes/en_10160_1999.yml +13083 -13122
  30. data/spec/vcr_cassetes/gb_t_20223_2006.yml +9 -9
  31. data/spec/vcr_cassetes/ieee_528_2019.yml +2633 -2411
  32. data/spec/vcr_cassetes/iso_19115_1.yml +13692 -13957
  33. data/spec/vcr_cassetes/iso_19115_1_2.yml +235 -244
  34. data/spec/vcr_cassetes/iso_19115_1_std.yml +13690 -13955
  35. data/spec/vcr_cassetes/iso_19115_all_parts.yml +161 -168
  36. data/spec/vcr_cassetes/iso_19133_2005.yml +83 -79
  37. data/spec/vcr_cassetes/iso_combined_applied.yml +239 -238
  38. data/spec/vcr_cassetes/iso_combined_included.yml +240 -239
  39. data/spec/vcr_cassetes/iso_dis.yml +87 -88
  40. data/spec/vcr_cassetes/ogc_19_025r1.yml +248 -243
  41. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +268 -1513
  42. data/spec/vcr_cassetes/rfc_8341.yml +1090 -1086
  43. metadata +62 -80
  44. data/lib/relaton/processor.rb +0 -46
  45. data/spec/relaton/processor_spec.rb +0 -113
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.2
4
+ version: 2.0.0.pre.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-02-16 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: relaton-3gpp
@@ -16,406 +15,392 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 1.20.0
18
+ version: 2.0.0.pre.alpha.3
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 1.20.0
25
+ version: 2.0.0.pre.alpha.3
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: relaton-bipm
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: 1.20.0
32
+ version: 2.0.0.pre.alpha.2
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: 1.20.0
39
+ version: 2.0.0.pre.alpha.2
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: relaton-bsi
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: 1.20.0
46
+ version: 2.0.0.pre.alpha.1
48
47
  type: :runtime
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: 1.20.0
53
+ version: 2.0.0.pre.alpha.1
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: relaton-calconnect
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: 1.20.0
60
+ version: 2.0.0.pre.alpha.2
62
61
  type: :runtime
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: 1.20.0
67
+ version: 2.0.0.pre.alpha.2
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: relaton-ccsds
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - "~>"
74
73
  - !ruby/object:Gem::Version
75
- version: 1.20.2
74
+ version: 2.0.0.pre.alpha.2
76
75
  type: :runtime
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
79
  - - "~>"
81
80
  - !ruby/object:Gem::Version
82
- version: 1.20.2
81
+ version: 2.0.0.pre.alpha.2
83
82
  - !ruby/object:Gem::Dependency
84
83
  name: relaton-cen
85
84
  requirement: !ruby/object:Gem::Requirement
86
85
  requirements:
87
86
  - - "~>"
88
87
  - !ruby/object:Gem::Version
89
- version: 1.20.0
88
+ version: 2.0.0.pre.alpha.1
90
89
  type: :runtime
91
90
  prerelease: false
92
91
  version_requirements: !ruby/object:Gem::Requirement
93
92
  requirements:
94
93
  - - "~>"
95
94
  - !ruby/object:Gem::Version
96
- version: 1.20.0
95
+ version: 2.0.0.pre.alpha.1
97
96
  - !ruby/object:Gem::Dependency
98
97
  name: relaton-cie
99
98
  requirement: !ruby/object:Gem::Requirement
100
99
  requirements:
101
100
  - - "~>"
102
101
  - !ruby/object:Gem::Version
103
- version: 1.20.0
102
+ version: 2.0.0.pre.alpha.2
104
103
  type: :runtime
105
104
  prerelease: false
106
105
  version_requirements: !ruby/object:Gem::Requirement
107
106
  requirements:
108
107
  - - "~>"
109
108
  - !ruby/object:Gem::Version
110
- version: 1.20.0
109
+ version: 2.0.0.pre.alpha.2
111
110
  - !ruby/object:Gem::Dependency
112
111
  name: relaton-doi
113
112
  requirement: !ruby/object:Gem::Requirement
114
113
  requirements:
115
114
  - - "~>"
116
115
  - !ruby/object:Gem::Version
117
- version: 1.20.0
116
+ version: 2.0.0.pre.alpha.1
118
117
  type: :runtime
119
118
  prerelease: false
120
119
  version_requirements: !ruby/object:Gem::Requirement
121
120
  requirements:
122
121
  - - "~>"
123
122
  - !ruby/object:Gem::Version
124
- version: 1.20.0
123
+ version: 2.0.0.pre.alpha.1
125
124
  - !ruby/object:Gem::Dependency
126
125
  name: relaton-ecma
127
126
  requirement: !ruby/object:Gem::Requirement
128
127
  requirements:
129
128
  - - "~>"
130
129
  - !ruby/object:Gem::Version
131
- version: 1.20.0
130
+ version: 2.0.0.pre.alpha.2
132
131
  type: :runtime
133
132
  prerelease: false
134
133
  version_requirements: !ruby/object:Gem::Requirement
135
134
  requirements:
136
135
  - - "~>"
137
136
  - !ruby/object:Gem::Version
138
- version: 1.20.0
137
+ version: 2.0.0.pre.alpha.2
139
138
  - !ruby/object:Gem::Dependency
140
139
  name: relaton-etsi
141
140
  requirement: !ruby/object:Gem::Requirement
142
141
  requirements:
143
142
  - - "~>"
144
143
  - !ruby/object:Gem::Version
145
- version: 1.20.0
144
+ version: 2.0.0.pre.alpha.2
146
145
  type: :runtime
147
146
  prerelease: false
148
147
  version_requirements: !ruby/object:Gem::Requirement
149
148
  requirements:
150
149
  - - "~>"
151
150
  - !ruby/object:Gem::Version
152
- version: 1.20.0
151
+ version: 2.0.0.pre.alpha.2
153
152
  - !ruby/object:Gem::Dependency
154
153
  name: relaton-gb
155
154
  requirement: !ruby/object:Gem::Requirement
156
155
  requirements:
157
156
  - - "~>"
158
157
  - !ruby/object:Gem::Version
159
- version: 1.20.0
158
+ version: 2.0.0.pre.alpha.1
160
159
  type: :runtime
161
160
  prerelease: false
162
161
  version_requirements: !ruby/object:Gem::Requirement
163
162
  requirements:
164
163
  - - "~>"
165
164
  - !ruby/object:Gem::Version
166
- version: 1.20.0
165
+ version: 2.0.0.pre.alpha.1
167
166
  - !ruby/object:Gem::Dependency
168
167
  name: relaton-iana
169
168
  requirement: !ruby/object:Gem::Requirement
170
169
  requirements:
171
170
  - - "~>"
172
171
  - !ruby/object:Gem::Version
173
- version: 1.20.0
172
+ version: 2.0.0.pre.alpha.2
174
173
  type: :runtime
175
174
  prerelease: false
176
175
  version_requirements: !ruby/object:Gem::Requirement
177
176
  requirements:
178
177
  - - "~>"
179
178
  - !ruby/object:Gem::Version
180
- version: 1.20.0
179
+ version: 2.0.0.pre.alpha.2
181
180
  - !ruby/object:Gem::Dependency
182
181
  name: relaton-iec
183
182
  requirement: !ruby/object:Gem::Requirement
184
183
  requirements:
185
184
  - - "~>"
186
185
  - !ruby/object:Gem::Version
187
- version: 1.20.3
186
+ version: 2.0.0.pre.alpha.2
188
187
  type: :runtime
189
188
  prerelease: false
190
189
  version_requirements: !ruby/object:Gem::Requirement
191
190
  requirements:
192
191
  - - "~>"
193
192
  - !ruby/object:Gem::Version
194
- version: 1.20.3
193
+ version: 2.0.0.pre.alpha.2
195
194
  - !ruby/object:Gem::Dependency
196
195
  name: relaton-ieee
197
196
  requirement: !ruby/object:Gem::Requirement
198
197
  requirements:
199
198
  - - "~>"
200
199
  - !ruby/object:Gem::Version
201
- version: 1.20.0
200
+ version: 2.0.0.pre.alpha.1
202
201
  type: :runtime
203
202
  prerelease: false
204
203
  version_requirements: !ruby/object:Gem::Requirement
205
204
  requirements:
206
205
  - - "~>"
207
206
  - !ruby/object:Gem::Version
208
- version: 1.20.0
207
+ version: 2.0.0.pre.alpha.1
209
208
  - !ruby/object:Gem::Dependency
210
209
  name: relaton-ietf
211
210
  requirement: !ruby/object:Gem::Requirement
212
211
  requirements:
213
212
  - - "~>"
214
213
  - !ruby/object:Gem::Version
215
- version: 1.20.0
214
+ version: 2.0.0.pre.alpha.2
216
215
  type: :runtime
217
216
  prerelease: false
218
217
  version_requirements: !ruby/object:Gem::Requirement
219
218
  requirements:
220
219
  - - "~>"
221
220
  - !ruby/object:Gem::Version
222
- version: 1.20.0
221
+ version: 2.0.0.pre.alpha.2
223
222
  - !ruby/object:Gem::Dependency
224
223
  name: relaton-iho
225
224
  requirement: !ruby/object:Gem::Requirement
226
225
  requirements:
227
226
  - - "~>"
228
227
  - !ruby/object:Gem::Version
229
- version: 1.20.0
228
+ version: 2.0.0.pre.alpha.2
230
229
  type: :runtime
231
230
  prerelease: false
232
231
  version_requirements: !ruby/object:Gem::Requirement
233
232
  requirements:
234
233
  - - "~>"
235
234
  - !ruby/object:Gem::Version
236
- version: 1.20.0
235
+ version: 2.0.0.pre.alpha.2
237
236
  - !ruby/object:Gem::Dependency
238
237
  name: relaton-isbn
239
238
  requirement: !ruby/object:Gem::Requirement
240
239
  requirements:
241
240
  - - "~>"
242
241
  - !ruby/object:Gem::Version
243
- version: 1.20.0
242
+ version: 2.0.0.pre.alpha.1
244
243
  type: :runtime
245
244
  prerelease: false
246
245
  version_requirements: !ruby/object:Gem::Requirement
247
246
  requirements:
248
247
  - - "~>"
249
248
  - !ruby/object:Gem::Version
250
- version: 1.20.0
249
+ version: 2.0.0.pre.alpha.1
251
250
  - !ruby/object:Gem::Dependency
252
251
  name: relaton-iso
253
252
  requirement: !ruby/object:Gem::Requirement
254
253
  requirements:
255
254
  - - "~>"
256
255
  - !ruby/object:Gem::Version
257
- version: 1.20.0
256
+ version: 2.0.0.pre.alpha.2
258
257
  type: :runtime
259
258
  prerelease: false
260
259
  version_requirements: !ruby/object:Gem::Requirement
261
260
  requirements:
262
261
  - - "~>"
263
262
  - !ruby/object:Gem::Version
264
- version: 1.20.0
263
+ version: 2.0.0.pre.alpha.2
265
264
  - !ruby/object:Gem::Dependency
266
265
  name: relaton-itu
267
266
  requirement: !ruby/object:Gem::Requirement
268
267
  requirements:
269
268
  - - "~>"
270
269
  - !ruby/object:Gem::Version
271
- version: 1.20.0
270
+ version: 2.0.0.pre.alpha.2
272
271
  type: :runtime
273
272
  prerelease: false
274
273
  version_requirements: !ruby/object:Gem::Requirement
275
274
  requirements:
276
275
  - - "~>"
277
276
  - !ruby/object:Gem::Version
278
- version: 1.20.0
277
+ version: 2.0.0.pre.alpha.2
279
278
  - !ruby/object:Gem::Dependency
280
279
  name: relaton-jis
281
280
  requirement: !ruby/object:Gem::Requirement
282
281
  requirements:
283
282
  - - "~>"
284
283
  - !ruby/object:Gem::Version
285
- version: 1.20.0
284
+ version: 2.0.0.pre.alpha.1
286
285
  type: :runtime
287
286
  prerelease: false
288
287
  version_requirements: !ruby/object:Gem::Requirement
289
288
  requirements:
290
289
  - - "~>"
291
290
  - !ruby/object:Gem::Version
292
- version: 1.20.0
291
+ version: 2.0.0.pre.alpha.1
293
292
  - !ruby/object:Gem::Dependency
294
293
  name: relaton-nist
295
294
  requirement: !ruby/object:Gem::Requirement
296
295
  requirements:
297
296
  - - "~>"
298
297
  - !ruby/object:Gem::Version
299
- version: 1.20.0
298
+ version: 2.0.0.pre.alpha.2
300
299
  type: :runtime
301
300
  prerelease: false
302
301
  version_requirements: !ruby/object:Gem::Requirement
303
302
  requirements:
304
303
  - - "~>"
305
304
  - !ruby/object:Gem::Version
306
- version: 1.20.0
305
+ version: 2.0.0.pre.alpha.2
307
306
  - !ruby/object:Gem::Dependency
308
307
  name: relaton-oasis
309
308
  requirement: !ruby/object:Gem::Requirement
310
309
  requirements:
311
310
  - - "~>"
312
311
  - !ruby/object:Gem::Version
313
- version: 1.20.0
312
+ version: 2.0.0.pre.alpha.2
314
313
  type: :runtime
315
314
  prerelease: false
316
315
  version_requirements: !ruby/object:Gem::Requirement
317
316
  requirements:
318
317
  - - "~>"
319
318
  - !ruby/object:Gem::Version
320
- version: 1.20.0
319
+ version: 2.0.0.pre.alpha.2
321
320
  - !ruby/object:Gem::Dependency
322
321
  name: relaton-ogc
323
322
  requirement: !ruby/object:Gem::Requirement
324
323
  requirements:
325
324
  - - "~>"
326
325
  - !ruby/object:Gem::Version
327
- version: 1.20.0
326
+ version: 2.0.0.pre.alpha.2
328
327
  type: :runtime
329
328
  prerelease: false
330
329
  version_requirements: !ruby/object:Gem::Requirement
331
330
  requirements:
332
331
  - - "~>"
333
332
  - !ruby/object:Gem::Version
334
- version: 1.20.0
333
+ version: 2.0.0.pre.alpha.2
335
334
  - !ruby/object:Gem::Dependency
336
335
  name: relaton-omg
337
336
  requirement: !ruby/object:Gem::Requirement
338
337
  requirements:
339
338
  - - "~>"
340
339
  - !ruby/object:Gem::Version
341
- version: 1.20.0
340
+ version: 2.0.0.pre.alpha.1
342
341
  type: :runtime
343
342
  prerelease: false
344
343
  version_requirements: !ruby/object:Gem::Requirement
345
344
  requirements:
346
345
  - - "~>"
347
346
  - !ruby/object:Gem::Version
348
- version: 1.20.0
347
+ version: 2.0.0.pre.alpha.1
349
348
  - !ruby/object:Gem::Dependency
350
349
  name: relaton-plateau
351
350
  requirement: !ruby/object:Gem::Requirement
352
351
  requirements:
353
352
  - - "~>"
354
353
  - !ruby/object:Gem::Version
355
- version: 1.20.0
354
+ version: 2.0.0.pre.alpha.1
356
355
  type: :runtime
357
356
  prerelease: false
358
357
  version_requirements: !ruby/object:Gem::Requirement
359
358
  requirements:
360
359
  - - "~>"
361
360
  - !ruby/object:Gem::Version
362
- version: 1.20.0
361
+ version: 2.0.0.pre.alpha.1
363
362
  - !ruby/object:Gem::Dependency
364
363
  name: relaton-un
365
364
  requirement: !ruby/object:Gem::Requirement
366
365
  requirements:
367
366
  - - "~>"
368
367
  - !ruby/object:Gem::Version
369
- version: 1.20.0
368
+ version: 2.0.0.pre.alpha.1
370
369
  type: :runtime
371
370
  prerelease: false
372
371
  version_requirements: !ruby/object:Gem::Requirement
373
372
  requirements:
374
373
  - - "~>"
375
374
  - !ruby/object:Gem::Version
376
- version: 1.20.0
375
+ version: 2.0.0.pre.alpha.1
377
376
  - !ruby/object:Gem::Dependency
378
377
  name: relaton-w3c
379
378
  requirement: !ruby/object:Gem::Requirement
380
379
  requirements:
381
380
  - - "~>"
382
381
  - !ruby/object:Gem::Version
383
- version: 1.20.0
382
+ version: 2.0.0.pre.alpha.2
384
383
  type: :runtime
385
384
  prerelease: false
386
385
  version_requirements: !ruby/object:Gem::Requirement
387
386
  requirements:
388
387
  - - "~>"
389
388
  - !ruby/object:Gem::Version
390
- version: 1.20.0
389
+ version: 2.0.0.pre.alpha.2
391
390
  - !ruby/object:Gem::Dependency
392
391
  name: relaton-xsf
393
392
  requirement: !ruby/object:Gem::Requirement
394
393
  requirements:
395
394
  - - "~>"
396
395
  - !ruby/object:Gem::Version
397
- version: 1.20.0
396
+ version: 2.0.0.pre.alpha.1
398
397
  type: :runtime
399
398
  prerelease: false
400
399
  version_requirements: !ruby/object:Gem::Requirement
401
400
  requirements:
402
401
  - - "~>"
403
402
  - !ruby/object:Gem::Version
404
- version: 1.20.0
405
- - !ruby/object:Gem::Dependency
406
- name: rubocop-rails
407
- requirement: !ruby/object:Gem::Requirement
408
- requirements:
409
- - - ">="
410
- - !ruby/object:Gem::Version
411
- version: '0'
412
- type: :development
413
- prerelease: false
414
- version_requirements: !ruby/object:Gem::Requirement
415
- requirements:
416
- - - ">="
417
- - !ruby/object:Gem::Version
418
- version: '0'
403
+ version: 2.0.0.pre.alpha.1
419
404
  description: |2
420
405
  The Relaton core for importing, managing and caching bibliographic
421
406
  references to technical standards in the Relaton/XML bibliographic
@@ -449,7 +434,6 @@ files:
449
434
  - lib/relaton/config.rb
450
435
  - lib/relaton/db.rb
451
436
  - lib/relaton/db_cache.rb
452
- - lib/relaton/processor.rb
453
437
  - lib/relaton/registry.rb
454
438
  - lib/relaton/util.rb
455
439
  - lib/relaton/version.rb
@@ -458,7 +442,6 @@ files:
458
442
  - spec/relaton/config_spec.rb
459
443
  - spec/relaton/db_cache_spec.rb
460
444
  - spec/relaton/db_spec.rb
461
- - spec/relaton/processor_spec.rb
462
445
  - spec/relaton/registry_spec.rb
463
446
  - spec/relaton/util_spec.rb
464
447
  - spec/relaton_spec.rb
@@ -493,8 +476,8 @@ files:
493
476
  homepage: https://github.com/relaton/relaton
494
477
  licenses:
495
478
  - BSD-2-Clause
496
- metadata: {}
497
- post_install_message:
479
+ metadata:
480
+ rubygems_mfa_required: 'true'
498
481
  rdoc_options: []
499
482
  require_paths:
500
483
  - lib
@@ -502,15 +485,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
502
485
  requirements:
503
486
  - - ">="
504
487
  - !ruby/object:Gem::Version
505
- version: 3.1.0
488
+ version: 3.2.0
506
489
  required_rubygems_version: !ruby/object:Gem::Requirement
507
490
  requirements:
508
491
  - - ">="
509
492
  - !ruby/object:Gem::Version
510
493
  version: '0'
511
494
  requirements: []
512
- rubygems_version: 3.5.22
513
- signing_key:
495
+ rubygems_version: 3.6.9
514
496
  specification_version: 4
515
497
  summary: The Relaton core for importing, managing and caching bibliographic references
516
498
  to technical standards.
@@ -1,46 +0,0 @@
1
- module Relaton
2
- class Processor
3
- # @rerurn [Symbol]
4
- attr_reader :short
5
-
6
- # @return [String]
7
- attr_reader :prefix, :idtype
8
-
9
- # @return [Regexp]
10
- attr_reader :defaultprefix
11
-
12
- # @return [Array<String>]
13
- attr_reader :datasets
14
-
15
- def initialize
16
- raise "This is an abstract class!"
17
- end
18
-
19
- def get(_code, _date, _opts)
20
- raise "This is an abstract class!"
21
- end
22
-
23
- def fetch_data(_source, _opts)
24
- raise "This is an abstract class!"
25
- end
26
-
27
- def from_xml(_xml)
28
- raise "This is an abstract class!"
29
- end
30
-
31
- def hash_to_bib(_hash)
32
- raise "This is an abstract class!"
33
- end
34
-
35
- def grammar_hash
36
- raise "This is an abstract class!"
37
- end
38
-
39
- # Retuns default number of workers. Should be overraded by childred classes if need.
40
- #
41
- # @return [Integer] nuber of wokrers
42
- def threads
43
- 10
44
- end
45
- end
46
- end
@@ -1,113 +0,0 @@
1
- module Relaton
2
- class TestProcessor < Relaton::Processor
3
- def initialize; end
4
- end
5
- end
6
-
7
- RSpec.describe Relaton::Processor do
8
- it "initialize should be implemented" do
9
- expect { Relaton::Processor.new }.to raise_error StandardError
10
- end
11
-
12
- context "instance of processor" do
13
- subject { Relaton::TestProcessor.new }
14
-
15
- it "get method should be implemented" do
16
- expect { subject.get "code", nil, {} }.to raise_error StandardError
17
- end
18
-
19
- it "fetch_data method should be implemented" do
20
- expect { subject.fetch_data "source", {} }.to raise_error StandardError
21
- end
22
-
23
- it "from_xml method should be implemented" do
24
- expect { subject.from_xml "" }.to raise_error StandardError
25
- end
26
-
27
- it "hash_to_bib method should be implemented" do
28
- expect { subject.hash_to_bib({}) }.to raise_error StandardError
29
- end
30
-
31
- it "grammar_hash method should be implemented" do
32
- expect { subject.grammar_hash }.to raise_error StandardError
33
- end
34
- end
35
-
36
- context "flavor processors" do
37
- before { Relaton::Registry.instance }
38
-
39
- shared_examples "common processor methods" do |flavor, namespace, bibmodule|
40
- let(:processor) { Relaton::Registry.instance.by_type flavor }
41
- let(:flavor_module) { Object.const_get namespace }
42
- let(:bibliography) { Object.const_get "#{namespace}::#{bibmodule}" }
43
-
44
- it "get method should call get method of #{flavor}" do
45
- expect(bibliography).to receive(:get).with("code", nil, {}).and_return :item
46
- expect(processor.get("code", nil, {})).to eq :item
47
- end
48
-
49
- it "grammar_hash method should call grammar_hash method of #{flavor}" do
50
- expect(flavor_module).to receive(:grammar_hash).and_return :hash
51
- expect(processor.grammar_hash).to eq :hash
52
- end
53
- end
54
-
55
- shared_examples "fetch_data method" do |flavor, fetcher, source|
56
- let(:processor) { Relaton::Registry.instance.by_type flavor }
57
- let(:fetcher_class) { Object.const_get fetcher }
58
-
59
- it "fetch_data method should call fetch_data method of #{flavor}" do
60
- expect(fetcher_class).to receive(:fetch).with(output: "dir", format: "bibxml").and_return :item
61
- expect(processor.fetch_data(source, output: "dir", format: "bibxml")).to eq :item
62
- end
63
- end
64
-
65
- shared_examples "from_xml method" do |flavor, parser|
66
- let(:processor) { Relaton::Registry.instance.by_type flavor }
67
- let(:parser_class) { Object.const_get parser }
68
-
69
- it "from_xml method should call from_xml method of #{flavor}" do
70
- expect(parser_class).to receive(:from_xml).with("xml").and_return :item
71
- expect(processor.from_xml("xml")).to eq :item
72
- end
73
- end
74
-
75
- shared_examples "hash_to_bib method" do |flavor, converter, bibitem|
76
- let(:processor) { Relaton::Registry.instance.by_type flavor }
77
- let(:converter_class) { Object.const_get converter }
78
- let(:bibitem_class) { Object.const_get bibitem }
79
-
80
- it "hash_to_bib method should call hash_to_bib method of #{flavor}" do
81
- expect(converter_class).to receive(:hash_to_bib).with(:hash).and_return title: "title"
82
- expect(bibitem_class).to receive(:new).with(title: "title").and_return :item
83
- expect(processor.hash_to_bib(:hash)).to eq :item
84
- end
85
- end
86
-
87
- shared_examples "remove_index_file method" do |flavor, file|
88
- let(:processor) { Relaton::Registry.instance.by_type flavor }
89
-
90
- it "remove index file" do
91
- index = double "index"
92
- expect(index).to receive(:remove_file)
93
- expect(Relaton::Index).to receive(:find_or_create)
94
- .with(flavor.downcase.to_sym, url: true, file: file).and_return index
95
- processor.remove_index_file
96
- end
97
- end
98
-
99
- context "ETSI processor" do
100
- it_behaves_like "common processor methods", "ETSI", "RelatonEtsi", "Bibliography"
101
- it_behaves_like "fetch_data method", "ETSI", "RelatonEtsi::DataFetcher", "etsi-csv"
102
- it_behaves_like "from_xml method", "ETSI", "RelatonEtsi::XMLParser"
103
- it_behaves_like "hash_to_bib method", "ETSI", "RelatonEtsi::HashConverter", "RelatonEtsi::BibliographicItem"
104
- it_behaves_like "remove_index_file method", "ETSI", "index-v1.yaml"
105
- end
106
-
107
- context "ISBN processor" do
108
- it_behaves_like "common processor methods", "ISBN", "RelatonIsbn", "OpenLibrary"
109
- it_behaves_like "from_xml method", "ISBN", "RelatonBib::XMLParser"
110
- it_behaves_like "hash_to_bib method", "ISBN", "RelatonBib::HashConverter", "RelatonBib::BibliographicItem"
111
- end
112
- end
113
- end