defmastership 1.0.1 → 1.0.6

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.gitlab-ci.yml +20 -0
  4. data/.rubocop.yml +5 -4
  5. data/Gemfile +1 -0
  6. data/LICENSE +22 -0
  7. data/Rakefile +2 -2
  8. data/bin/defmastership +25 -17
  9. data/cucumber.yml +2 -0
  10. data/defmastership.gemspec +18 -11
  11. data/features/changeref.feature +82 -129
  12. data/features/export.feature +102 -31
  13. data/features/modify.feature +143 -0
  14. data/features/rename_included_files.feature +121 -0
  15. data/features/step_definitions/defmastership_steps.rb +1 -0
  16. data/features/support/env.rb +1 -0
  17. data/lib/defmastership.rb +12 -3
  18. data/lib/defmastership/batch_modifier.rb +33 -0
  19. data/lib/defmastership/{ref_changer.rb → change_ref_line_modifier.rb} +19 -35
  20. data/lib/defmastership/change_ref_modifier.rb +15 -0
  21. data/lib/defmastership/comment_filter.rb +1 -0
  22. data/lib/defmastership/constants.rb +15 -1
  23. data/lib/defmastership/csv_formatter.rb +19 -18
  24. data/lib/defmastership/csv_formatter_body.rb +12 -6
  25. data/lib/defmastership/csv_formatter_header.rb +12 -10
  26. data/lib/defmastership/definition.rb +12 -0
  27. data/lib/defmastership/definition_parser.rb +46 -0
  28. data/lib/defmastership/document.rb +44 -75
  29. data/lib/defmastership/filters.rb +30 -0
  30. data/lib/defmastership/line_modifier_base.rb +29 -0
  31. data/lib/defmastership/modifier_base.rb +29 -0
  32. data/lib/defmastership/rename_included_files_line_modifier.rb +126 -0
  33. data/lib/defmastership/rename_included_files_modifier.rb +30 -0
  34. data/lib/defmastership/version.rb +2 -1
  35. data/spec/spec_helper.rb +2 -0
  36. data/spec/unit/defmastership/batch_modifier_spec.rb +115 -0
  37. data/spec/unit/defmastership/{ref_changer_spec.rb → change_ref_line_modifier_spec.rb} +49 -26
  38. data/spec/unit/defmastership/change_ref_modifier_spec.rb +76 -0
  39. data/spec/unit/defmastership/comment_filter_spec.rb +9 -4
  40. data/spec/unit/defmastership/csv_formatter_body_spec.rb +62 -37
  41. data/spec/unit/defmastership/csv_formatter_header_spec.rb +47 -22
  42. data/spec/unit/defmastership/csv_formatter_spec.rb +67 -105
  43. data/spec/unit/defmastership/definition_parser_spec.rb +63 -0
  44. data/spec/unit/defmastership/definition_spec.rb +31 -4
  45. data/spec/unit/defmastership/document_spec.rb +113 -35
  46. data/spec/unit/defmastership/rename_included_files_line_modifier_spec.rb +203 -0
  47. data/spec/unit/defmastership/rename_included_files_modifier_spec.rb +67 -0
  48. data/spec/unit/defmastership_spec.rb +1 -0
  49. metadata +44 -17
  50. data/Gemfile.lock +0 -140
  51. data/lib/defmastership/batch_changer.rb +0 -40
  52. data/lib/defmastership/project_ref_changer.rb +0 -27
  53. data/spec/unit/defmastership/batch_changer_spec.rb +0 -108
  54. data/spec/unit/defmastership/project_ref_changer_spec.rb +0 -79
@@ -1,3 +1,4 @@
1
+ # Copyright (c) 2020 Jerome Arbez-Gindre
1
2
  # frozen_string_literal: true
2
3
 
3
4
  RSpec.describe(DefMastership) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defmastership
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jérôme Arbez-Gindre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-14 00:00:00.000000000 Z
11
+ date: 2021-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aruba
@@ -72,28 +72,42 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '1.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '1.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.5'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rubocop-rspec
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '1'
103
+ version: '2.0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '1'
110
+ version: '2.0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: simplecov
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -160,10 +174,11 @@ extra_rdoc_files:
160
174
  - defmastership.rdoc
