defmastership 1.0.19 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.gitlab-ci.yml +27 -0
  4. data/Gemfile +27 -16
  5. data/LICENSE +1 -1
  6. data/README.adoc +24 -0
  7. data/Rakefile +0 -1
  8. data/bin/defmastership +5 -5
  9. data/config/mutant.yml +18 -16
  10. data/config/rubocop.yml +5 -10
  11. data/defmastership.gemspec +3 -3
  12. data/lib/defmastership/batch_modifier.rb +23 -5
  13. data/lib/defmastership/comment_filter.rb +2 -1
  14. data/lib/defmastership/definition.rb +24 -4
  15. data/lib/defmastership/definition_parser.rb +2 -2
  16. data/lib/defmastership/document.rb +39 -19
  17. data/lib/defmastership/export/body_formatter.rb +55 -0
  18. data/lib/defmastership/export/csv/formatter.rb +64 -0
  19. data/lib/defmastership/export/header_formatter.rb +51 -0
  20. data/lib/defmastership/filters.rb +15 -12
  21. data/lib/defmastership/matching_line.rb +3 -2
  22. data/lib/defmastership/modifier/change_ref.rb +117 -0
  23. data/lib/defmastership/modifier/factory.rb +17 -0
  24. data/lib/defmastership/modifier/modifier_common.rb +71 -0
  25. data/lib/defmastership/modifier/rename_included_files.rb +223 -0
  26. data/lib/defmastership/modifier/update_def.rb +72 -0
  27. data/lib/defmastership/modifier/update_def_checksum.rb +17 -0
  28. data/lib/defmastership/modifier/update_def_version.rb +110 -0
  29. data/lib/defmastership/set_join_hack.rb +2 -0
  30. data/lib/defmastership/version.rb +3 -2
  31. data/lib/defmastership.rb +6 -8
  32. data/spec/unit/{def_mastership → defmastership}/batch_modifier_spec.rb +13 -13
  33. data/spec/unit/{def_mastership → defmastership}/definition_parser_spec.rb +1 -1
  34. data/spec/unit/{def_mastership → defmastership}/definition_spec.rb +1 -1
  35. data/spec/unit/{def_mastership → defmastership}/document_spec.rb +57 -57
  36. data/spec/unit/{def_mastership/csv_formatter_body_spec.rb → defmastership/export/body_formatter_spec.rb} +4 -4
  37. data/spec/unit/{def_mastership/csv_formatter_spec.rb → defmastership/export/csv/formatter_spec.rb} +13 -8
  38. data/spec/unit/{def_mastership/csv_formatter_header_spec.rb → defmastership/export/header_formatter_spec.rb} +3 -3
  39. data/spec/unit/{def_mastership → defmastership}/matching_line_spec.rb +1 -1
  40. data/spec/unit/{def_mastership/change_ref_modifier_spec.rb → defmastership/modifier/change_ref_spec.rb} +19 -44
  41. data/spec/unit/defmastership/modifier/factory_spec.rb +45 -0
  42. data/spec/unit/{def_mastership/modifier_spec.rb → defmastership/modifier/modifier_common_spec.rb} +3 -12
  43. data/spec/unit/{def_mastership/rename_included_files_modifier_spec.rb → defmastership/modifier/rename_included_files_spec.rb} +3 -3
  44. data/spec/unit/{def_mastership/update_def_checksum_modifier_spec.rb → defmastership/modifier/update_def_checksum_spec.rb} +10 -10
  45. data/spec/unit/{def_mastership/update_def_modifier_spec.rb → defmastership/modifier/update_def_spec.rb} +22 -20
  46. data/spec/unit/{def_mastership/update_def_version_modifier_spec.rb → defmastership/modifier/update_def_version_spec.rb} +38 -38
  47. data/spec/unit/{def_mastership_spec.rb → defmastership_spec.rb} +2 -2
  48. data/tasks/documentation.rake +19 -0
  49. data/tasks/package.rake +4 -0
  50. metadata +63 -43
  51. data/README.rdoc +0 -6
  52. data/defmastership.rdoc +0 -5
  53. data/lib/defmastership/change_ref_modifier.rb +0 -99
  54. data/lib/defmastership/constants.rb +0 -91
  55. data/lib/defmastership/csv_formatter.rb +0 -53
  56. data/lib/defmastership/csv_formatter_body.rb +0 -46
  57. data/lib/defmastership/csv_formatter_header.rb +0 -41
  58. data/lib/defmastership/modifier.rb +0 -42
  59. data/lib/defmastership/modifier_factory.rb +0 -12
  60. data/lib/defmastership/parsing_state.rb +0 -31
  61. data/lib/defmastership/rename_included_files_modifier.rb +0 -182
  62. data/lib/defmastership/update_def_checksum_modifier.rb +0 -16
  63. data/lib/defmastership/update_def_modifier.rb +0 -49
  64. data/lib/defmastership/update_def_version_modifier.rb +0 -91
  65. data/spec/unit/def_mastership/modifier_factory_spec.rb +0 -38
  66. data/spec/unit/def_mastership/parsing_state_spec.rb +0 -62
  67. data/tasks/package.task +0 -9
  68. /data/spec/unit/{def_mastership → defmastership}/string_spec.rb +0 -0
