markdown-merge 1.0.1 → 1.0.2
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/CHANGELOG.md +20 -1
- data/README.md +41 -41
- data/lib/markdown/merge/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +19 -19
- 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: 313e6fe58655ab780b6d490e2ff6248021af42cc1ea3ec8c89bb5ac1744da0c5
|
|
4
|
+
data.tar.gz: 95468522f4d6b580d5e5a2dd437000e30b7467517601c3d746336cf8dac6feeb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 96ce32dff8ad1dadf61153564d3888a6708c8d789cfcc47058a01e961ee710b77cf8e598b18952eee98af3ebb51c695c25ff8ae646a952de385a43a10eac4e3d
|
|
7
|
+
data.tar.gz: 351d5646354111b7ac0094ea5070f2515feaf5b9be7f0c429b00a963f42f6f68b3125c88615cfc5fd83f215a4106bb2f8fd85500a1c1577a378dbd3b895ed90d
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,23 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.0.2] - 2026-02-01
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.0.2][1.0.2t]
|
|
36
|
+
- COVERAGE: 93.12% -- 1611/1730 lines in 25 files
|
|
37
|
+
- BRANCH COVERAGE: 81.52% -- 525/644 branches in 25 files
|
|
38
|
+
- 96.92% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- More tests
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Documentation cleanup
|
|
47
|
+
- Upgrade to [ast-merge v4.0.5](https://github.com/kettle-rb/ast-merge/releases/tag/v4.0.5)
|
|
48
|
+
- Upgrade to [tree_haver v5.0.3](https://github.com/kettle-rb/tree_haver/releases/tag/v5.0.3)
|
|
49
|
+
|
|
33
50
|
## [1.0.1] - 2026-01-20
|
|
34
51
|
|
|
35
52
|
- TAG: [v1.0.1][1.0.1t]
|
|
@@ -257,7 +274,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
257
274
|
This fixes freeze block detection for Commonmarker where the TreeHaver wrapper's
|
|
258
275
|
content methods return empty but the inner node has the actual content.
|
|
259
276
|
|
|
260
|
-
[Unreleased]: https://github.com/kettle-rb/markdown-merge/compare/v1.0.
|
|
277
|
+
[Unreleased]: https://github.com/kettle-rb/markdown-merge/compare/v1.0.2...HEAD
|
|
278
|
+
[1.0.2]: https://github.com/kettle-rb/markdown-merge/compare/v1.0.1...v1.0.2
|
|
279
|
+
[1.0.2t]: https://github.com/kettle-rb/markdown-merge/releases/tag/v1.0.2
|
|
261
280
|
[1.0.1]: https://github.com/kettle-rb/markdown-merge/compare/v1.0.0...v1.0.1
|
|
262
281
|
[1.0.1t]: https://github.com/kettle-rb/markdown-merge/releases/tag/v1.0.1
|
|
263
282
|
[1.0.0]: https://github.com/kettle-rb/markdown-merge/compare/76f2230840b236dd10fdd7baf322c082762dddb0...v1.0.0
|
data/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
| 📍 NOTE
|
|
2
|
-
|
|
3
|
-
| RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025.
|
|
4
|
-
| Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest.
|
|
5
|
-
| It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies].
|
|
1
|
+
| 📍 NOTE |
|
|
2
|
+
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
3
|
+
| RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
|
|
4
|
+
| Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
|
|
5
|
+
| It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
|
|
6
6
|
| Simply put - there was active policy for adding or removing maintainers/owners of [rubygems][rubygems-maint-policy] and [bundler][bundler-maint-policy], and those [policies were not followed][policy-fail]. |
|
|
7
|
-
| I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners.
|
|
8
|
-
| If a similar theft happened with my repos/gems, I'd hope some would stand up for me.
|
|
9
|
-
| Disenfranchised former-maintainers have started [gem.coop][gem-coop].
|
|
10
|
-
| Once available I will publish there exclusively; unless RubyCentral makes amends with the community.
|
|
11
|
-
| The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of.
|
|
12
|
-
| See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next.
|
|
13
|
-
| What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server].
|
|
7
|
+
| I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
|
|
8
|
+
| If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
|
|
9
|
+
| Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
|
|
10
|
+
| Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
|
|
11
|
+
| The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
|
|
12
|
+
| See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
|
|
13
|
+
| What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
|
|
14
14
|
|
|
15
15
|
[rubygems-org]: https://github.com/rubygems/
|
|
16
16
|
[draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
|
|
@@ -97,37 +97,37 @@ merger = Markdown::Merge::SmartMerger.new(template_content, dest_content, backen
|
|
|
97
97
|
|
|
98
98
|
Signatures computed by default for common Markdown block elements:
|
|
99
99
|
|
|
100
|
-
| Node Type
|
|
101
|
-
|
|
102
|
-
| Heading
|
|
103
|
-
| Paragraph
|
|
104
|
-
| List
|
|
105
|
-
| Code Block
|
|
106
|
-
| Block Quote
|
|
107
|
-
| Table
|
|
108
|
-
| HTML Block
|
|
109
|
-
| Thematic Break
|
|
110
|
-
| Footnote Definition | `[:footnote_definition, label]`
|
|
100
|
+
| Node Type | Signature Format | Matching Behavior |
|
|
101
|
+
|---------------------|-----------------------------------------|-----------------------------------------------------|
|
|
102
|
+
| Heading | `[:heading, level, text]` | Headings match by level and text content |
|
|
103
|
+
| Paragraph | `[:paragraph, content_hash]` | Paragraphs match by content hash |
|
|
104
|
+
| List | `[:list, type, item_count]` | Lists match by type (bullet/ordered) and item count |
|
|
105
|
+
| Code Block | `[:code_block, language, content_hash]` | Code blocks match by language and content |
|
|
106
|
+
| Block Quote | `[:blockquote, content_hash]` | Block quotes match by content hash |
|
|
107
|
+
| Table | `[:table, row_count, header_hash]` | Tables match by structure and header content |
|
|
108
|
+
| HTML Block | `[:html, content_hash]` | HTML blocks match by content hash |
|
|
109
|
+
| Thematic Break | `[:hrule]` | Horizontal rules always match |
|
|
110
|
+
| Footnote Definition | `[:footnote_definition, label]` | Footnotes match by label/name |
|
|
111
111
|
|
|
112
112
|
### The `*-merge` Gem Family
|
|
113
113
|
|
|
114
114
|
The `*-merge` gem family provides intelligent, AST-based merging for various file formats. At the foundation is [tree_haver][tree_haver], which provides a unified cross-Ruby parsing API that works seamlessly across MRI, JRuby, and TruffleRuby.
|
|
115
115
|
|
|
116
|
-
| Gem |
|
|
117
|
-
|
|
118
|
-
| [tree_haver][tree_haver] |
|
|
119
|
-
| [ast-merge][ast-merge] |
|
|
120
|
-
| [bash-merge][bash-merge] |
|
|
121
|
-
| [commonmarker-merge][commonmarker-merge] | [![Version][commonmarker-merge-gem-i]][commonmarker-merge-gem]
|
|
122
|
-
| [dotenv-merge][dotenv-merge] |
|
|
123
|
-
| [json-merge][json-merge] |
|
|
124
|
-
| [jsonc-merge][jsonc-merge] |
|
|
125
|
-
| [markdown-merge][markdown-merge] |
|
|
126
|
-
| [markly-merge][markly-merge] |
|
|
127
|
-
| [prism-merge][prism-merge] |
|
|
128
|
-
| [psych-merge][psych-merge] |
|
|
129
|
-
| [rbs-merge][rbs-merge] |
|
|
130
|
-
| [toml-merge][toml-merge] |
|
|
116
|
+
| Gem | Version / CI | Language<br>/ Format | Parser Backend(s) | Description |
|
|
117
|
+
|------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------:|----------------------|-------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
|
|
118
|
+
| [tree_haver][tree_haver] | [![Version][tree_haver-gem-i]][tree_haver-gem] <br/> [![CI][tree_haver-ci-i]][tree_haver-ci] | Multi | Supported Backends: MRI C, Rust, FFI, Java, Prism, Psych, Commonmarker, Markly, Citrus, Parslet | **Foundation**: Cross-Ruby adapter for parsing libraries (like Faraday for HTTP) |
|
|
119
|
+
| [ast-merge][ast-merge] | [![Version][ast-merge-gem-i]][ast-merge-gem] <br/> [![CI][ast-merge-ci-i]][ast-merge-ci] | Text | internal | **Infrastructure**: Shared base classes and merge logic for all `*-merge` gems |
|
|
120
|
+
| [bash-merge][bash-merge] | [![Version][bash-merge-gem-i]][bash-merge-gem] <br/> [![CI][bash-merge-ci-i]][bash-merge-ci] | Bash | [tree-sitter-bash][ts-bash] (via tree_haver) | Smart merge for Bash scripts |
|
|
121
|
+
| [commonmarker-merge][commonmarker-merge] | [![Version][commonmarker-merge-gem-i]][commonmarker-merge-gem] <br/> [![CI][commonmarker-merge-ci-i]][commonmarker-merge-ci] | Markdown | [Commonmarker][commonmarker] (via tree_haver) | Smart merge for Markdown (CommonMark via comrak Rust) |
|
|
122
|
+
| [dotenv-merge][dotenv-merge] | [![Version][dotenv-merge-gem-i]][dotenv-merge-gem] <br/> [![CI][dotenv-merge-ci-i]][dotenv-merge-ci] | Dotenv | internal | Smart merge for `.env` files |
|
|
123
|
+
| [json-merge][json-merge] | [![Version][json-merge-gem-i]][json-merge-gem] <br/> [![CI][json-merge-ci-i]][json-merge-ci] | JSON | [tree-sitter-json][ts-json] (via tree_haver) | Smart merge for JSON files |
|
|
124
|
+
| [jsonc-merge][jsonc-merge] | [![Version][jsonc-merge-gem-i]][jsonc-merge-gem] <br/> [![CI][jsonc-merge-ci-i]][jsonc-merge-ci] | JSONC | [tree-sitter-jsonc][ts-jsonc] (via tree_haver) | ⚠️ Proof of concept; Smart merge for JSON with Comments |
|
|
125
|
+
| [markdown-merge][markdown-merge] | [![Version][markdown-merge-gem-i]][markdown-merge-gem] <br/> [![CI][markdown-merge-ci-i]][markdown-merge-ci] | Markdown | [Commonmarker][commonmarker] / [Markly][markly] (via tree_haver), [Parslet][parslet] | **Foundation**: Shared base for Markdown mergers with inner code block merging |
|
|
126
|
+
| [markly-merge][markly-merge] | [![Version][markly-merge-gem-i]][markly-merge-gem] <br/> [![CI][markly-merge-ci-i]][markly-merge-ci] | Markdown | [Markly][markly] (via tree_haver) | Smart merge for Markdown (CommonMark via cmark-gfm C) |
|
|
127
|
+
| [prism-merge][prism-merge] | [![Version][prism-merge-gem-i]][prism-merge-gem] <br/> [![CI][prism-merge-ci-i]][prism-merge-ci] | Ruby | [Prism][prism] (`prism` std lib gem) | Smart merge for Ruby source files |
|
|
128
|
+
| [psych-merge][psych-merge] | [![Version][psych-merge-gem-i]][psych-merge-gem] <br/> [![CI][psych-merge-ci-i]][psych-merge-ci] | YAML | [Psych][psych] (`psych` std lib gem) | Smart merge for YAML files |
|
|
129
|
+
| [rbs-merge][rbs-merge] | [![Version][rbs-merge-gem-i]][rbs-merge-gem] <br/> [![CI][rbs-merge-ci-i]][rbs-merge-ci] | RBS | [tree-sitter-bash][ts-rbs] (via tree_haver), [RBS][rbs] (`rbs` std lib gem) | Smart merge for Ruby type signatures |
|
|
130
|
+
| [toml-merge][toml-merge] | [![Version][toml-merge-gem-i]][toml-merge-gem] <br/> [![CI][toml-merge-ci-i]][toml-merge-ci] | TOML | [Parslet + toml][toml], [Citrus + toml-rb][toml-rb], [tree-sitter-toml][ts-toml] (all via tree_haver) | Smart merge for TOML files |
|
|
131
131
|
|
|
132
132
|
#### Backend Platform Compatibility
|
|
133
133
|
|
|
@@ -552,7 +552,7 @@ class MyClass
|
|
|
552
552
|
def new_method
|
|
553
553
|
puts "from template"
|
|
554
554
|
end
|
|
555
|
-
end
|
|
555
|
+
end
|
|
556
556
|
```
|
|
557
557
|
````
|
|
558
558
|
|
|
@@ -753,7 +753,7 @@ Support us with a monthly donation and help us continue our activities. \[[Becom
|
|
|
753
753
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
754
754
|
|
|
755
755
|
<!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
|
|
756
|
-
No backers yet. Be the first
|
|
756
|
+
No backers yet. Be the first!
|
|
757
757
|
<!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
|
|
758
758
|
|
|
759
759
|
### Open Collective for Organizations
|
|
@@ -763,7 +763,7 @@ Become a sponsor and get your logo on our README on GitHub with a link to your s
|
|
|
763
763
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
764
764
|
|
|
765
765
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
|
|
766
|
-
No sponsors yet. Be the first
|
|
766
|
+
No sponsors yet. Be the first!
|
|
767
767
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
|
|
768
768
|
|
|
769
769
|
[kettle-readme-backers]: https://github.com/kettle-rb/markdown-merge/blob/main/exe/kettle-readme-backers
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: markdown-merge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -38,25 +38,19 @@ cert_chain:
|
|
|
38
38
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
|
-
name:
|
|
41
|
+
name: parslet
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '
|
|
47
|
-
- - ">="
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: 4.0.2
|
|
46
|
+
version: '2.0'
|
|
50
47
|
type: :runtime
|
|
51
48
|
prerelease: false
|
|
52
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
50
|
requirements:
|
|
54
51
|
- - "~>"
|
|
55
52
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
57
|
-
- - ">="
|
|
58
|
-
- !ruby/object:Gem::Version
|
|
59
|
-
version: 4.0.2
|
|
53
|
+
version: '2.0'
|
|
60
54
|
- !ruby/object:Gem::Dependency
|
|
61
55
|
name: tree_haver
|
|
62
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,7 +60,7 @@ dependencies:
|
|
|
66
60
|
version: '5.0'
|
|
67
61
|
- - ">="
|
|
68
62
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 5.0.
|
|
63
|
+
version: 5.0.3
|
|
70
64
|
type: :runtime
|
|
71
65
|
prerelease: false
|
|
72
66
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -76,21 +70,27 @@ dependencies:
|
|
|
76
70
|
version: '5.0'
|
|
77
71
|
- - ">="
|
|
78
72
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: 5.0.
|
|
73
|
+
version: 5.0.3
|
|
80
74
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
name:
|
|
75
|
+
name: ast-merge
|
|
82
76
|
requirement: !ruby/object:Gem::Requirement
|
|
83
77
|
requirements:
|
|
84
78
|
- - "~>"
|
|
85
79
|
- !ruby/object:Gem::Version
|
|
86
|
-
version: '
|
|
80
|
+
version: '4.0'
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 4.0.5
|
|
87
84
|
type: :runtime
|
|
88
85
|
prerelease: false
|
|
89
86
|
version_requirements: !ruby/object:Gem::Requirement
|
|
90
87
|
requirements:
|
|
91
88
|
- - "~>"
|
|
92
89
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: '
|
|
90
|
+
version: '4.0'
|
|
91
|
+
- - ">="
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: 4.0.5
|
|
94
94
|
- !ruby/object:Gem::Dependency
|
|
95
95
|
name: version_gem
|
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -325,10 +325,10 @@ licenses:
|
|
|
325
325
|
- MIT
|
|
326
326
|
metadata:
|
|
327
327
|
homepage_uri: https://markdown-merge.galtzo.com/
|
|
328
|
-
source_code_uri: https://github.com/kettle-rb/markdown-merge/tree/v1.0.
|
|
329
|
-
changelog_uri: https://github.com/kettle-rb/markdown-merge/blob/v1.0.
|
|
328
|
+
source_code_uri: https://github.com/kettle-rb/markdown-merge/tree/v1.0.2
|
|
329
|
+
changelog_uri: https://github.com/kettle-rb/markdown-merge/blob/v1.0.2/CHANGELOG.md
|
|
330
330
|
bug_tracker_uri: https://github.com/kettle-rb/markdown-merge/issues
|
|
331
|
-
documentation_uri: https://www.rubydoc.info/gems/markdown-merge/1.0.
|
|
331
|
+
documentation_uri: https://www.rubydoc.info/gems/markdown-merge/1.0.2
|
|
332
332
|
funding_uri: https://github.com/sponsors/pboling
|
|
333
333
|
wiki_uri: https://github.com/kettle-rb/markdown-merge/wiki
|
|
334
334
|
news_uri: https://www.railsbling.com/tags/markdown-merge
|
|
@@ -358,7 +358,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
358
358
|
- !ruby/object:Gem::Version
|
|
359
359
|
version: '0'
|
|
360
360
|
requirements: []
|
|
361
|
-
rubygems_version: 4.0.
|
|
361
|
+
rubygems_version: 4.0.5
|
|
362
362
|
specification_version: 4
|
|
363
363
|
summary: "☯️ Ast::Merge-based structure for building Markdown merging tools like markly-merge
|
|
364
364
|
and commonmarker-merge"
|
metadata.gz.sig
CHANGED
|
Binary file
|