161
175
  files:
162
176
  - ".gitignore"
177
+ - ".gitlab-ci.yml"
163
178
  - ".rspec"
164
179
  - ".rubocop.yml"
165
180
  - Gemfile
166
- - Gemfile.lock
181
+ - LICENSE
167
182
  - README.rdoc
168
183
  - Rakefile
169
184
  - bin/defmastership
@@ -174,39 +189,51 @@ files:
174
189
  - config/reek.yml
175
190
  - config/rubocop.yml
176
191
  - config/yardstick.yml
192
+ - cucumber.yml
177
193
  - defmastership.gemspec
178
194
  - defmastership.rdoc
179
195
  - features/changeref.feature
180
196
  - features/defmastership.feature
181
197
  - features/export.feature
198
+ - features/modify.feature
199
+ - features/rename_included_files.feature
182
200
  - features/step_definitions/defmastership_steps.rb
183
201
  - features/support/env.rb
184
202
  - lib/defmastership.rb
185
- - lib/defmastership/batch_changer.rb
203
+ - lib/defmastership/batch_modifier.rb
204
+ - lib/defmastership/change_ref_line_modifier.rb
205
+ - lib/defmastership/change_ref_modifier.rb
186
206
  - lib/defmastership/comment_filter.rb
187
207
  - lib/defmastership/constants.rb
188
208
  - lib/defmastership/csv_formatter.rb
189
209
  - lib/defmastership/csv_formatter_body.rb
190
210
  - lib/defmastership/csv_formatter_header.rb
191
211
  - lib/defmastership/definition.rb
212
+ - lib/defmastership/definition_parser.rb
192
213
  - lib/defmastership/document.rb
193
- - lib/defmastership/project_ref_changer.rb
194
- - lib/defmastership/ref_changer.rb
214
+ - lib/defmastership/filters.rb
215
+ - lib/defmastership/line_modifier_base.rb
216
+ - lib/defmastership/modifier_base.rb
217
+ - lib/defmastership/rename_included_files_line_modifier.rb
218
+ - lib/defmastership/rename_included_files_modifier.rb
195
219
  - lib/defmastership/version.rb
196
220
  - spec/spec_helper.rb
197
- - spec/unit/defmastership/batch_changer_spec.rb
221
+ - spec/unit/defmastership/batch_modifier_spec.rb
222
+ - spec/unit/defmastership/change_ref_line_modifier_spec.rb
223
+ - spec/unit/defmastership/change_ref_modifier_spec.rb
198
224
  - spec/unit/defmastership/comment_filter_spec.rb
199
225
  - spec/unit/defmastership/csv_formatter_body_spec.rb
200
226
  - spec/unit/defmastership/csv_formatter_header_spec.rb
201
227
  - spec/unit/defmastership/csv_formatter_spec.rb
228
+ - spec/unit/defmastership/definition_parser_spec.rb
202
229
  - spec/unit/defmastership/definition_spec.rb
203
230
  - spec/unit/defmastership/document_spec.rb
204
- - spec/unit/defmastership/project_ref_changer_spec.rb
205
- - spec/unit/defmastership/ref_changer_spec.rb
231
+ - spec/unit/defmastership/rename_included_files_line_modifier_spec.rb
232
+ - spec/unit/defmastership/rename_included_files_modifier_spec.rb
206
233
  - spec/unit/defmastership_spec.rb
207
- homepage: http://your.website.com
234
+ homepage: https://gitlab.com/jjag/defmastership/
208
235
  licenses:
209
- - Nonstandard
236
+ - MIT
210
237
  metadata: {}
211
238
  post_install_message:
212
239
  rdoc_options:
@@ -220,14 +247,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
247
  requirements:
221
248
  - - ">="
222
249
  - !ruby/object:Gem::Version
223
- version: '2.6'
250
+ version: '2.5'
224
251
  required_rubygems_version: !ruby/object:Gem::Requirement
225
252
  requirements:
226
253
  - - ">="
227
254
  - !ruby/object:Gem::Version
228
255
  version: '0'
229
256
  requirements: []
230
- rubygems_version: 3.1.2
257
+ rubygems_version: 3.2.5
231
258
  signing_key:
