commonmarker-merge 1.0.0
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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +87 -0
- data/CITATION.cff +20 -0
- data/CODE_OF_CONDUCT.md +134 -0
- data/CONTRIBUTING.md +227 -0
- data/FUNDING.md +74 -0
- data/LICENSE.txt +21 -0
- data/README.md +930 -0
- data/REEK +0 -0
- data/RUBOCOP.md +71 -0
- data/SECURITY.md +21 -0
- data/lib/commonmarker/merge/backend.rb +336 -0
- data/lib/commonmarker/merge/debug_logger.rb +26 -0
- data/lib/commonmarker/merge/file_analysis.rb +51 -0
- data/lib/commonmarker/merge/freeze_node.rb +32 -0
- data/lib/commonmarker/merge/smart_merger.rb +139 -0
- data/lib/commonmarker/merge/version.rb +12 -0
- data/lib/commonmarker/merge.rb +108 -0
- data/lib/commonmarker-merge.rb +4 -0
- data/sig/commonmarker/merge/conflict_resolver.rbs +48 -0
- data/sig/commonmarker/merge/debug_logger.rbs +36 -0
- data/sig/commonmarker/merge/file_aligner.rbs +27 -0
- data/sig/commonmarker/merge/file_analysis.rbs +95 -0
- data/sig/commonmarker/merge/freeze_node.rbs +65 -0
- data/sig/commonmarker/merge/merge_result.rbs +59 -0
- data/sig/commonmarker/merge/smart_merger.rbs +53 -0
- data/sig/commonmarker/merge.rbs +223 -0
- data.tar.gz.sig +0 -0
- metadata +331 -0
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# Type signatures for Commonmarker::Merge
|
|
2
|
+
#
|
|
3
|
+
# Smart merging for Markdown files using CommonMarker AST.
|
|
4
|
+
# Provides intelligent merging by parsing Markdown, matching structural elements,
|
|
5
|
+
# and preserving frozen sections.
|
|
6
|
+
|
|
7
|
+
module Commonmarker
|
|
8
|
+
module Merge
|
|
9
|
+
# Current version string
|
|
10
|
+
VERSION: String
|
|
11
|
+
|
|
12
|
+
# Base error class for all merge errors
|
|
13
|
+
class Error < StandardError
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Error raised when template file fails to parse
|
|
17
|
+
class TemplateParseError < Error
|
|
18
|
+
attr_reader errors: Array[untyped]
|
|
19
|
+
attr_reader content: String?
|
|
20
|
+
|
|
21
|
+
def initialize: (?String? message, ?errors: Array[untyped], ?content: String?) -> void
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Error raised when destination file fails to parse
|
|
25
|
+
class DestinationParseError < Error
|
|
26
|
+
attr_reader errors: Array[untyped]
|
|
27
|
+
attr_reader content: String?
|
|
28
|
+
|
|
29
|
+
def initialize: (?String? message, ?errors: Array[untyped], ?content: String?) -> void
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Debug logging utility for Commonmarker::Merge
|
|
33
|
+
module DebugLogger
|
|
34
|
+
extend Ast::Merge::DebugLogger
|
|
35
|
+
|
|
36
|
+
def self.env_var_name: () -> String
|
|
37
|
+
def self.env_var_name=: (String name) -> String
|
|
38
|
+
def self.log_prefix: () -> String
|
|
39
|
+
def self.log_prefix=: (String prefix) -> String
|
|
40
|
+
def self.enabled?: () -> bool
|
|
41
|
+
def self.debug: (String message, ?Hash[Symbol, untyped] context) -> void
|
|
42
|
+
def self.info: (String message) -> void
|
|
43
|
+
def self.warning: (String message) -> void
|
|
44
|
+
def self.time: [T] (String operation) { () -> T } -> T
|
|
45
|
+
def self.extract_node_info: (untyped node) -> Hash[Symbol, untyped]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Freeze block node for Markdown files (HTML comment markers)
|
|
49
|
+
class FreezeNode < Ast::Merge::FreezeNode
|
|
50
|
+
InvalidStructureError: singleton(Ast::Merge::FreezeNode::InvalidStructureError)
|
|
51
|
+
Location: singleton(Ast::Merge::FreezeNode::Location)
|
|
52
|
+
|
|
53
|
+
attr_reader content: String
|
|
54
|
+
attr_reader nodes: Array[untyped]
|
|
55
|
+
attr_reader start_marker: String
|
|
56
|
+
attr_reader end_marker: String
|
|
57
|
+
|
|
58
|
+
def self.pattern_for: (Symbol pattern_type, ?String token) -> Regexp
|
|
59
|
+
|
|
60
|
+
def initialize: (
|
|
61
|
+
start_line: Integer,
|
|
62
|
+
end_line: Integer,
|
|
63
|
+
content: String,
|
|
64
|
+
start_marker: String,
|
|
65
|
+
end_marker: String,
|
|
66
|
+
?nodes: Array[untyped],
|
|
67
|
+
?pattern_type: Symbol,
|
|
68
|
+
?reason: String?
|
|
69
|
+
) -> void
|
|
70
|
+
|
|
71
|
+
def signature: () -> Array[Symbol | String]
|
|
72
|
+
def heading?: () -> bool
|
|
73
|
+
def paragraph?: () -> bool
|
|
74
|
+
def code_block?: () -> bool
|
|
75
|
+
def list?: () -> bool
|
|
76
|
+
def slice: () -> String
|
|
77
|
+
def inspect: () -> String
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Wrapper for CommonMarker AST nodes
|
|
81
|
+
class NodeWrapper
|
|
82
|
+
attr_reader node: untyped
|
|
83
|
+
attr_reader start_line: Integer
|
|
84
|
+
attr_reader end_line: Integer
|
|
85
|
+
attr_reader analysis: FileAnalysis?
|
|
86
|
+
|
|
87
|
+
def initialize: (
|
|
88
|
+
untyped node,
|
|
89
|
+
?analysis: FileAnalysis?
|
|
90
|
+
) -> void
|
|
91
|
+
|
|
92
|
+
def location: () -> Ast::Merge::FreezeNode::Location
|
|
93
|
+
def signature: () -> Array[untyped]
|
|
94
|
+
def freeze_node?: () -> bool
|
|
95
|
+
def heading?: () -> bool
|
|
96
|
+
def paragraph?: () -> bool
|
|
97
|
+
def code_block?: () -> bool
|
|
98
|
+
def list?: () -> bool
|
|
99
|
+
def html_block?: () -> bool
|
|
100
|
+
def type: () -> Symbol
|
|
101
|
+
def level: () -> Integer?
|
|
102
|
+
def text_content: () -> String
|
|
103
|
+
def slice: () -> String?
|
|
104
|
+
def inspect: () -> String
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# File analysis for Markdown files
|
|
108
|
+
class FileAnalysis
|
|
109
|
+
include Ast::Merge::FileAnalysisBase
|
|
110
|
+
|
|
111
|
+
DEFAULT_FREEZE_TOKEN: String
|
|
112
|
+
|
|
113
|
+
attr_reader source: String
|
|
114
|
+
attr_reader lines: Array[String]
|
|
115
|
+
attr_reader document: untyped
|
|
116
|
+
attr_reader statements: Array[NodeWrapper | FreezeNode]
|
|
117
|
+
attr_reader freeze_blocks: Array[FreezeNode]
|
|
118
|
+
attr_reader freeze_token: String
|
|
119
|
+
attr_reader signature_generator: (^(untyped) -> Array[untyped]?)?
|
|
120
|
+
attr_reader errors: Array[untyped]
|
|
121
|
+
|
|
122
|
+
def initialize: (
|
|
123
|
+
String source,
|
|
124
|
+
?freeze_token: String,
|
|
125
|
+
?signature_generator: (^(untyped) -> Array[untyped]?)?
|
|
126
|
+
) -> void
|
|
127
|
+
|
|
128
|
+
def valid?: () -> bool
|
|
129
|
+
def nodes: () -> Array[NodeWrapper | FreezeNode]
|
|
130
|
+
def line_at: (Integer line_num) -> String?
|
|
131
|
+
def normalized_line: (Integer line_num) -> String?
|
|
132
|
+
def in_freeze_block?: (Integer line_num) -> bool
|
|
133
|
+
def freeze_block_at: (Integer line_num) -> FreezeNode?
|
|
134
|
+
def signature_at: (Integer index) -> Array[untyped]?
|
|
135
|
+
def generate_signature: (untyped node) -> Array[untyped]?
|
|
136
|
+
def compute_node_signature: (untyped node) -> Array[untyped]?
|
|
137
|
+
|
|
138
|
+
private
|
|
139
|
+
|
|
140
|
+
def parse_markdown: () -> void
|
|
141
|
+
def extract_nodes: () -> Array[NodeWrapper]
|
|
142
|
+
def extract_freeze_blocks: () -> Array[FreezeNode]
|
|
143
|
+
def integrate_nodes_and_freeze_blocks: () -> Array[NodeWrapper | FreezeNode]
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Result of a Markdown merge operation
|
|
147
|
+
class MergeResult < Ast::Merge::MergeResult
|
|
148
|
+
DECISION_KEPT_TEMPLATE: Symbol
|
|
149
|
+
DECISION_KEPT_DEST: Symbol
|
|
150
|
+
DECISION_MERGED: Symbol
|
|
151
|
+
DECISION_ADDED: Symbol
|
|
152
|
+
DECISION_FREEZE_BLOCK: Symbol
|
|
153
|
+
|
|
154
|
+
attr_reader markdown_content: String
|
|
155
|
+
attr_reader decisions: Array[Hash[Symbol, untyped]]
|
|
156
|
+
attr_reader statistics: Hash[Symbol, Integer]
|
|
157
|
+
|
|
158
|
+
def initialize: (
|
|
159
|
+
?template_analysis: FileAnalysis?,
|
|
160
|
+
?dest_analysis: FileAnalysis?,
|
|
161
|
+
?conflicts: Array[Hash[Symbol, untyped]],
|
|
162
|
+
?frozen_blocks: Array[FreezeNode],
|
|
163
|
+
?stats: Hash[Symbol, untyped]
|
|
164
|
+
) -> void
|
|
165
|
+
|
|
166
|
+
def add_content: (String content, decision: Symbol, source: Symbol) -> void
|
|
167
|
+
def add_node: (NodeWrapper node, decision: Symbol, source: Symbol) -> void
|
|
168
|
+
def add_freeze_block: (FreezeNode freeze_node) -> void
|
|
169
|
+
def to_markdown: () -> String
|
|
170
|
+
def content: () -> String
|
|
171
|
+
def content_string: () -> String
|
|
172
|
+
def empty?: () -> bool
|
|
173
|
+
|
|
174
|
+
private
|
|
175
|
+
|
|
176
|
+
def track_statistics: (Symbol decision, Symbol source) -> void
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# Smart merger for Markdown files
|
|
180
|
+
class SmartMerger
|
|
181
|
+
include Ast::Merge::MergerConfig
|
|
182
|
+
|
|
183
|
+
attr_reader template_analysis: FileAnalysis
|
|
184
|
+
attr_reader dest_analysis: FileAnalysis
|
|
185
|
+
attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
|
|
186
|
+
attr_reader add_template_only_nodes: bool
|
|
187
|
+
|
|
188
|
+
def initialize: (
|
|
189
|
+
String template_content,
|
|
190
|
+
String dest_content,
|
|
191
|
+
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
192
|
+
?add_template_only_nodes: bool,
|
|
193
|
+
?freeze_token: String,
|
|
194
|
+
?signature_generator: (^(untyped) -> Array[untyped]?)?,
|
|
195
|
+
?node_splitter: Hash[Symbol, untyped]?
|
|
196
|
+
) -> void
|
|
197
|
+
|
|
198
|
+
def merge: () -> MergeResult
|
|
199
|
+
|
|
200
|
+
private
|
|
201
|
+
|
|
202
|
+
def perform_merge: () -> MergeResult
|
|
203
|
+
def merge_nodes: (MergeResult result) -> void
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# Conflict resolver for Markdown merges
|
|
207
|
+
class ConflictResolver
|
|
208
|
+
attr_reader template_analysis: FileAnalysis
|
|
209
|
+
attr_reader dest_analysis: FileAnalysis
|
|
210
|
+
attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
|
|
211
|
+
attr_reader add_template_only_nodes: bool
|
|
212
|
+
|
|
213
|
+
def initialize: (
|
|
214
|
+
FileAnalysis template_analysis,
|
|
215
|
+
FileAnalysis dest_analysis,
|
|
216
|
+
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
217
|
+
?add_template_only_nodes: bool
|
|
218
|
+
) -> void
|
|
219
|
+
|
|
220
|
+
def resolve: (untyped boundary, MergeResult result) -> void
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
data.tar.gz.sig
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: commonmarker-merge
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Peter H. Boling
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain:
|
|
10
|
+
- |
|
|
11
|
+
-----BEGIN CERTIFICATE-----
|
|
12
|
+
MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
|
|
13
|
+
ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
|
14
|
+
A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
|
|
15
|
+
DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
|
16
|
+
LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
|
|
17
|
+
uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
|
|
18
|
+
LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
|
|
19
|
+
mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
|
|
20
|
+
coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
|
|
21
|
+
FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
|
|
22
|
+
yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
|
|
23
|
+
to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
|
|
24
|
+
qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
|
|
25
|
+
fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
|
|
26
|
+
HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
|
|
27
|
+
A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
|
|
28
|
+
ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
|
|
29
|
+
wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
|
|
30
|
+
L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
|
|
31
|
+
GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
|
|
32
|
+
kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
|
|
33
|
+
QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
|
|
34
|
+
0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
|
|
35
|
+
DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
|
|
36
|
+
L9nRqA==
|
|
37
|
+
-----END CERTIFICATE-----
|
|
38
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
39
|
+
dependencies:
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: commonmarker
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '2.0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '2.0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: markdown-merge
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '1.0'
|
|
61
|
+
- - ">="
|
|
62
|
+
- !ruby/object:Gem::Version
|
|
63
|
+
version: 1.0.2
|
|
64
|
+
type: :runtime
|
|
65
|
+
prerelease: false
|
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - "~>"
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '1.0'
|
|
71
|
+
- - ">="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: 1.0.2
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: version_gem
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '1.1'
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 1.1.9
|
|
84
|
+
type: :runtime
|
|
85
|
+
prerelease: false
|
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - "~>"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '1.1'
|
|
91
|
+
- - ">="
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: 1.1.9
|
|
94
|
+
- !ruby/object:Gem::Dependency
|
|
95
|
+
name: kettle-dev
|
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - "~>"
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '1.1'
|
|
101
|
+
type: :development
|
|
102
|
+
prerelease: false
|
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
104
|
+
requirements:
|
|
105
|
+
- - "~>"
|
|
106
|
+
- !ruby/object:Gem::Version
|
|
107
|
+
version: '1.1'
|
|
108
|
+
- !ruby/object:Gem::Dependency
|
|
109
|
+
name: bundler-audit
|
|
110
|
+
requirement: !ruby/object:Gem::Requirement
|
|
111
|
+
requirements:
|
|
112
|
+
- - "~>"
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: 0.9.2
|
|
115
|
+
type: :development
|
|
116
|
+
prerelease: false
|
|
117
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
118
|
+
requirements:
|
|
119
|
+
- - "~>"
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: 0.9.2
|
|
122
|
+
- !ruby/object:Gem::Dependency
|
|
123
|
+
name: rake
|
|
124
|
+
requirement: !ruby/object:Gem::Requirement
|
|
125
|
+
requirements:
|
|
126
|
+
- - "~>"
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '13.0'
|
|
129
|
+
type: :development
|
|
130
|
+
prerelease: false
|
|
131
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
132
|
+
requirements:
|
|
133
|
+
- - "~>"
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '13.0'
|
|
136
|
+
- !ruby/object:Gem::Dependency
|
|
137
|
+
name: require_bench
|
|
138
|
+
requirement: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - "~>"
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: '1.0'
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: 1.0.4
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - "~>"
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '1.0'
|
|
153
|
+
- - ">="
|
|
154
|
+
- !ruby/object:Gem::Version
|
|
155
|
+
version: 1.0.4
|
|
156
|
+
- !ruby/object:Gem::Dependency
|
|
157
|
+
name: appraisal2
|
|
158
|
+
requirement: !ruby/object:Gem::Requirement
|
|
159
|
+
requirements:
|
|
160
|
+
- - "~>"
|
|
161
|
+
- !ruby/object:Gem::Version
|
|
162
|
+
version: '3.0'
|
|
163
|
+
type: :development
|
|
164
|
+
prerelease: false
|
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
166
|
+
requirements:
|
|
167
|
+
- - "~>"
|
|
168
|
+
- !ruby/object:Gem::Version
|
|
169
|
+
version: '3.0'
|
|
170
|
+
- !ruby/object:Gem::Dependency
|
|
171
|
+
name: kettle-test
|
|
172
|
+
requirement: !ruby/object:Gem::Requirement
|
|
173
|
+
requirements:
|
|
174
|
+
- - "~>"
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: '1.0'
|
|
177
|
+
- - ">="
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: 1.0.6
|
|
180
|
+
type: :development
|
|
181
|
+
prerelease: false
|
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - "~>"
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '1.0'
|
|
187
|
+
- - ">="
|
|
188
|
+
- !ruby/object:Gem::Version
|
|
189
|
+
version: 1.0.6
|
|
190
|
+
- !ruby/object:Gem::Dependency
|
|
191
|
+
name: ruby-progressbar
|
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
|
193
|
+
requirements:
|
|
194
|
+
- - "~>"
|
|
195
|
+
- !ruby/object:Gem::Version
|
|
196
|
+
version: '1.13'
|
|
197
|
+
type: :development
|
|
198
|
+
prerelease: false
|
|
199
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
200
|
+
requirements:
|
|
201
|
+
- - "~>"
|
|
202
|
+
- !ruby/object:Gem::Version
|
|
203
|
+
version: '1.13'
|
|
204
|
+
- !ruby/object:Gem::Dependency
|
|
205
|
+
name: stone_checksums
|
|
206
|
+
requirement: !ruby/object:Gem::Requirement
|
|
207
|
+
requirements:
|
|
208
|
+
- - "~>"
|
|
209
|
+
- !ruby/object:Gem::Version
|
|
210
|
+
version: '1.0'
|
|
211
|
+
- - ">="
|
|
212
|
+
- !ruby/object:Gem::Version
|
|
213
|
+
version: 1.0.2
|
|
214
|
+
type: :development
|
|
215
|
+
prerelease: false
|
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
217
|
+
requirements:
|
|
218
|
+
- - "~>"
|
|
219
|
+
- !ruby/object:Gem::Version
|
|
220
|
+
version: '1.0'
|
|
221
|
+
- - ">="
|
|
222
|
+
- !ruby/object:Gem::Version
|
|
223
|
+
version: 1.0.2
|
|
224
|
+
- !ruby/object:Gem::Dependency
|
|
225
|
+
name: gitmoji-regex
|
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
|
227
|
+
requirements:
|
|
228
|
+
- - "~>"
|
|
229
|
+
- !ruby/object:Gem::Version
|
|
230
|
+
version: '1.0'
|
|
231
|
+
- - ">="
|
|
232
|
+
- !ruby/object:Gem::Version
|
|
233
|
+
version: 1.0.3
|
|
234
|
+
type: :development
|
|
235
|
+
prerelease: false
|
|
236
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
237
|
+
requirements:
|
|
238
|
+
- - "~>"
|
|
239
|
+
- !ruby/object:Gem::Version
|
|
240
|
+
version: '1.0'
|
|
241
|
+
- - ">="
|
|
242
|
+
- !ruby/object:Gem::Version
|
|
243
|
+
version: 1.0.3
|
|
244
|
+
description: "☯️ Commonmarker::Merge provides smart Markdown file merging using Comrak
|
|
245
|
+
(Rust) via Commonmarker. It understands document structure including headings, lists,
|
|
246
|
+
code blocks, and tables. Perfect for merging documentation templates with customized
|
|
247
|
+
files."
|
|
248
|
+
email:
|
|
249
|
+
- floss@galtzo.com
|
|
250
|
+
executables: []
|
|
251
|
+
extensions: []
|
|
252
|
+
extra_rdoc_files:
|
|
253
|
+
- CHANGELOG.md
|
|
254
|
+
- CITATION.cff
|
|
255
|
+
- CODE_OF_CONDUCT.md
|
|
256
|
+
- CONTRIBUTING.md
|
|
257
|
+
- FUNDING.md
|
|
258
|
+
- LICENSE.txt
|
|
259
|
+
- README.md
|
|
260
|
+
- REEK
|
|
261
|
+
- RUBOCOP.md
|
|
262
|
+
- SECURITY.md
|
|
263
|
+
files:
|
|
264
|
+
- CHANGELOG.md
|
|
265
|
+
- CITATION.cff
|
|
266
|
+
- CODE_OF_CONDUCT.md
|
|
267
|
+
- CONTRIBUTING.md
|
|
268
|
+
- FUNDING.md
|
|
269
|
+
- LICENSE.txt
|
|
270
|
+
- README.md
|
|
271
|
+
- REEK
|
|
272
|
+
- RUBOCOP.md
|
|
273
|
+
- SECURITY.md
|
|
274
|
+
- lib/commonmarker-merge.rb
|
|
275
|
+
- lib/commonmarker/merge.rb
|
|
276
|
+
- lib/commonmarker/merge/backend.rb
|
|
277
|
+
- lib/commonmarker/merge/debug_logger.rb
|
|
278
|
+
- lib/commonmarker/merge/file_analysis.rb
|
|
279
|
+
- lib/commonmarker/merge/freeze_node.rb
|
|
280
|
+
- lib/commonmarker/merge/smart_merger.rb
|
|
281
|
+
- lib/commonmarker/merge/version.rb
|
|
282
|
+
- sig/commonmarker/merge.rbs
|
|
283
|
+
- sig/commonmarker/merge/conflict_resolver.rbs
|
|
284
|
+
- sig/commonmarker/merge/debug_logger.rbs
|
|
285
|
+
- sig/commonmarker/merge/file_aligner.rbs
|
|
286
|
+
- sig/commonmarker/merge/file_analysis.rbs
|
|
287
|
+
- sig/commonmarker/merge/freeze_node.rbs
|
|
288
|
+
- sig/commonmarker/merge/merge_result.rbs
|
|
289
|
+
- sig/commonmarker/merge/smart_merger.rbs
|
|
290
|
+
homepage: https://github.com/kettle-rb/commonmarker-merge
|
|
291
|
+
licenses:
|
|
292
|
+
- MIT
|
|
293
|
+
metadata:
|
|
294
|
+
homepage_uri: https://commonmarker-merge.galtzo.com/
|
|
295
|
+
source_code_uri: https://github.com/kettle-rb/commonmarker-merge/tree/v1.0.0
|
|
296
|
+
changelog_uri: https://github.com/kettle-rb/commonmarker-merge/blob/v1.0.0/CHANGELOG.md
|
|
297
|
+
bug_tracker_uri: https://github.com/kettle-rb/commonmarker-merge/issues
|
|
298
|
+
documentation_uri: https://www.rubydoc.info/gems/commonmarker-merge/1.0.0
|
|
299
|
+
funding_uri: https://github.com/sponsors/pboling
|
|
300
|
+
wiki_uri: https://github.com/kettle-rb/commonmarker-merge/wiki
|
|
301
|
+
news_uri: https://www.railsbling.com/tags/commonmarker-merge
|
|
302
|
+
discord_uri: https://discord.gg/3qme4XHNKN
|
|
303
|
+
rubygems_mfa_required: 'true'
|
|
304
|
+
rdoc_options:
|
|
305
|
+
- "--title"
|
|
306
|
+
- commonmarker-merge - ☯️ Intelligent Markdown file merging using Commonmarker AST
|
|
307
|
+
analysis
|
|
308
|
+
- "--main"
|
|
309
|
+
- README.md
|
|
310
|
+
- "--exclude"
|
|
311
|
+
- "^sig/"
|
|
312
|
+
- "--line-numbers"
|
|
313
|
+
- "--inline-source"
|
|
314
|
+
- "--quiet"
|
|
315
|
+
require_paths:
|
|
316
|
+
- lib
|
|
317
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
318
|
+
requirements:
|
|
319
|
+
- - ">="
|
|
320
|
+
- !ruby/object:Gem::Version
|
|
321
|
+
version: 3.2.0
|
|
322
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
323
|
+
requirements:
|
|
324
|
+
- - ">="
|
|
325
|
+
- !ruby/object:Gem::Version
|
|
326
|
+
version: '0'
|
|
327
|
+
requirements: []
|
|
328
|
+
rubygems_version: 4.0.5
|
|
329
|
+
specification_version: 4
|
|
330
|
+
summary: "☯️ Intelligent Markdown file merging using Commonmarker AST analysis"
|
|
331
|
+
test_files: []
|
metadata.gz.sig
ADDED
|
Binary file
|