toml-merge 7.1.7 → 7.1.8
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/toml/merge/node_wrapper.rb +14 -1
- data/lib/toml/merge/source_preserving_provider.rb +53 -0
- data/lib/toml/merge/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +14 -14
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1810796834272f3e3423cbb775fd038edb68d0517db5c363934accd3a4dcf3f9
|
|
4
|
+
data.tar.gz: b043c07b8a37a470451fd1f5a5eae6aa295f431ebdd197a20528ae1913f5ace3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5f7f680e3207afeba5292b78a972c7de8d58526e6b22876ad3e1374d6473940afd032dced2308f53838d072054253bb3ad7d6745c81ba0be2d71eae750402e39
|
|
7
|
+
data.tar.gz: 35ac98a55b96cbb9f05263027a03c27514d819cf1912ef125f8fb46ab3f4dacfa525445feaf1074b20e6265aeeb5cb04881d4989aa833fe9f0e757f31ea2d802
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -97,7 +97,12 @@ module Toml
|
|
|
97
97
|
return unless pair?
|
|
98
98
|
return unless @start_line && @end_line && @end_line > @start_line
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
range_text = if @backend == :citrus
|
|
101
|
+
node_text(citrus_pair_value_node || @node).rstrip
|
|
102
|
+
else
|
|
103
|
+
node_text(@node).sub(/\n\z/, '')
|
|
104
|
+
end
|
|
105
|
+
line_count = [range_text.lines.count, 1].max
|
|
101
106
|
@end_line = @start_line + line_count - 1
|
|
102
107
|
end
|
|
103
108
|
|
|
@@ -471,6 +476,14 @@ module Toml
|
|
|
471
476
|
|
|
472
477
|
private
|
|
473
478
|
|
|
479
|
+
def citrus_pair_value_node
|
|
480
|
+
each_child(@node).find do |child|
|
|
481
|
+
canonical = NodeTypeNormalizer.canonical_type(child.type, @backend)
|
|
482
|
+
!NodeTypeNormalizer.key_type?(canonical) &&
|
|
483
|
+
!%i[comment equals whitespace unknown space indent line_break].include?(canonical)
|
|
484
|
+
end
|
|
485
|
+
end
|
|
486
|
+
|
|
474
487
|
def table_name_container
|
|
475
488
|
return @node unless parslet_element_node?
|
|
476
489
|
|
|
@@ -92,6 +92,7 @@ module Toml
|
|
|
92
92
|
current: analyze_role(:current, request.fetch(:current_source))
|
|
93
93
|
}
|
|
94
94
|
unsafe = documents.values.reject { |document| document.issues.empty? }
|
|
95
|
+
return merge2_with_toml_substrate(request, documents) if structural_merge2_candidate?(documents.values)
|
|
95
96
|
return invalid_document_failure(:merge2, request, unsafe) unless unsafe.empty?
|
|
96
97
|
|
|
97
98
|
additions = documents[:incoming].entries.reject { |entry| documents[:current].by_key.key?(entry.key) }
|
|
@@ -136,6 +137,58 @@ module Toml
|
|
|
136
137
|
|
|
137
138
|
private
|
|
138
139
|
|
|
140
|
+
def structural_merge2_candidate?(documents)
|
|
141
|
+
allowed = %i[table array_of_tables dotted_key]
|
|
142
|
+
documents.any? { |document| document.issues.any? } && documents.all? do |document|
|
|
143
|
+
document.analysis && document.issues.all? { |item| allowed.include?(item[:category]) }
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def merge2_with_toml_substrate(request, documents)
|
|
148
|
+
merged = TreeHaver.with_backend(backend_id) do
|
|
149
|
+
SmartMerger.new(
|
|
150
|
+
documents.fetch(:incoming).source,
|
|
151
|
+
documents.fetch(:current).source,
|
|
152
|
+
preference: :destination,
|
|
153
|
+
add_template_only_nodes: true
|
|
154
|
+
).merge_result
|
|
155
|
+
end
|
|
156
|
+
output = merged.to_toml
|
|
157
|
+
verification = TreeHaver.with_backend(backend_id) { FileAnalysis.new(output) }
|
|
158
|
+
unless verification.valid?
|
|
159
|
+
return failure(
|
|
160
|
+
:merge2,
|
|
161
|
+
request,
|
|
162
|
+
category: :verification_failure,
|
|
163
|
+
message: 'TOML substrate output did not reparse with the selected backend.',
|
|
164
|
+
verification: { output_reparsed: false }
|
|
165
|
+
)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
result(
|
|
169
|
+
:merge2,
|
|
170
|
+
request,
|
|
171
|
+
output: output,
|
|
172
|
+
changes: merged.decision_summary,
|
|
173
|
+
render_report: {
|
|
174
|
+
strategy: :toml_substrate,
|
|
175
|
+
line_records: merged.lines_array.each_with_index.map do |line, index|
|
|
176
|
+
{
|
|
177
|
+
output_line: index + 1,
|
|
178
|
+
source_role: line[:source],
|
|
179
|
+
original_line: line[:original_line],
|
|
180
|
+
decision: line[:decision]
|
|
181
|
+
}
|
|
182
|
+
end
|
|
183
|
+
},
|
|
184
|
+
verification: {
|
|
185
|
+
output_reparsed: true,
|
|
186
|
+
backend: backend_id,
|
|
187
|
+
unresolved_case_count: merged.unresolved_cases.length
|
|
188
|
+
}
|
|
189
|
+
)
|
|
190
|
+
end
|
|
191
|
+
|
|
139
192
|
def analyze_role(role, source)
|
|
140
193
|
analysis = TreeHaver.with_backend(backend_id) { ::Toml::Merge::FileAnalysis.new(source) }
|
|
141
194
|
unless analysis.valid?
|
data/lib/toml/merge/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Toml
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = '7.1.
|
|
8
|
+
VERSION = '7.1.8'
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: toml-merge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.1.
|
|
4
|
+
version: 7.1.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -43,28 +43,28 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - '='
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 7.1.
|
|
46
|
+
version: 7.1.8
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - '='
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 7.1.
|
|
53
|
+
version: 7.1.8
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: tree_haver
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - '='
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 7.1.
|
|
60
|
+
version: 7.1.8
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - '='
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 7.1.
|
|
67
|
+
version: 7.1.8
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: version_gem
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -94,7 +94,7 @@ dependencies:
|
|
|
94
94
|
version: '3.0'
|
|
95
95
|
- - ">="
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version: 3.0.
|
|
97
|
+
version: 3.0.31
|
|
98
98
|
type: :development
|
|
99
99
|
prerelease: false
|
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -104,7 +104,7 @@ dependencies:
|
|
|
104
104
|
version: '3.0'
|
|
105
105
|
- - ">="
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
|
-
version: 3.0.
|
|
107
|
+
version: 3.0.31
|
|
108
108
|
- !ruby/object:Gem::Dependency
|
|
109
109
|
name: bundler-audit
|
|
110
110
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -182,7 +182,7 @@ dependencies:
|
|
|
182
182
|
version: '3.2'
|
|
183
183
|
- - ">="
|
|
184
184
|
- !ruby/object:Gem::Version
|
|
185
|
-
version: 3.2.
|
|
185
|
+
version: 3.2.3
|
|
186
186
|
type: :development
|
|
187
187
|
prerelease: false
|
|
188
188
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -192,7 +192,7 @@ dependencies:
|
|
|
192
192
|
version: '3.2'
|
|
193
193
|
- - ">="
|
|
194
194
|
- !ruby/object:Gem::Version
|
|
195
|
-
version: 3.2.
|
|
195
|
+
version: 3.2.3
|
|
196
196
|
- !ruby/object:Gem::Dependency
|
|
197
197
|
name: kettle-test
|
|
198
198
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -222,7 +222,7 @@ dependencies:
|
|
|
222
222
|
version: '3.2'
|
|
223
223
|
- - ">="
|
|
224
224
|
- !ruby/object:Gem::Version
|
|
225
|
-
version: 3.2.
|
|
225
|
+
version: 3.2.7
|
|
226
226
|
type: :development
|
|
227
227
|
prerelease: false
|
|
228
228
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -232,7 +232,7 @@ dependencies:
|
|
|
232
232
|
version: '3.2'
|
|
233
233
|
- - ">="
|
|
234
234
|
- !ruby/object:Gem::Version
|
|
235
|
-
version: 3.2.
|
|
235
|
+
version: 3.2.7
|
|
236
236
|
- !ruby/object:Gem::Dependency
|
|
237
237
|
name: ruby-progressbar
|
|
238
238
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -320,10 +320,10 @@ licenses:
|
|
|
320
320
|
- PolyForm-Small-Business-1.0.0
|
|
321
321
|
metadata:
|
|
322
322
|
homepage_uri: https://structuredmerge.org
|
|
323
|
-
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.
|
|
324
|
-
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.
|
|
323
|
+
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.8
|
|
324
|
+
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.8/CHANGELOG.md
|
|
325
325
|
bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
|
|
326
|
-
documentation_uri: https://www.rubydoc.info/gems/toml-merge/7.1.
|
|
326
|
+
documentation_uri: https://www.rubydoc.info/gems/toml-merge/7.1.8
|
|
327
327
|
funding_uri: https://github.com/sponsors/pboling
|
|
328
328
|
wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
|
|
329
329
|
news_uri: https://www.railsbling.com/tags/toml-merge
|
metadata.gz.sig
CHANGED
|
Binary file
|