232
259
  specification_version: 4
233
260
  summary: Handling of references and definitions with asciidoctor
data/Gemfile.lock DELETED
@@ -1,140 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- defmastership (1.0.1)
5
- aasm (~> 5)
6
- asciidoctor (~> 2)
7
- gli (~> 2)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- aasm (5.1.1)
13
- concurrent-ruby (~> 1.0)
14
- activesupport (6.0.3.2)
15
- concurrent-ruby (~> 1.0, >= 1.0.2)
16
- i18n (>= 0.7, < 2)
17
- minitest (~> 5.1)
18
- tzinfo (~> 1.1)
19
- zeitwerk (~> 2.2, >= 2.2.2)
20
- aruba (1.0.3)
21
- childprocess (>= 2.0, < 5.0)
22
- contracts (~> 0.16.0)
23
- cucumber (>= 2.4, < 6.0)
24
- ffi (~> 1.9)
25
- rspec-expectations (~> 3.4)
26
- thor (~> 1.0)
27
- asciidoctor (2.0.10)
28
- ast (2.4.1)
29
- builder (3.2.4)
30
- childprocess (4.0.0)
31
- concurrent-ruby (1.1.7)
32
- contracts (0.16.0)
33
- cucumber (5.1.1)
34
- builder (~> 3.2, >= 3.2.4)
35
- cucumber-core (~> 8.0, >= 8.0.1)
36
- cucumber-create-meta (~> 2.0, >= 2.0.2)
37
- cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
38
- cucumber-gherkin (~> 15.0, >= 15.0.2)
39
- cucumber-html-formatter (~> 9.0, >= 9.0.0)
40
- cucumber-messages (~> 13.0, >= 13.0.1)
41
- cucumber-wire (~> 4.0, >= 4.0.1)
42
- diff-lcs (~> 1.4, >= 1.4.4)
43
- multi_test (~> 0.1, >= 0.1.2)
44
- sys-uname (~> 1.2, >= 1.2.1)
45
- cucumber-core (8.0.1)
46
- cucumber-gherkin (~> 15.0, >= 15.0.2)
47
- cucumber-messages (~> 13.0, >= 13.0.1)
48
- cucumber-tag-expressions (~> 2.0, >= 2.0.4)
49
- cucumber-create-meta (2.0.2)
50
- cucumber-messages (~> 13.0, >= 13.0.1)
51
- sys-uname (~> 1.2, >= 1.2.1)
52
- cucumber-cucumber-expressions (10.3.0)
53
- cucumber-gherkin (15.0.2)
54
- cucumber-messages (~> 13.0, >= 13.0.1)
55
- cucumber-html-formatter (9.0.0)
56
- cucumber-messages (~> 13.0, >= 13.0.1)
57
- cucumber-messages (13.0.1)
58
- protobuf-cucumber (~> 3.10, >= 3.10.8)
59
- cucumber-tag-expressions (2.0.4)
60
- cucumber-wire (4.0.1)
61
- cucumber-core (~> 8.0, >= 8.0.1)
62
- cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
63
- cucumber-messages (~> 13.0, >= 13.0.1)
64
- diff-lcs (1.4.4)
65
- docile (1.3.2)
66
- ffi (1.13.1)
67
- gli (2.19.2)
68
- i18n (1.8.5)
69
- concurrent-ruby (~> 1.0)
70
- middleware (0.1.0)
71
- minitest (5.14.2)
72
- multi_test (0.1.2)
73
- parallel (1.19.2)
74
- parser (2.7.1.4)
75
- ast (~> 2.4.1)
76
- protobuf-cucumber (3.10.8)
77
- activesupport (>= 3.2)
78
- middleware
79
- thor
80
- thread_safe
81
- rainbow (3.0.0)
82
- rake (13.0.1)
83
- rdoc (6.2.1)
84
- regexp_parser (1.7.1)
85
- rexml (3.2.4)
86
- rspec (3.9.0)
87
- rspec-core (~> 3.9.0)
88
- rspec-expectations (~> 3.9.0)
89
- rspec-mocks (~> 3.9.0)
90
- rspec-core (3.9.2)
91
- rspec-support (~> 3.9.3)
92
- rspec-expectations (3.9.2)
93
- diff-lcs (>= 1.2.0, < 2.0)
94
- rspec-support (~> 3.9.0)
95
- rspec-mocks (3.9.1)
96
- diff-lcs (>= 1.2.0, < 2.0)
97
- rspec-support (~> 3.9.0)
98
- rspec-support (3.9.3)
99
- rubocop (0.90.0)
100
- parallel (~> 1.10)
101
- parser (>= 2.7.1.1)
102
- rainbow (>= 2.2.2, < 4.0)
103
- regexp_parser (>= 1.7)
104
- rexml
105
- rubocop-ast (>= 0.3.0, < 1.0)
106
- ruby-progressbar (~> 1.7)
107
- unicode-display_width (>= 1.4.0, < 2.0)
108
- rubocop-ast (0.3.0)
109
- parser (>= 2.7.1.4)
110
- rubocop-rspec (1.43.2)
111
- rubocop (~> 0.87)
112
- ruby-progressbar (1.10.1)
113
- simplecov (0.19.0)
114
- docile (~> 1.1)
115
- simplecov-html (~> 0.11)
116
- simplecov-html (0.12.2)
117
- sys-uname (1.2.1)
118
- ffi (>= 1.0.0)
119
- thor (1.0.1)
120
- thread_safe (0.3.6)
121
- tzinfo (1.2.7)
122
- thread_safe (~> 0.1)
123
- unicode-display_width (1.7.0)
124
- zeitwerk (2.4.0)
125
-
126
- PLATFORMS
127
- ruby
128
-
129
- DEPENDENCIES
130
- aruba (~> 1)
131
- defmastership!
132
- rake (~> 13)
133
- rdoc (~> 6)
134
- rspec (~> 3)
135
- rubocop (~> 0)
136
- rubocop-rspec (~> 1)
137
- simplecov (~> 0)
138
-
139
- BUNDLED WITH
140
- 2.1.4
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DefMastership
4
- # Change references from temporary to definitive with multiple RefChangers
5
- class BatchChanger
6
- attr_reader :refchangers
7
-
8
- def initialize
9
- @refchangers = {}
10
- end
11
-
12
- def self.from_h(hash)
13
- new.from_h(hash)
14
- end
15
-
16
- def from_h(hash)
17
- @refchangers =
18
- hash.transform_values do |value|
19
- DefMastership::RefChanger.from_h(value)
20
- end
21
- self
22
- end
23
-
24
- def to_h
25
- @refchangers.transform_values(&:to_h)
26
- end
27
-
28
- def replace(symb, line)
29
- @refchangers.reduce(line) do |res_line, (_, refchanger)|
30
- refchanger.public_send("replace_#{symb}".to_sym, res_line)
31
- end
32
- end
33
-
34
- def changes
35
- @refchangers.reduce([]) do |all_changes, (_, refchanger)|
36
- all_changes + refchanger.changes
37
- end
38
- end
39
- end
40
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DefMastership
4
- # Change all refs of a given project
5
- class ProjectRefChanger
6
- attr_reader :yaml_config, :adoc_texts, :changes
7
-
8
- def initialize(yaml_config, adoc_texts)
9
- @yaml_config = yaml_config
10
- @adoc_texts = adoc_texts
11
- end
12
-
13
- def replace_all
14
- batch = BatchChanger.from_h(@yaml_config)
15
-
16
- @adoc_texts =
17
- %i[refdef irefs].reduce(@adoc_texts) do |texts, method|
18
- texts.transform_values do |text|
19
- text.lines.map { |line| batch.replace(method, line) }.join
20
- end
21
- end
22
-
23
- @yaml_config = batch.to_h.to_yaml
24
- @changes = batch.changes
25
- end
26
- end
27
- end
@@ -1,108 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require('defmastership')
4
-
5
- RSpec.describe(DefMastership::BatchChanger) do
6
- subject(:batchchanger) { described_class.new }
7
-
8
- describe '.new' do
9
- it { is_expected.not_to(be(nil)) }
10
- it { is_expected.to(have_attributes(refchangers: {})) }
11
- end
12
-
13
- describe '.from_h' do
14
- before do
15
- allow(DefMastership::RefChanger).to(receive(:from_h).once
16
- .with(:whatever_a).and_return(:toto_a))
17
- end
18
-
19
- it { expect(described_class.from_h(a: :whatever_a)).not_to(be(nil)) }
20
-
21
- it {
22
- batchchanger = described_class.from_h(a: :whatever_a)
23
- expect(batchchanger).to(have_attributes(refchangers: { a: :toto_a }))
24
- }
25
- end
26
-
27
- describe '#from_h' do
28
- before do
29
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:whatever_a).and_return(:one))
30
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:whatever_b).and_return(:two))
31
- batchchanger.from_h(a: :whatever_a, b: :whatever_b)
32
- end
33
-
34
- it { expect(DefMastership::RefChanger).to(have_received(:from_h).with(:whatever_a)) }
35
-
36
- it { expect(DefMastership::RefChanger).to(have_received(:from_h).with(:whatever_b)) }
37
-
38
- it { expect(batchchanger).to(have_attributes(refchangers: { a: :one, b: :two })) }
39
- end
40
-
41
- describe '#to_h' do
42
- subject(:batchchanger) { described_class.from_h(a: :a, b: :b) }
43
-
44
- let(:refchanger_a) { instance_double(DefMastership::RefChanger, 'refchanger_a') }
45
- let(:refchanger_b) { instance_double(DefMastership::RefChanger, 'refchanger_b') }
46
-
47
- before do
48
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:a).and_return(refchanger_a))
49
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:b).and_return(refchanger_b))
50
- allow(refchanger_a).to(receive(:to_h).and_return(a_a: :a_a))
51
- allow(refchanger_b).to(receive(:to_h).and_return(b_b: :b_b))
52
- batchchanger.to_h
53
- end
54
-
55
- it { expect(refchanger_a).to(have_received(:to_h)) }
56
-
57
- it { expect(refchanger_b).to(have_received(:to_h)) }
58
-
59
- it do
60
- expect(batchchanger.to_h).to(eq(
61
- a: { a_a: :a_a },
62
- b: { b_b: :b_b }
63
- ))
64
- end
65
- end
66
-
67
- describe 'replace' do
68
- subject(:batchchanger) { described_class.from_h(a: :a, b: :b) }
69
-
70
- let(:refchanger_a) { instance_double(DefMastership::RefChanger, 'refchanger_a') }
71
- let(:refchanger_b) { instance_double(DefMastership::RefChanger, 'refchanger_b') }
72
-
73
- before do
74
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:a).and_return(refchanger_a))
75
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:b).and_return(refchanger_b))
76
- allow(refchanger_a).to(receive(:public_send).with(:replace_toto, 'a line').and_return('b line'))
77
- allow(refchanger_b).to(receive(:public_send).with(:replace_toto, 'b line').and_return('c line'))
78
- batchchanger.replace(:toto, 'a line')
79
- end
80
-
81
- it { expect(refchanger_a).to(have_received(:public_send).with(:replace_toto, 'a line')) }
82
-
83
- it { expect(refchanger_b).to(have_received(:public_send).with(:replace_toto, 'b line')) }
84
-
85
- it { expect(batchchanger.replace(:toto, 'a line')).to(eq('c line')) }
86
- end
87
-
88
- describe 'changes' do
89
- subject(:batchchanger) { described_class.from_h(a: :a, b: :b) }
90
-
91
- let(:refchanger_a) { instance_double(DefMastership::RefChanger, 'refchanger_a') }
92
- let(:refchanger_b) { instance_double(DefMastership::RefChanger, 'refchanger_b') }
93
-
94
- before do
95
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:a).and_return(refchanger_a))
96
- allow(DefMastership::RefChanger).to(receive(:from_h).with(:b).and_return(refchanger_b))
97
- allow(refchanger_a).to(receive(:changes).and_return([%w[a1 a2]]))
98
- allow(refchanger_b).to(receive(:changes).and_return([%w[b1 b2]]))
99
- end
100
-
101
- it do
102
- expect(batchchanger.changes).to(eq([
103
- %w[a1 a2],
104
- %w[b1 b2]
105
- ]))
106
- end
107
- end
108
- end