@@ -3,7 +3,7 @@
3
3
 
4
4
  require('defmastership/document')
5
5
 
6
- RSpec.describe(DefMastership::Document) do
6
+ RSpec.describe(Defmastership::Document) do
7
7
  subject(:document) { described_class.new }
8
8
 
9
9
  describe '.new' do
@@ -27,12 +27,12 @@ RSpec.describe(DefMastership::Document) do
27
27
  it { expect(document.respond_to?(:not_implemented_random_method)).to(be(false)) }
28
28
  end
29
29
 
30
- describe '#parse' do
30
+ describe '#do_parse' do
31
31
  context 'with valid definitions' do
32
- let(:definition) { instance_double(DefMastership::Definition, 'definition') }
32
+ let(:definition) { instance_double(Defmastership::Definition, 'definition') }
33
33
 
34
34
  before do
35
- allow(DefMastership::Definition).to(receive(:new).and_return(definition))
35
+ allow(Defmastership::Definition).to(receive(:new).and_return(definition))
36
36
  allow(definition).to(
37
37
  receive_messages(
38
38
  labels: Set.new,
@@ -47,16 +47,16 @@ RSpec.describe(DefMastership::Document) do
47
47
  let(:input_lines) { ['[define, requirement, TOTO-0001]'] }
48
48
 
49
49
  before do
50
- allow(DefMastership::Definition).to(
50
+ allow(Defmastership::Definition).to(
51
51
  receive(:new).with(
52
52
  matchdata_including(type: 'requirement', reference: 'TOTO-0001')
53
53
  ).and_return(definition)
54
54
  )
55
- document.parse(input_lines)
55
+ document.__send__(:do_parse, input_lines)
56
56
  end
57
57
 
58
58
  it do
59
- expect(DefMastership::Definition).to(
59
+ expect(Defmastership::Definition).to(
60
60
  have_received(:new).with(
61
61
  matchdata_including(type: 'requirement', reference: 'TOTO-0001')
62
62
  )
@@ -71,16 +71,16 @@ RSpec.describe(DefMastership::Document) do
71
71
  let(:input_lines) { ['[define, requirement, TOTO-0001(~ab12)]'] }
72
72
 
73
73
  before do
74
- allow(DefMastership::Definition).to(
74
+ allow(Defmastership::Definition).to(
75
75
  receive(:new).with(
76
76
  matchdata_including(type: 'requirement', reference: 'TOTO-0001', explicit_checksum: '~ab12')
77
77
  ).and_return(definition)
78
78
  )
79
- document.parse(input_lines)
79
+ document.__send__(:do_parse, input_lines)
80
80
  end
81
81
 
82
82
  it do
83
- expect(DefMastership::Definition).to(
83
+ expect(Defmastership::Definition).to(
84
84
  have_received(:new).with(
85
85
  matchdata_including(type: 'requirement', reference: 'TOTO-0001', explicit_checksum: '~ab12')
86
86
  )
@@ -92,16 +92,16 @@ RSpec.describe(DefMastership::Document) do
92
92
  let(:input_lines) { ['[define, requirement, TOTO-0001(pouet)]'] }
93
93
 
94
94
  before do
95
- allow(DefMastership::Definition).to(
95
+ allow(Defmastership::Definition).to(
96
96
  receive(:new).with(
97
97
  matchdata_including(type: 'requirement', reference: 'TOTO-0001', explicit_version: 'pouet')
98
98
  ).and_return(definition)
99
99
  )
100
- document.parse(input_lines)
100
+ document.__send__(:do_parse, input_lines)
101
101
  end
102
102
 
103
103
  it do
104
- expect(DefMastership::Definition).to(
104
+ expect(Defmastership::Definition).to(
105
105
  have_received(:new).with(
106
106
  matchdata_including(type: 'requirement', reference: 'TOTO-0001', explicit_version: 'pouet')
107
107
  )
@@ -123,7 +123,7 @@ RSpec.describe(DefMastership::Document) do
123
123
 
124
124
  before do
125
125
  allow(definition).to(receive(:<<).and_return(definition))
126
- document.parse(input_lines)
126
+ document.__send__(:do_parse, input_lines)
127
127
  end
128
128
 
129
129
  it { expect(definition).to(have_received(:<<).with('a')) }
@@ -147,7 +147,7 @@ RSpec.describe(DefMastership::Document) do
147
147
 
148
148
  before do
149
149
  allow(definition).to(receive(:<<).and_return(definition))
150
- document.parse(input_lines)
150
+ document.__send__(:do_parse, input_lines)
151
151
  end
152
152
 
153
153
  it { expect(definition).to(have_received(:<<).twice.with('----')) }
@@ -168,7 +168,7 @@ RSpec.describe(DefMastership::Document) do
168
168
 
169
169
  before do
170
170
  allow(definition).to(receive(:<<).and_return(definition))
171
- document.parse(input_lines)
171
+ document.__send__(:do_parse, input_lines)
172
172
  end
173
173
 
174
174
  it { expect(definition).to(have_received(:<<).with('// comment')) }
@@ -187,7 +187,7 @@ RSpec.describe(DefMastership::Document) do
187
187
 
188
188
  before do
189
189
  allow(definition).to(receive(:<<).and_return(definition))
190
- document.parse(input_lines)
190
+ document.__send__(:do_parse, input_lines)
191
191
  end
192
192
 
193
193
  it { expect(definition).to(have_received(:<<).with('one line')) }
@@ -207,7 +207,7 @@ RSpec.describe(DefMastership::Document) do
207
207
  ]
208
208
  end
209
209
 
210
- before { document.parse(input_lines) }
210
+ before { document.__send__(:do_parse, input_lines) }
211
211
 
212
212
  it { expect(definition).not_to(have_received(:<<).with('not included')) }
213
213
  end
@@ -216,7 +216,7 @@ RSpec.describe(DefMastership::Document) do
216
216
  let(:input_lines) { ['--', 'first line', '--'] }
217
217
 
218
218
  it do
219
- document.parse(input_lines)
219
+ document.__send__(:do_parse, input_lines)
220
220
  expect(document.definitions).to(eq([]))
221
221
  end
222
222
  end
@@ -232,11 +232,11 @@ RSpec.describe(DefMastership::Document) do
232
232
 
233
233
  before do
234
234
  allow(definition).to(receive(:labels).and_return(Set['bla1', 'bla2']))
235
- document.parse(input_lines)
235
+ document.__send__(:do_parse, input_lines)
236
236
  end
237
237
 
238
238
  it do
239
- expect(DefMastership::Definition).to(
239
+ expect(Defmastership::Definition).to(
240
240
  have_received(:new).with(
241
241
  matchdata_including(type: 'requirement', reference: 'TOTO-0001', labels: 'label1, label2')
242
242
  )
@@ -257,11 +257,11 @@ RSpec.describe(DefMastership::Document) do
257
257
 
258
258
  before do
259
259
  allow(definition).to(receive(:labels).and_return(Set['bla1', 'bla2']))
260
- document.parse(input_lines)
260
+ document.__send__(:do_parse, input_lines)
261
261
  end
262
262
 
263
263
  it do
264
- expect(DefMastership::Definition).to(
264
+ expect(Defmastership::Definition).to(
265
265
  have_received(:new).with(
266
266
  matchdata_including(type: 'requirement', reference: 'TOTO-0001', labels: 'label1,label2')
267
267
  )
@@ -281,7 +281,7 @@ RSpec.describe(DefMastership::Document) do
281
281
  ]
282
282
  end
283
283
 
284
- before { document.parse(input_lines) }
284
+ before { document.__send__(:do_parse, input_lines) }
285
285
 
286
286
  it { expect(document.eref[:implements]).to(eq(prefix: 'Participate to:', url: './other_document.html')) }
287
287
  end
@@ -296,7 +296,7 @@ RSpec.describe(DefMastership::Document) do
296
296
  end
297
297
 
298
298
  it do
299
- document.parse(input_lines)
299
+ document.__send__(:do_parse, input_lines)
300
300
  expect(document.eref[:implements])
301
301
  .to(eq(prefix: 'Participate to:'))
302
302
  end
@@ -316,7 +316,7 @@ RSpec.describe(DefMastership::Document) do
316
316
  receive(:add_eref).with(:implements, 'SYSTEM-0012, SYSTEM-0014')
317
317
  .and_return(definition)
318
318
  )
319
- document.parse(input_lines)
319
+ document.__send__(:do_parse, input_lines)
320
320
  end
321
321
 
322
322
  it { expect(definition).to(have_received(:add_eref).with(:implements, 'SYSTEM-0012, SYSTEM-0014')) }
@@ -333,7 +333,7 @@ RSpec.describe(DefMastership::Document) do
333
333
 
334
334
  before do
335
335
  allow(definition).to(receive(:add_iref))
336
- document.parse(input_lines)
336
+ document.__send__(:do_parse, input_lines)
337
337
  end
338
338
 
339
339
  it { expect(definition).to(have_received(:add_iref).with('toto')) }
@@ -350,7 +350,7 @@ RSpec.describe(DefMastership::Document) do
350
350
  ]
351
351
  end
352
352
 
353
- before { document.parse(input_lines) }
353
+ before { document.__send__(:do_parse, input_lines) }
354
354
 
355
355
  it { expect(document.attributes).to(eq(myattribute: 'My attribute:', myotherone: 'My other attribute:')) }
356
356
  end
@@ -365,7 +365,7 @@ RSpec.describe(DefMastership::Document) do
365
365
 
366
366
  before do
367
367
  allow(definition).to(receive(:set_attribute).with(:myattribute, 'My value'))
368
- document.parse(input_lines)
368
+ document.__send__(:do_parse, input_lines)
369
369
  end
370
370
 
371
371
  it { expect(definition).to(have_received(:set_attribute).with(:myattribute, 'My value')) }
@@ -380,7 +380,7 @@ RSpec.describe(DefMastership::Document) do
380
380
  end
381
381
 
382
382
  it do
383
- document.parse(input_lines)
383
+ document.__send__(:do_parse, input_lines)
384
384
  expect(document.iref).to(be(false))
385
385
  end
386
386
  end
@@ -394,16 +394,16 @@ RSpec.describe(DefMastership::Document) do
394
394
  end
395
395
 
396
396
  before do
397
- allow(DefMastership::Definition).to(
397
+ allow(Defmastership::Definition).to(
398
398
  receive(:new).with(
399
399
  matchdata_including(type: 'requirement', reference: 'TOTO-0001')
400
400
  ).and_return(definition)
401
401
  )
402
- document.parse(input_lines)
402
+ document.__send__(:do_parse, input_lines)
403
403
  end
404
404
 
405
405
  it do
406
- expect(DefMastership::Definition).to(
406
+ expect(Defmastership::Definition).to(
407
407
  have_received(:new).with(
408
408
  matchdata_including(type: 'requirement', reference: 'TOTO-0001')
409
409
  )
@@ -413,17 +413,17 @@ RSpec.describe(DefMastership::Document) do
413
413
  end
414
414
 
415
415
  context 'when variables replacement' do
416
- let(:definition) { instance_double(DefMastership::Definition, 'definition') }
416
+ let(:definition) { instance_double(Defmastership::Definition, 'definition') }
417
417
 
418
418
  before do
419
- allow(DefMastership::Definition).to(receive(:new).and_return(definition))
419
+ allow(Defmastership::Definition).to(receive(:new).and_return(definition))
420
420
  allow(definition).to(
421
421
  receive_messages(
422
422
  labels: Set.new,
423
423
  '<<': definition
424
424
  )
425
425
  )
426
- document.parse(input_lines)
426
+ document.__send__(:do_parse, input_lines)
427
427
  end
428
428
 
429
429
  context 'when defined variable' do
@@ -488,13 +488,13 @@ RSpec.describe(DefMastership::Document) do
488
488
  end
489
489
 
490
490
  before do
491
- allow(DefMastership::Definition).to(
491
+ allow(Defmastership::Definition).to(
492
492
  receive(:new).and_raise('not a valide definition')
493
493
  )
494
494
  end
495
495
 
496
496
  it do
497
- document.parse(input_lines)
497
+ document.__send__(:do_parse, input_lines)
498
498
  expect(document).to(have_attributes(definitions: []))
499
499
  end
500
500
  end
@@ -509,13 +509,13 @@ RSpec.describe(DefMastership::Document) do
509
509
  end
510
510
 
511
511
  before do
512
- allow(DefMastership::Definition).to(
512
+ allow(Defmastership::Definition).to(
513
513
  receive(:new).and_raise('not a valide definition')
514
514
  )
515
515
  end
516
516
 
517
517
  it do
518
- document.parse(input_lines)
518
+ document.__send__(:do_parse, input_lines)
519
519
  expect(document).to(have_attributes(definitions: []))
520
520
  end
521
521
  end
@@ -523,7 +523,7 @@ RSpec.describe(DefMastership::Document) do
523
523
  end
524
524
 
525
525
  describe '#parse_file_with_preprocessor' do
526
- let(:definition) { instance_double(DefMastership::Definition, 'definition') }
526
+ let(:definition) { instance_double(Defmastership::Definition, 'definition') }
527
527
  let(:input_lines) { ['[define, requirement, TOTO-0001]'] }
528
528
  let(:adoc_doc) { instance_double(Asciidoctor::Document, 'adoc_doc') }
529
529
  let(:adoc_reader) { instance_double(Asciidoctor::Reader, 'adoc_reader') }
@@ -534,7 +534,7 @@ RSpec.describe(DefMastership::Document) do
534
534
  )
535
535
  allow(adoc_doc).to(receive(:reader).and_return(adoc_reader))
536
536
  allow(adoc_reader).to(receive(:read_lines).and_return(input_lines))
537
- allow(DefMastership::Definition).to(receive(:new).and_return(definition))
537
+ allow(Defmastership::Definition).to(receive(:new).and_return(definition))
538
538
  allow(definition).to(
539
539
  receive_messages(
540
540
  '<<': definition,
@@ -549,7 +549,7 @@ RSpec.describe(DefMastership::Document) do
549
549
  it { expect(adoc_reader).to(have_received(:read_lines).with(no_args)) }
550
550
 
551
551
  it do
552
- expect(DefMastership::Definition).to(
552
+ expect(Defmastership::Definition).to(
553
553
  have_received(:new).with(
554
554
  matchdata_including(type: 'requirement', reference: 'TOTO-0001')
555
555
  )
@@ -560,8 +560,8 @@ RSpec.describe(DefMastership::Document) do
560
560
  describe '#wrong_explicit_checksum?' do
561
561
  let(:defs) do
562
562
  [
563
- instance_double(DefMastership::Definition, 'definition'),
564
- instance_double(DefMastership::Definition, 'definition')
563
+ instance_double(Defmastership::Definition, 'definition'),
564
+ instance_double(Defmastership::Definition, 'definition')
565
565
  ]
566
566
  end
567
567
  let(:input_lines) do
@@ -575,7 +575,7 @@ RSpec.describe(DefMastership::Document) do
575
575
  end
576
576
 
577
577
  before do
578
- allow(DefMastership::Definition).to(receive(:new).twice.and_return(defs.first, defs[1]))
578
+ allow(Defmastership::Definition).to(receive(:new).twice.and_return(defs.first, defs[1]))
579
579
  defs.each do |definition|
580
580
  allow(definition).to(receive(:labels)).and_return([])
581
581
  allow(definition).to(receive(:<<)).and_return(definition)
@@ -585,7 +585,7 @@ RSpec.describe(DefMastership::Document) do
585
585
  context 'when no wrong explicit checksum' do
586
586
  before do
587
587
  defs.each { |definition| allow(definition).to(receive(:wrong_explicit_checksum)).and_return(nil) }
588
- document.parse(input_lines)
588
+ document.__send__(:do_parse, input_lines)
589
589
  document.wrong_explicit_checksum?
590
590
  end
591
591
 
@@ -598,7 +598,7 @@ RSpec.describe(DefMastership::Document) do
598
598
  before do
599
599
  allow(defs.first).to(receive(:wrong_explicit_checksum)).and_return('toto')
600
600
  allow(defs[1]).to(receive(:wrong_explicit_checksum)).and_return(nil)
601
- document.parse(input_lines)
601
+ document.__send__(:do_parse, input_lines)
602
602
  document.wrong_explicit_checksum?
603
603
  end
604
604
 
@@ -609,8 +609,8 @@ RSpec.describe(DefMastership::Document) do
609
609
  describe '#explicit_version?' do
610
610
  let(:defs) do
611
611
  [
612
- instance_double(DefMastership::Definition, 'definition'),
613
- instance_double(DefMastership::Definition, 'definition')
612
+ instance_double(Defmastership::Definition, 'definition'),
613
+ instance_double(Defmastership::Definition, 'definition')
614
614
  ]
615
615
  end
616
616
  let(:input_lines) do
@@ -624,7 +624,7 @@ RSpec.describe(DefMastership::Document) do
624
624
  end
625
625
 
626
626
  before do
627
- allow(DefMastership::Definition).to(receive(:new).twice.and_return(defs.first, defs[1]))
627
+ allow(Defmastership::Definition).to(receive(:new).twice.and_return(defs.first, defs[1]))
628
628
  allow(defs.first).to(receive(:labels)).and_return([])
629
629
  allow(defs[1]).to(receive(:labels)).and_return([])
630
630
  allow(defs.first).to(receive(:<<).and_return(defs.first))
@@ -635,7 +635,7 @@ RSpec.describe(DefMastership::Document) do
635
635
  before do
636
636
  allow(defs.first).to(receive(:explicit_version)).and_return(nil)
637
637
  allow(defs[1]).to(receive(:explicit_version)).and_return(nil)
638
- document.parse(input_lines)
638
+ document.__send__(:do_parse, input_lines)
639
639
  document.explicit_version?
640
640
  end
641
641
 
@@ -648,7 +648,7 @@ RSpec.describe(DefMastership::Document) do
648
648
  before do
649
649
  allow(defs.first).to(receive(:explicit_version)).and_return('toto')
650
650
  allow(defs[1]).to(receive(:explicit_version)).and_return(nil)
651
- document.parse(input_lines)
651
+ document.__send__(:do_parse, input_lines)
652
652
  document.explicit_version?
653
653
  end
654
654
 
@@ -659,8 +659,8 @@ RSpec.describe(DefMastership::Document) do
659
659
  describe '#ref_to_def?' do
660
660
  let(:definitions) do
661
661
  [
662
- instance_double(DefMastership::Definition, 'def1'),
663
- instance_double(DefMastership::Definition, 'def2')
662
+ instance_double(Defmastership::Definition, 'def1'),
663
+ instance_double(Defmastership::Definition, 'def2')
664
664
  ]
665
665
  end
666
666
  let(:input_lines) do
@@ -674,7 +674,7 @@ RSpec.describe(DefMastership::Document) do
674
674
  end
675
675
 
676
676
  before do
677
- allow(DefMastership::Definition).to(receive(:new).twice.and_return(definitions.first, definitions[1]))
677
+ allow(Defmastership::Definition).to(receive(:new).twice.and_return(definitions.first, definitions[1]))
678
678
  allow(definitions.first).to(
679
679
  receive_messages(
680
680
  labels: [],
@@ -689,7 +689,7 @@ RSpec.describe(DefMastership::Document) do
689
689
  reference: 'TOTO-0002'
690
690
  )
691
691
  )
692
- document.parse(input_lines)
692
+ document.__send__(:do_parse, input_lines)
693
693
  end
694
694
 
695
695
  it { expect(document.ref_to_def('TOTO-0001')).to(eq(definitions.first)) }
@@ -1,13 +1,13 @@
1
1
  # Copyright (c) 2020 Jerome Arbez-Gindre
2
2
  # frozen_string_literal: true
3
3
 
4
- require('defmastership/csv_formatter_body')
4
+ require('defmastership/export/body_formatter')
5
5
 
6
- RSpec.describe(DefMastership::CSVFormatterBody) do
6
+ RSpec.describe(Defmastership::Export::BodyFormatter) do
7
7
  subject(:formatter) { described_class.new(document, definition) }
8
8
 
9
- let(:document) { instance_double(DefMastership::Document, 'document') }
10
- let(:definition) { instance_double(DefMastership::Definition, 'definition') }
9
+ let(:document) { instance_double(Defmastership::Document, 'document') }
10
+ let(:definition) { instance_double(Defmastership::Definition, 'definition') }
11
11
 
12
12
  describe '.new' do
13
13
  it { is_expected.not_to(be_nil) }
@@ -2,24 +2,24 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require('csv')
5
- require('defmastership/csv_formatter')
5
+ require('defmastership/export/csv/formatter')
6
6
  require('ostruct')
7
7
 
8
- RSpec.describe(DefMastership::CSVFormatter) do
8
+ RSpec.describe(Defmastership::Export::CSV::Formatter) do
9
9
  subject(:formatter) { described_class.new(document, ';') }
10
10
 
11
- let(:document) { instance_double(DefMastership::Document, 'document') }
11
+ let(:document) { instance_double(Defmastership::Document, 'document') }
12
12
 
13
13
  describe '.new' do
14
14
  it { is_expected.not_to(be_nil) }
15
15
  end
16
16
 
17
17
  describe '#export_to' do
18
- let(:header) { instance_double(DefMastership::CSVFormatterHeader, 'header') }
18
+ let(:header) { instance_double(Defmastership::Export::HeaderFormatter, 'header') }
19
19
  let(:bodies) do
20
20
  [
21
- instance_double(DefMastership::CSVFormatterBody, 'bodies[0]'),
22
- instance_double(DefMastership::CSVFormatterBody, 'bodies[1]')
21
+ instance_double(Defmastership::Export::BodyFormatter, 'bodies[0]'),
22
+ instance_double(Defmastership::Export::BodyFormatter, 'bodies[1]')
23
23
  ]
24
24
  end
25
25
  let(:csv) { instance_double(CSV, 'csv') }
@@ -27,9 +27,14 @@ RSpec.describe(DefMastership::CSVFormatter) do
27
27
  before do
28
28
  allow(CSV).to(receive(:open).with('whatever', 'w:ISO-8859-1', col_sep: ';').and_yield(csv))
29
29
  allow(csv).to(receive(:<<))
30
- allow(DefMastership::CSVFormatterHeader).to(receive(:new).with(document).and_return(header))
30
+ allow(Defmastership::Export::HeaderFormatter).to(receive(:new).with(document).and_return(header))
31
31
  bodies.each_with_index do |body, index|
32
- allow(DefMastership::CSVFormatterBody).to(receive(:new).with(document, :"def#{index}").and_return(body))
32
+ allow(Defmastership::Export::BodyFormatter).to(
33
+ receive(:new).with(
34
+ document,
35
+ :"def#{index}"
36
+ ).and_return(body)
37
+ )
33
38
  end
34
39
  allow(document).to(receive(:definitions).and_return(%i[def0 def1]))
35
40
  allow(document).to(receive(:wrong_explicit_checksum?).with(no_args).and_return(false))
@@ -1,12 +1,12 @@
1
1
  # Copyright (c) 2020 Jerome Arbez-Gindre
2
2
  # frozen_string_literal: true
3
3
 
4
- require('defmastership/csv_formatter_header')
4
+ require('defmastership/export/header_formatter')
5
5
 
6
- RSpec.describe(DefMastership::CSVFormatterHeader) do
6
+ RSpec.describe(Defmastership::Export::HeaderFormatter) do
7
7
  subject(:formatter) { described_class.new(document) }
8
8
 
9
- let(:document) { instance_double(DefMastership::Document, 'document') }
9
+ let(:document) { instance_double(Defmastership::Document, 'document') }
10
10
 
11
11
  describe '.new' do
12
12
  it { is_expected.not_to(be_nil) }
@@ -3,7 +3,7 @@
3
3
 
4
4
  require('defmastership/matching_line')
5
5
 
6
- RSpec.describe(DefMastership::MatchingLine) do
6
+ RSpec.describe(Defmastership::MatchingLine) do
7
7
  describe '.new' do
8
8
  subject(:matching_line) do
9
9
  described_class.new(:a_match, :a_line)
@@ -1,13 +1,13 @@
1
1
  # Copyright (c) 2020 Jerome Arbez-Gindre
2
2
  # frozen_string_literal: true
3
3
 
4
- require('defmastership/change_ref_modifier')
4
+ require('defmastership/modifier/change_ref')
5
5
 
6
- RSpec.describe(DefMastership::ChangeRefModifier) do
6
+ RSpec.describe(Defmastership::Modifier::ChangeRef) do
7
7
  subject(:refchanger) { described_class.new({}) }
8
8
 
9
9
  describe '.new' do
10
- it { expect(described_class.ancestors).to(include(DefMastership::Modifier)) }
10
+ it { expect(described_class.ancestors).to(include(Defmastership::Modifier::ModifierCommon)) }
11
11
  it { is_expected.not_to(be_nil) }
12
12
  it { is_expected.to(have_attributes(from_regexp: '')) }
13
13
  it { is_expected.to(have_attributes(to_template: '')) }
@@ -28,7 +28,7 @@ RSpec.describe(DefMastership::ChangeRefModifier) do
28
28
  end
29
29
  end
30
30
 
31
- describe '#replace_def' do
31
+ describe '#replace_refdef' do
32
32
  context 'when really simple rule' do
33
33
  subject(:refchanger) do
34
34
  described_class.new(
@@ -42,6 +42,21 @@ RSpec.describe(DefMastership::ChangeRefModifier) do
42
42
  expect(refchanger.replace_refdef('[define, whatever, TEMP]'))
43
43
  .to(eq('[define, whatever, TUTU]'))
44
44
  end
45
+
46
+ it do
47
+ expect(refchanger.replace_refdef('[define, whatever, TEMP(a~12345678)]'))
48
+ .to(eq('[define, whatever, TUTU(a~12345678)]'))
49
+ end
50
+
51
+ it do
52
+ expect(refchanger.replace_refdef('[define, whatever, TEMP(~12345678)]'))
53
+ .to(eq('[define, whatever, TUTU(~12345678)]'))
54
+ end
55
+
56
+ it do
57
+ expect(refchanger.replace_refdef('[define, whatever, TEMP(a)]'))
58
+ .to(eq('[define, whatever, TUTU(a)]'))
59
+ end
45
60
  end
46
61
 
47
62
  context 'when no valid definition' do
@@ -178,44 +193,4 @@ RSpec.describe(DefMastership::ChangeRefModifier) do
178
193
  ).to(eq('defs:iref[TOTO-0132] defs:iref[TOTO-0132] bla'))
179
194
  end
180
195
  end
181
-
182
- describe '#replace' do
183
- subject(:refchanger) do
184
- described_class.new(
185
- from_regexp: 'TEMP',
186
- to_template: 'TUTU'
187
- )
188
- end
189
-
190
- it do
191
- expect(refchanger.replace(:refdef, '[define, whatever, TEMP]'))
192
- .to(eq('[define, whatever, TUTU]'))
193
- end
194
-
195
- it do
196
- expect(refchanger.replace(:refdef, '[define, whatever, TEMP(a~12345678)]'))
197
- .to(eq('[define, whatever, TUTU(a~12345678)]'))
198
- end
199
-
200
- it do
201
- expect(refchanger.replace(:refdef, '[define, whatever, TEMP(~12345678)]'))
202
- .to(eq('[define, whatever, TUTU(~12345678)]'))
203
- end
204
-
205
- it do
206
- expect(refchanger.replace(:refdef, '[define, whatever, TEMP(a)]'))
207
- .to(eq('[define, whatever, TUTU(a)]'))
208
- end
209
-
210
- it do
211
- refchanger.replace(:refdef, '[define, whatever, TEMP]')
212
- expect(refchanger.replace(:irefs, 'defs:iref[TEMP] defs:iref[TEMP]'))
213
- .to(eq('defs:iref[TUTU] defs:iref[TUTU]'))
214
- end
215
-
216
- it do
217
- expect { refchanger.replace(:pouet, 'whatever') }
218
- .to(raise_error(NoMethodError))
219
- end
220
- end
221
196
  end
@@ -0,0 +1,45 @@
1
+ # Copyright (c) 2023 Jerome Arbez-Gindre
2
+ # frozen_string_literal: true
3
+
4
+ require('defmastership/modifier/factory')
5
+
6
+ module Defmastership
7
+ module Modifier
8
+ # Modifier example
9
+ class Toto
10
+ include ModifierCommon
11
+ end
12
+
13
+ # Modifier example
14
+ class TuTu
15
+ include ModifierCommon
16
+ end
17
+ end
18
+ end
19
+
20
+ RSpec.describe(Defmastership::Modifier::Factory) do
21
+ describe('.from_config') do
22
+ let(:toto) { instance_double(Defmastership::Modifier::Toto, 'toto') }
23
+ let(:toto_config) { { type: 'toto', config: { p: 'whatever' } } }
24
+ let(:tutu) { instance_double(Defmastership::Modifier::TuTu, 'tutu') }
25
+ let(:tutu_config) { { type: 'tu_tu', config: { p: 'whatever' } } }
26
+
27
+ before do
28
+ allow(Defmastership::Modifier::Toto).to(receive(:new).with(toto_config[:config]).and_return(toto))
29
+ allow(Defmastership::Modifier::TuTu).to(receive(:new).with(tutu_config[:config]).and_return(tutu))
30
+ end
31
+
32
+ it { expect(described_class.from_config(toto_config)).to(be(toto)) }
33
+ it { expect(described_class.from_config(tutu_config)).to(be(tutu)) }
34
+
35
+ it do
36
+ described_class.from_config(toto_config)
37
+ expect(Defmastership::Modifier::Toto).to(have_received(:new).with(toto_config[:config]))
38
+ end
39
+
40
+ it do
41
+ described_class.from_config(tutu_config)
42
+ expect(Defmastership::Modifier::TuTu).to(have_received(:new).with(tutu_config[:config]))
43
+ end
44
+ end
45
+ end