markly-merge 7.0.0 → 7.1.3
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/LICENSE.md +13 -0
- data/README.md +436 -0
- data/lib/markly/merge/backend.rb +288 -0
- data/lib/markly/merge/comment_tracker.rb +7 -0
- data/lib/markly/merge/debug_logger.rb +26 -0
- data/lib/markly/merge/file_analysis.rb +39 -0
- data/lib/markly/merge/freeze_node.rb +7 -0
- data/lib/markly/merge/partial_template_merger.rb +20 -0
- data/lib/markly/merge/provider.rb +41 -0
- data/lib/markly/merge/smart_merger.rb +69 -0
- data/lib/markly/merge/version.rb +5 -3
- data/lib/markly/merge.rb +182 -146
- data/lib/markly-merge.rb +7 -1
- data/sig/markly/merge.rbs +15 -0
- data.tar.gz.sig +0 -0
- metadata +257 -13
- metadata.gz.sig +0 -0
data/lib/markly/merge.rb
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'markdown-merge'
|
|
4
|
+
require 'markly'
|
|
5
|
+
require_relative 'merge/version'
|
|
6
|
+
require_relative 'merge/backend'
|
|
5
7
|
|
|
6
8
|
module Markly
|
|
7
9
|
module Merge
|
|
8
|
-
|
|
10
|
+
module_function
|
|
9
11
|
|
|
10
|
-
PACKAGE_NAME =
|
|
11
|
-
BACKEND_REFERENCE = TreeHaver::BackendReference.new(id:
|
|
12
|
+
PACKAGE_NAME = 'markly-merge'
|
|
13
|
+
BACKEND_REFERENCE = TreeHaver::BackendReference.new(id: 'markly', family: 'native').freeze
|
|
12
14
|
TreeHaver::BackendRegistry.register(BACKEND_REFERENCE)
|
|
15
|
+
Markdown::Merge::WrapperSupport.install!(
|
|
16
|
+
wrapper_module: self,
|
|
17
|
+
require_prefix: 'markly/merge',
|
|
18
|
+
default_freeze_token: 'markly-merge',
|
|
19
|
+
default_inner_merge_code_blocks: true,
|
|
20
|
+
registry_tag: :markly_merge,
|
|
21
|
+
merger_class: 'Markly::Merge::SmartMerger'
|
|
22
|
+
)
|
|
13
23
|
|
|
14
24
|
def markdown_feature_profile
|
|
15
25
|
Markdown::Merge.markdown_feature_profile
|
|
@@ -21,7 +31,9 @@ module Markly
|
|
|
21
31
|
|
|
22
32
|
def markdown_backend_feature_profile(backend: nil)
|
|
23
33
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
24
|
-
|
|
34
|
+
unless requested == BACKEND_REFERENCE.id
|
|
35
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
36
|
+
end
|
|
25
37
|
|
|
26
38
|
markdown_feature_profile.merge(backend: BACKEND_REFERENCE.id, backend_ref: BACKEND_REFERENCE.to_h)
|
|
27
39
|
end
|
|
@@ -45,41 +57,41 @@ module Markly
|
|
|
45
57
|
package: PACKAGE_NAME,
|
|
46
58
|
backend: BACKEND_REFERENCE.id,
|
|
47
59
|
structured_edit_profile: {
|
|
48
|
-
family:
|
|
60
|
+
family: 'markdown',
|
|
49
61
|
structure_profile: Ast::Merge.structured_edit_structure_profile(
|
|
50
|
-
owner_scope:
|
|
51
|
-
owner_selector:
|
|
52
|
-
owner_selector_family:
|
|
62
|
+
owner_scope: 'heading_sections',
|
|
63
|
+
owner_selector: 'heading_sections',
|
|
64
|
+
owner_selector_family: 'section_branch',
|
|
53
65
|
known_owner_selector: true,
|
|
54
66
|
supported_comment_regions: [],
|
|
55
|
-
metadata: { family:
|
|
67
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
56
68
|
),
|
|
57
69
|
selection_profile: Ast::Merge.structured_edit_selection_profile(
|
|
58
|
-
owner_scope:
|
|
59
|
-
owner_selector:
|
|
60
|
-
owner_selector_family:
|
|
61
|
-
selector_kind:
|
|
62
|
-
selection_intent:
|
|
63
|
-
selection_intent_family:
|
|
70
|
+
owner_scope: 'heading_sections',
|
|
71
|
+
owner_selector: 'heading_sections',
|
|
72
|
+
owner_selector_family: 'section_branch',
|
|
73
|
+
selector_kind: 'heading_section',
|
|
74
|
+
selection_intent: 'section_branch',
|
|
75
|
+
selection_intent_family: 'section_branch',
|
|
64
76
|
known_selection_intent: true,
|
|
65
77
|
comment_region: nil,
|
|
66
78
|
include_trailing_gap: false,
|
|
67
79
|
comment_anchored: false,
|
|
68
|
-
metadata: { family:
|
|
80
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
69
81
|
),
|
|
70
82
|
match_profile: Ast::Merge.structured_edit_match_profile(
|
|
71
|
-
start_boundary:
|
|
72
|
-
start_boundary_family:
|
|
83
|
+
start_boundary: 'owner_start',
|
|
84
|
+
start_boundary_family: 'structural_owner',
|
|
73
85
|
known_start_boundary: true,
|
|
74
|
-
end_boundary:
|
|
75
|
-
end_boundary_family:
|
|
86
|
+
end_boundary: 'owner_end',
|
|
87
|
+
end_boundary_family: 'structural_owner',
|
|
76
88
|
known_end_boundary: true,
|
|
77
|
-
payload_kind:
|
|
78
|
-
payload_family:
|
|
89
|
+
payload_kind: 'section_branch',
|
|
90
|
+
payload_family: 'section_branch',
|
|
79
91
|
known_payload_kind: true,
|
|
80
92
|
comment_anchored: false,
|
|
81
93
|
trailing_gap_extended: false,
|
|
82
|
-
metadata: { family:
|
|
94
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
83
95
|
)
|
|
84
96
|
}
|
|
85
97
|
}
|
|
@@ -90,37 +102,37 @@ module Markly
|
|
|
90
102
|
package: PACKAGE_NAME,
|
|
91
103
|
backend: BACKEND_REFERENCE.id,
|
|
92
104
|
structured_edit_request: Ast::Merge.structured_edit_request(
|
|
93
|
-
operation_kind:
|
|
105
|
+
operation_kind: 'replace',
|
|
94
106
|
content: "# Title\n\n## Synopsis\n\nOld synopsis.\n\n## Install\n\nInstall text.\n",
|
|
95
|
-
source_label:
|
|
96
|
-
target_selector:
|
|
97
|
-
target_selector_family:
|
|
107
|
+
source_label: 'README.md',
|
|
108
|
+
target_selector: 'Synopsis@2',
|
|
109
|
+
target_selector_family: 'section_branch',
|
|
98
110
|
target_selection: Ast::Merge.structured_edit_target_selection(
|
|
99
|
-
selector_kind:
|
|
100
|
-
selection_intent:
|
|
101
|
-
selection_intent_family:
|
|
111
|
+
selector_kind: 'heading_section',
|
|
112
|
+
selection_intent: 'section_branch',
|
|
113
|
+
selection_intent_family: 'section_branch',
|
|
102
114
|
known_selection_intent: true,
|
|
103
115
|
comment_region: nil,
|
|
104
116
|
include_trailing_gap: false,
|
|
105
117
|
comment_anchored: false,
|
|
106
|
-
metadata: { family:
|
|
118
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
107
119
|
),
|
|
108
120
|
target_match: Ast::Merge.structured_edit_target_match(
|
|
109
|
-
start_boundary:
|
|
110
|
-
start_boundary_family:
|
|
121
|
+
start_boundary: 'owner_start',
|
|
122
|
+
start_boundary_family: 'structural_owner',
|
|
111
123
|
known_start_boundary: true,
|
|
112
|
-
end_boundary:
|
|
113
|
-
end_boundary_family:
|
|
124
|
+
end_boundary: 'owner_end',
|
|
125
|
+
end_boundary_family: 'structural_owner',
|
|
114
126
|
known_end_boundary: true,
|
|
115
|
-
payload_kind:
|
|
116
|
-
payload_family:
|
|
127
|
+
payload_kind: 'section_branch',
|
|
128
|
+
payload_family: 'section_branch',
|
|
117
129
|
known_payload_kind: true,
|
|
118
130
|
comment_anchored: false,
|
|
119
131
|
trailing_gap_extended: false,
|
|
120
|
-
metadata: { family:
|
|
132
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
121
133
|
),
|
|
122
134
|
payload_text: "## Synopsis\n\nNew synopsis.\n",
|
|
123
|
-
metadata: { family:
|
|
135
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
124
136
|
)
|
|
125
137
|
}
|
|
126
138
|
end
|
|
@@ -130,23 +142,23 @@ module Markly
|
|
|
130
142
|
package: PACKAGE_NAME,
|
|
131
143
|
backend: BACKEND_REFERENCE.id,
|
|
132
144
|
structured_edit_result: Ast::Merge.structured_edit_result(
|
|
133
|
-
operation_kind:
|
|
145
|
+
operation_kind: 'replace',
|
|
134
146
|
updated_content: "# Title\n\n## Synopsis\n\nNew synopsis.\n\n## Install\n\nInstall text.\n",
|
|
135
147
|
changed: true,
|
|
136
148
|
captured_text: "## Synopsis\n\nOld synopsis.\n",
|
|
137
149
|
match_count: 1,
|
|
138
150
|
operation_profile: Ast::Merge.structured_edit_operation_profile(
|
|
139
|
-
operation_kind:
|
|
140
|
-
operation_family:
|
|
151
|
+
operation_kind: 'replace',
|
|
152
|
+
operation_family: 'rewrite',
|
|
141
153
|
known_operation_kind: true,
|
|
142
|
-
source_requirement:
|
|
143
|
-
destination_requirement:
|
|
144
|
-
replacement_source:
|
|
154
|
+
source_requirement: 'required',
|
|
155
|
+
destination_requirement: 'none',
|
|
156
|
+
replacement_source: 'explicit_text',
|
|
145
157
|
captures_source_text: true,
|
|
146
158
|
supports_if_missing: false,
|
|
147
|
-
metadata: { source:
|
|
159
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
148
160
|
),
|
|
149
|
-
metadata: { family:
|
|
161
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
150
162
|
)
|
|
151
163
|
}
|
|
152
164
|
end
|
|
@@ -158,7 +170,7 @@ module Markly
|
|
|
158
170
|
structured_edit_application: Ast::Merge.structured_edit_application(
|
|
159
171
|
request: markdown_structured_edit_request_projection[:structured_edit_request],
|
|
160
172
|
result: markdown_structured_edit_result_projection[:structured_edit_result],
|
|
161
|
-
metadata: { family:
|
|
173
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
162
174
|
)
|
|
163
175
|
}
|
|
164
176
|
end
|
|
@@ -169,10 +181,10 @@ module Markly
|
|
|
169
181
|
backend: BACKEND_REFERENCE.id,
|
|
170
182
|
structured_edit_execution_report: Ast::Merge.structured_edit_execution_report(
|
|
171
183
|
application: markdown_structured_edit_application_projection[:structured_edit_application],
|
|
172
|
-
provider_family:
|
|
184
|
+
provider_family: 'markdown',
|
|
173
185
|
provider_backend: BACKEND_REFERENCE.id,
|
|
174
186
|
diagnostics: [],
|
|
175
|
-
metadata: { source:
|
|
187
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
176
188
|
)
|
|
177
189
|
}
|
|
178
190
|
end
|
|
@@ -185,34 +197,34 @@ module Markly
|
|
|
185
197
|
structured_edit_batch_request: Ast::Merge.structured_edit_batch_request(
|
|
186
198
|
requests: [
|
|
187
199
|
Ast::Merge.structured_edit_request(
|
|
188
|
-
operation_kind:
|
|
200
|
+
operation_kind: 'replace',
|
|
189
201
|
content: content,
|
|
190
|
-
source_label:
|
|
191
|
-
target_selector:
|
|
192
|
-
target_selector_family:
|
|
202
|
+
source_label: 'README.md',
|
|
203
|
+
target_selector: 'Synopsis@2',
|
|
204
|
+
target_selector_family: 'section_branch',
|
|
193
205
|
payload_text: "## Synopsis\n\nNew synopsis.\n",
|
|
194
|
-
metadata: { family:
|
|
206
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
195
207
|
),
|
|
196
208
|
Ast::Merge.structured_edit_request(
|
|
197
|
-
operation_kind:
|
|
209
|
+
operation_kind: 'insert',
|
|
198
210
|
content: content,
|
|
199
|
-
source_label:
|
|
200
|
-
destination_selector:
|
|
201
|
-
destination_selector_family:
|
|
211
|
+
source_label: 'source',
|
|
212
|
+
destination_selector: '/heading/usage',
|
|
213
|
+
destination_selector_family: 'section_branch',
|
|
202
214
|
payload_text: "### Managed Usage\n\nInserted usage text.\n",
|
|
203
|
-
if_missing:
|
|
204
|
-
metadata: { family:
|
|
215
|
+
if_missing: 'append',
|
|
216
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
205
217
|
),
|
|
206
218
|
Ast::Merge.structured_edit_request(
|
|
207
|
-
operation_kind:
|
|
219
|
+
operation_kind: 'delete',
|
|
208
220
|
content: content,
|
|
209
|
-
source_label:
|
|
210
|
-
target_selector:
|
|
211
|
-
target_selector_family:
|
|
212
|
-
metadata: { family:
|
|
221
|
+
source_label: 'README.md',
|
|
222
|
+
target_selector: 'Deprecated@2',
|
|
223
|
+
target_selector_family: 'section_branch',
|
|
224
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
213
225
|
)
|
|
214
226
|
],
|
|
215
|
-
metadata: { batch_label:
|
|
227
|
+
metadata: { batch_label: 'markdown_markly_triad', source: 'legacy_crispr_reference' }
|
|
216
228
|
)
|
|
217
229
|
}
|
|
218
230
|
end
|
|
@@ -227,152 +239,154 @@ module Markly
|
|
|
227
239
|
Ast::Merge.structured_edit_execution_report(
|
|
228
240
|
application: Ast::Merge.structured_edit_application(
|
|
229
241
|
request: Ast::Merge.structured_edit_request(
|
|
230
|
-
operation_kind:
|
|
242
|
+
operation_kind: 'replace',
|
|
231
243
|
content: content,
|
|
232
|
-
source_label:
|
|
233
|
-
target_selector:
|
|
234
|
-
target_selector_family:
|
|
244
|
+
source_label: 'README.md',
|
|
245
|
+
target_selector: 'Synopsis@2',
|
|
246
|
+
target_selector_family: 'section_branch',
|
|
235
247
|
payload_text: "## Synopsis\n\nNew synopsis.\n",
|
|
236
|
-
metadata: { family:
|
|
248
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
237
249
|
),
|
|
238
250
|
result: Ast::Merge.structured_edit_result(
|
|
239
|
-
operation_kind:
|
|
251
|
+
operation_kind: 'replace',
|
|
240
252
|
updated_content: "# Title\n\n## Synopsis\n\nNew synopsis.\n\n## Usage\n\nExisting text.\n\n## Deprecated\n\nDeprecated text.\n",
|
|
241
253
|
changed: true,
|
|
242
254
|
captured_text: "## Synopsis\n\nOld synopsis.\n",
|
|
243
255
|
match_count: 1,
|
|
244
256
|
operation_profile: Ast::Merge.structured_edit_operation_profile(
|
|
245
|
-
operation_kind:
|
|
246
|
-
operation_family:
|
|
257
|
+
operation_kind: 'replace',
|
|
258
|
+
operation_family: 'rewrite',
|
|
247
259
|
known_operation_kind: true,
|
|
248
|
-
source_requirement:
|
|
249
|
-
destination_requirement:
|
|
250
|
-
replacement_source:
|
|
260
|
+
source_requirement: 'required',
|
|
261
|
+
destination_requirement: 'none',
|
|
262
|
+
replacement_source: 'explicit_text',
|
|
251
263
|
captures_source_text: true,
|
|
252
264
|
supports_if_missing: false,
|
|
253
|
-
metadata: { source:
|
|
265
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
254
266
|
),
|
|
255
|
-
metadata: { family:
|
|
267
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
256
268
|
),
|
|
257
|
-
metadata: { family:
|
|
269
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
258
270
|
),
|
|
259
|
-
provider_family:
|
|
271
|
+
provider_family: 'markdown',
|
|
260
272
|
provider_backend: BACKEND_REFERENCE.id,
|
|
261
273
|
diagnostics: [],
|
|
262
|
-
metadata: { source:
|
|
274
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
263
275
|
),
|
|
264
276
|
Ast::Merge.structured_edit_execution_report(
|
|
265
277
|
application: Ast::Merge.structured_edit_application(
|
|
266
278
|
request: Ast::Merge.structured_edit_request(
|
|
267
|
-
operation_kind:
|
|
279
|
+
operation_kind: 'insert',
|
|
268
280
|
content: content,
|
|
269
|
-
source_label:
|
|
270
|
-
destination_selector:
|
|
271
|
-
destination_selector_family:
|
|
281
|
+
source_label: 'source',
|
|
282
|
+
destination_selector: '/heading/usage',
|
|
283
|
+
destination_selector_family: 'section_branch',
|
|
272
284
|
payload_text: "### Managed Usage\n\nInserted usage text.\n",
|
|
273
|
-
if_missing:
|
|
274
|
-
metadata: { family:
|
|
285
|
+
if_missing: 'append',
|
|
286
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
275
287
|
),
|
|
276
288
|
result: Ast::Merge.structured_edit_result(
|
|
277
|
-
operation_kind:
|
|
289
|
+
operation_kind: 'insert',
|
|
278
290
|
updated_content: "# Title\n\n## Synopsis\n\nOld synopsis.\n\n## Usage\n\nExisting text.\n### Managed Usage\n\nInserted usage text.\n\n## Deprecated\n\nDeprecated text.\n",
|
|
279
291
|
changed: true,
|
|
280
292
|
operation_profile: Ast::Merge.structured_edit_operation_profile(
|
|
281
|
-
operation_kind:
|
|
282
|
-
operation_family:
|
|
293
|
+
operation_kind: 'insert',
|
|
294
|
+
operation_family: 'insertion',
|
|
283
295
|
known_operation_kind: true,
|
|
284
|
-
source_requirement:
|
|
285
|
-
destination_requirement:
|
|
286
|
-
replacement_source:
|
|
296
|
+
source_requirement: 'none',
|
|
297
|
+
destination_requirement: 'optional',
|
|
298
|
+
replacement_source: 'explicit_text',
|
|
287
299
|
captures_source_text: false,
|
|
288
300
|
supports_if_missing: true,
|
|
289
|
-
metadata: { source:
|
|
301
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
290
302
|
),
|
|
291
303
|
destination_profile: Ast::Merge.structured_edit_destination_profile(
|
|
292
|
-
resolution_kind:
|
|
293
|
-
resolution_source:
|
|
294
|
-
anchor_boundary:
|
|
295
|
-
resolution_family:
|
|
296
|
-
resolution_source_family:
|
|
297
|
-
anchor_boundary_family:
|
|
304
|
+
resolution_kind: 'append_fallback',
|
|
305
|
+
resolution_source: 'none',
|
|
306
|
+
anchor_boundary: 'none',
|
|
307
|
+
resolution_family: 'append',
|
|
308
|
+
resolution_source_family: 'implicit',
|
|
309
|
+
anchor_boundary_family: 'none',
|
|
298
310
|
known_resolution_kind: true,
|
|
299
311
|
known_resolution_source: true,
|
|
300
312
|
known_anchor_boundary: true,
|
|
301
313
|
used_if_missing: true,
|
|
302
|
-
metadata: { family:
|
|
314
|
+
metadata: { family: 'shared', source: 'legacy_crispr_reference' }
|
|
303
315
|
),
|
|
304
|
-
metadata: { family:
|
|
316
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
305
317
|
),
|
|
306
|
-
metadata: { family:
|
|
318
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
307
319
|
),
|
|
308
|
-
provider_family:
|
|
320
|
+
provider_family: 'markdown',
|
|
309
321
|
provider_backend: BACKEND_REFERENCE.id,
|
|
310
322
|
diagnostics: [],
|
|
311
|
-
metadata: { source:
|
|
323
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
312
324
|
),
|
|
313
325
|
Ast::Merge.structured_edit_execution_report(
|
|
314
326
|
application: Ast::Merge.structured_edit_application(
|
|
315
327
|
request: Ast::Merge.structured_edit_request(
|
|
316
|
-
operation_kind:
|
|
328
|
+
operation_kind: 'delete',
|
|
317
329
|
content: content,
|
|
318
|
-
source_label:
|
|
319
|
-
target_selector:
|
|
320
|
-
target_selector_family:
|
|
321
|
-
metadata: { family:
|
|
330
|
+
source_label: 'README.md',
|
|
331
|
+
target_selector: 'Deprecated@2',
|
|
332
|
+
target_selector_family: 'section_branch',
|
|
333
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
322
334
|
),
|
|
323
335
|
result: Ast::Merge.structured_edit_result(
|
|
324
|
-
operation_kind:
|
|
336
|
+
operation_kind: 'delete',
|
|
325
337
|
updated_content: "# Title\n\n## Synopsis\n\nOld synopsis.\n\n## Usage\n\nExisting text.\n",
|
|
326
338
|
changed: true,
|
|
327
339
|
captured_text: "## Deprecated\n\nDeprecated text.\n",
|
|
328
340
|
match_count: 1,
|
|
329
341
|
operation_profile: Ast::Merge.structured_edit_operation_profile(
|
|
330
|
-
operation_kind:
|
|
331
|
-
operation_family:
|
|
342
|
+
operation_kind: 'delete',
|
|
343
|
+
operation_family: 'removal',
|
|
332
344
|
known_operation_kind: true,
|
|
333
|
-
source_requirement:
|
|
334
|
-
destination_requirement:
|
|
335
|
-
replacement_source:
|
|
345
|
+
source_requirement: 'required',
|
|
346
|
+
destination_requirement: 'none',
|
|
347
|
+
replacement_source: 'none',
|
|
336
348
|
captures_source_text: true,
|
|
337
349
|
supports_if_missing: false,
|
|
338
|
-
metadata: { source:
|
|
350
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
339
351
|
),
|
|
340
|
-
metadata: { family:
|
|
352
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
341
353
|
),
|
|
342
|
-
metadata: { family:
|
|
354
|
+
metadata: { family: 'markdown', provider: BACKEND_REFERENCE.id, source: 'legacy_crispr_reference' }
|
|
343
355
|
),
|
|
344
|
-
provider_family:
|
|
356
|
+
provider_family: 'markdown',
|
|
345
357
|
provider_backend: BACKEND_REFERENCE.id,
|
|
346
358
|
diagnostics: [],
|
|
347
|
-
metadata: { source:
|
|
359
|
+
metadata: { source: 'legacy_crispr_reference' }
|
|
348
360
|
)
|
|
349
361
|
],
|
|
350
362
|
diagnostics: [
|
|
351
363
|
{
|
|
352
|
-
severity:
|
|
353
|
-
category:
|
|
354
|
-
message:
|
|
364
|
+
severity: 'info',
|
|
365
|
+
category: 'assumed_default',
|
|
366
|
+
message: 'markdown batch preserved request ordering.'
|
|
355
367
|
}
|
|
356
368
|
],
|
|
357
|
-
metadata: { batch_label:
|
|
369
|
+
metadata: { batch_label: 'markdown_markly_triad', source: 'legacy_crispr_reference' }
|
|
358
370
|
)
|
|
359
371
|
}
|
|
360
372
|
end
|
|
361
373
|
|
|
362
374
|
def parse_markdown(source, dialect, backend: nil)
|
|
363
375
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
364
|
-
|
|
376
|
+
unless requested == BACKEND_REFERENCE.id
|
|
377
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
378
|
+
end
|
|
365
379
|
|
|
366
|
-
|
|
380
|
+
TreeHaver.with_backend(BACKEND_REFERENCE.id) { TreeHaver.parser_for(:markdown).parse(source) }
|
|
367
381
|
normalized = Markdown::Merge.normalize_source(source)
|
|
368
382
|
{
|
|
369
383
|
ok: true,
|
|
370
384
|
diagnostics: [],
|
|
371
385
|
analysis: {
|
|
372
|
-
kind:
|
|
386
|
+
kind: 'markdown',
|
|
373
387
|
dialect: dialect,
|
|
374
388
|
normalized_source: normalized,
|
|
375
|
-
root_kind:
|
|
389
|
+
root_kind: 'document',
|
|
376
390
|
owners: Markdown::Merge.collect_markdown_owners(normalized)
|
|
377
391
|
},
|
|
378
392
|
policies: []
|
|
@@ -380,7 +394,7 @@ module Markly
|
|
|
380
394
|
rescue StandardError => e
|
|
381
395
|
{
|
|
382
396
|
ok: false,
|
|
383
|
-
diagnostics: [{ severity:
|
|
397
|
+
diagnostics: [{ severity: 'error', category: 'parse_error', message: e.message }],
|
|
384
398
|
policies: []
|
|
385
399
|
}
|
|
386
400
|
end
|
|
@@ -391,14 +405,19 @@ module Markly
|
|
|
391
405
|
|
|
392
406
|
def merge_markdown(template_source, destination_source, dialect, backend: nil)
|
|
393
407
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
394
|
-
|
|
408
|
+
unless requested == BACKEND_REFERENCE.id
|
|
409
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
410
|
+
end
|
|
395
411
|
|
|
396
412
|
Markdown::Merge.merge_markdown(template_source, destination_source, dialect)
|
|
397
413
|
end
|
|
398
414
|
|
|
399
|
-
def merge_markdown_with_reviewed_nested_outputs(template_source, destination_source, dialect, review_state,
|
|
415
|
+
def merge_markdown_with_reviewed_nested_outputs(template_source, destination_source, dialect, review_state,
|
|
416
|
+
applied_children, backend: nil)
|
|
400
417
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
401
|
-
|
|
418
|
+
unless requested == BACKEND_REFERENCE.id
|
|
419
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
420
|
+
end
|
|
402
421
|
|
|
403
422
|
Markdown::Merge.merge_markdown_with_reviewed_nested_outputs(
|
|
404
423
|
template_source,
|
|
@@ -409,9 +428,12 @@ module Markly
|
|
|
409
428
|
)
|
|
410
429
|
end
|
|
411
430
|
|
|
412
|
-
def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle(template_source, destination_source, dialect,
|
|
431
|
+
def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle(template_source, destination_source, dialect,
|
|
432
|
+
replay_bundle, backend: nil)
|
|
413
433
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
414
|
-
|
|
434
|
+
unless requested == BACKEND_REFERENCE.id
|
|
435
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
436
|
+
end
|
|
415
437
|
|
|
416
438
|
Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_replay_bundle(
|
|
417
439
|
template_source,
|
|
@@ -421,9 +443,12 @@ module Markly
|
|
|
421
443
|
)
|
|
422
444
|
end
|
|
423
445
|
|
|
424
|
-
def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle_envelope(template_source, destination_source,
|
|
446
|
+
def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle_envelope(template_source, destination_source,
|
|
447
|
+
dialect, envelope, backend: nil)
|
|
425
448
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
426
|
-
|
|
449
|
+
unless requested == BACKEND_REFERENCE.id
|
|
450
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
451
|
+
end
|
|
427
452
|
|
|
428
453
|
Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_replay_bundle_envelope(
|
|
429
454
|
template_source,
|
|
@@ -433,9 +458,12 @@ module Markly
|
|
|
433
458
|
)
|
|
434
459
|
end
|
|
435
460
|
|
|
436
|
-
def merge_markdown_with_reviewed_nested_outputs_from_review_state(template_source, destination_source, dialect,
|
|
461
|
+
def merge_markdown_with_reviewed_nested_outputs_from_review_state(template_source, destination_source, dialect,
|
|
462
|
+
review_state, backend: nil)
|
|
437
463
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
438
|
-
|
|
464
|
+
unless requested == BACKEND_REFERENCE.id
|
|
465
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
466
|
+
end
|
|
439
467
|
|
|
440
468
|
Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_review_state(
|
|
441
469
|
template_source,
|
|
@@ -445,9 +473,12 @@ module Markly
|
|
|
445
473
|
)
|
|
446
474
|
end
|
|
447
475
|
|
|
448
|
-
def merge_markdown_with_reviewed_nested_outputs_from_review_state_envelope(template_source, destination_source,
|
|
476
|
+
def merge_markdown_with_reviewed_nested_outputs_from_review_state_envelope(template_source, destination_source,
|
|
477
|
+
dialect, envelope, backend: nil)
|
|
449
478
|
requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
|
|
450
|
-
|
|
479
|
+
unless requested == BACKEND_REFERENCE.id
|
|
480
|
+
return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
|
|
481
|
+
end
|
|
451
482
|
|
|
452
483
|
Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_review_state_envelope(
|
|
453
484
|
template_source,
|
|
@@ -464,7 +495,7 @@ module Markly
|
|
|
464
495
|
def unsupported_feature_result(message)
|
|
465
496
|
{
|
|
466
497
|
ok: false,
|
|
467
|
-
diagnostics: [{ severity:
|
|
498
|
+
diagnostics: [{ severity: 'error', category: 'unsupported_feature', message: message }],
|
|
468
499
|
policies: []
|
|
469
500
|
}
|
|
470
501
|
end
|
|
@@ -494,3 +525,8 @@ module Markly
|
|
|
494
525
|
)
|
|
495
526
|
end
|
|
496
527
|
end
|
|
528
|
+
|
|
529
|
+
require_relative 'merge/provider'
|
|
530
|
+
Markly::Merge.register_provider!
|
|
531
|
+
|
|
532
|
+
Markly::Merge.ensure_backend_loaded!
|
data/lib/markly-merge.rb
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Markly
|
|
2
|
+
module Merge
|
|
3
|
+
module Version
|
|
4
|
+
VERSION: String
|
|
5
|
+
end
|
|
6
|
+
VERSION: String
|
|
7
|
+
|
|
8
|
+
class Provider < Markdown::Merge::SourcePreservingProvider
|
|
9
|
+
def initialize: () -> void
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.merge_provider: () -> Provider
|
|
13
|
+
def self.register_provider!: (?replace: bool) -> untyped
|
|
14
|
+
end
|
|
15
|
+
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|