Skip to content

Commit d650175

Browse files
committed
🔖 Prepare release v3.0.0
⚡️ A message from a fellow meat-based-AI ⚡️ - [❤️] Finely-crafted open-source tools like ast-merge (& many more) require time and effort. - [❤️] Though I adore my work, it lacks financial sustainability. - [❤️] Please, help me continue enhancing your tools by becoming a sponsor: - [💲] https://liberapay.com/pboling/donate - [💲] https://github.com/sponsors/pboling
1 parent 8370cb3 commit d650175

File tree

93 files changed

+15090
-2198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+15090
-2198
lines changed

CHANGELOG.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,25 @@ Please file a bug if you notice a violation of semantic versioning.
2020

2121
### Added
2222

23+
### Changed
24+
25+
### Deprecated
26+
27+
### Removed
28+
29+
### Fixed
30+
31+
### Security
32+
33+
## [3.0.0] - 2026-01-05
34+
35+
- TAG: [v3.0.0][3.0.0t]
36+
- COVERAGE: 96.93% -- 2462/2540 lines in 47 files
37+
- BRANCH COVERAGE: 89.62% -- 794/886 branches in 47 files
38+
- 98.72% documented
39+
40+
### Added
41+
2342
- `TestableNode` spec helper class that wraps a mock in a real `TreeHaver::Node`, providing consistent API testing without relying on fragile mocks
2443
- `Recipe::Preset#match_refiner` accessor method (was missing, causing errors in Recipe::Runner)
2544
- Minimal reproduction specs for `to_commonmark` normalization behavior:
@@ -40,8 +59,6 @@ Please file a bug if you notice a violation of semantic versioning.
4059
- Signature generators and typing scripts now receive TreeHaver nodes directly (no NavigableStatement wrapping)
4160
- Removed NavigableStatement wrapping from `FileAnalyzable#generate_signature` and `NodeTyping.process`
4261

43-
### Deprecated
44-
4562
### Removed
4663

4764
- **BREAKING**: `Ast::Merge::PartialTemplateMerger` removed. Use `Markdown::Merge::PartialTemplateMerger` directly.
@@ -57,8 +74,6 @@ Please file a bug if you notice a violation of semantic versioning.
5774
- Table column padding/alignment
5875
- Original formatting exactly as written
5976

60-
### Security
61-
6277
## [2.0.10] - 2026-01-04
6378

6479
- TAG: [v2.0.10][2.0.10t]
@@ -492,7 +507,9 @@ Please file a bug if you notice a violation of semantic versioning.
492507

493508
- Initial release
494509

495-
[Unreleased]: https://github.com/kettle-rb/ast-merge/compare/v2.0.10...HEAD
510+
[Unreleased]: https://github.com/kettle-rb/ast-merge/compare/v3.0.0...HEAD
511+
[3.0.0]: https://github.com/kettle-rb/ast-merge/compare/v2.0.10...v3.0.0
512+
[3.0.0t]: https://github.com/kettle-rb/ast-merge/releases/tag/v3.0.0
496513
[2.0.10]: https://github.com/kettle-rb/ast-merge/compare/v2.0.9...v2.0.10
497514
[2.0.10t]: https://github.com/kettle-rb/ast-merge/releases/tag/v2.0.10
498515
[2.0.9]: https://github.com/kettle-rb/ast-merge/compare/v2.0.8...v2.0.9

Gemfile.lock

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ GIT
3030
PATH
3131
remote: .
3232
specs:
33-
ast-merge (2.0.10)
33+
ast-merge (3.0.0)
3434
tree_haver (~> 3.2, >= 3.2.5)
3535
version_gem (~> 1.1, >= 1.1.9)
3636

@@ -48,7 +48,6 @@ GEM
4848
backports (3.25.3)
4949
benchmark (0.5.0)
5050
bigdecimal (3.3.1)
51-
bigdecimal (3.3.1-java)
5251
bundler-audit (0.9.3)
5352
bundler (>= 1.2.0)
5453
thor (~> 1.0)
@@ -57,7 +56,6 @@ GEM
5756
commonmarker (2.6.1-x86_64-linux)
5857
concurrent-ruby (1.3.6)
5958
date (3.5.1)
60-
date (3.5.1-java)
6159
debug (1.11.1)
6260
irb (~> 1.10)
6361
reline (>= 0.3.8)
@@ -95,25 +93,20 @@ GEM
9593
dry-logic (~> 1.4)
9694
zeitwerk (~> 2.6)
9795
erb (5.1.3)
98-
erb (5.1.3-java)
9996
ffi (1.17.3-arm-linux-gnu)
10097
ffi (1.17.3-arm-linux-musl)
101-
ffi (1.17.3-java)
10298
ffi (1.17.3-x86_64-linux-gnu)
10399
gem_bench (2.0.5)
104100
bundler (>= 1.14)
105101
version_gem (~> 1.1, >= 1.1.4)
106102
gitmoji-regex (1.0.3)
107103
version_gem (~> 1.1, >= 1.1.8)
108104
io-console (0.8.2)
109-
io-console (0.8.2-java)
110105
irb (1.16.0)
111106
pp (>= 0.6.0)
112107
rdoc (>= 4.0.0)
113108
reline (>= 0.4.2)
114-
jar-dependencies (0.5.5)
115109
json (2.18.0)
116-
json (2.18.0-java)
117110
kettle-dev (1.2.4)
118111
kettle-soup-cover (1.1.1)
119112
simplecov (~> 0.22)
@@ -149,8 +142,6 @@ GEM
149142
racc (~> 1.4)
150143
nokogiri (1.19.0-arm-linux-musl)
151144
racc (~> 1.4)
152-
nokogiri (1.19.0-java)
153-
racc (~> 1.4)
154145
nokogiri (1.19.0-x86_64-linux-gnu)
155146
racc (~> 1.4)
156147
oppen (1.0.0)
@@ -171,12 +162,8 @@ GEM
171162
psych (5.3.1)
172163
date
173164
stringio
174-
psych (5.3.1-java)
175-
date
176-
jar-dependencies (>= 0.1.7)
177165
public_suffix (7.0.2)
178166
racc (1.8.1)
179-
racc (1.8.1-java)
180167
rainbow (3.1.1)
181168
rake (13.3.1)
182169
rbs (3.10.0)
@@ -321,7 +308,6 @@ GEM
321308
stone_checksums (1.0.3)
322309
version_gem (~> 1.1, >= 1.1.9)
323310
stringio (3.2.0)
324-
stringio (3.2.0-java)
325311
terminal-table (4.0.0)
326312
unicode-display_width (>= 1.1.1, < 4)
327313
thor (1.4.0)
@@ -367,7 +353,6 @@ GEM
367353
PLATFORMS
368354
arm-linux-gnu
369355
arm-linux-musl
370-
universal-java-25
371356
x86_64-linux
372357

373358
DEPENDENCIES
@@ -422,18 +407,16 @@ CHECKSUMS
422407
ansi (1.5.0) sha256=5408253274e33d9d27d4a98c46d2998266fd51cba58a7eb9d08f50e57ed23592
423408
appraisal2 (3.0.0) sha256=f1b4e742cf8ebef5e9fbb76c416a8c16edfe0727964a5a17b44adfc37b701aed
424409
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
425-
ast-merge (2.0.10)
410+
ast-merge (3.0.0)
426411
backports (3.25.3) sha256=94298d32dc3c40ca15633b54e282780b49e2db0c045f602ea1907e4f63a17235
427412
benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
428413
bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218
429-
bigdecimal (3.3.1-java) sha256=ed496e9c075dd501d58a519707bf704dba82a0cef658c719c929789551ec7d85
430414
bundler-audit (0.9.3) sha256=81c8766c71e47d0d28a0f98c7eed028539f21a6ea3cd8f685eb6f42333c9b4e9
431415
citrus (3.0.2) sha256=4ec2412fc389ad186735f4baee1460f7900a8e130ffe3f216b30d4f9c684f650
432416
commonmarker (2.6.1-arm-linux) sha256=ee064b7c5d446d841299a0f9a38d7e6d486c44c89b4237695c7d59d8cf256ddb
433417
commonmarker (2.6.1-x86_64-linux) sha256=7f43729af032cfb88c0e897f53bf37ad78c6ec28220a0911f5e34b4f041e7ec7
434418
concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
435419
date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
436-
date (3.5.1-java) sha256=12e09477dc932afe45bf768cd362bf73026804e0db1e6c314186d6cd0bee3344
437420
debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6
438421
delegate (0.6.1) sha256=54cf946cacfe05b1c23114edd8fbd8d54e9cea7abf36b95130ab53cc88b8f7e4
439422
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
@@ -447,19 +430,14 @@ CHECKSUMS
447430
dry-schema (1.14.1) sha256=2fcd7539a7099cacae6a22f6a3a2c1846fe5afeb1c841cde432c89c6cb9b9ff1
448431
dry-types (1.8.3) sha256=b5d97a45e0ed273131c0c3d5bc9f5633c2d1242e092ee47401ce7d5eab65c1bc
449432
erb (5.1.3) sha256=566e53057b6ba48699f824b578473b391fa8aef100aa14afad1c46725fae0e67
450-
erb (5.1.3-java) sha256=ee38dbaf7bd3c4a9b67ea51cc0b5ca8debd8223009cecac9918aa017fcdc8581
451433
ffi (1.17.3-arm-linux-gnu) sha256=5bd4cea83b68b5ec0037f99c57d5ce2dd5aa438f35decc5ef68a7d085c785668
452434
ffi (1.17.3-arm-linux-musl) sha256=0d7626bb96265f9af78afa33e267d71cfef9d9a8eb8f5525344f8da6c7d76053
453-
ffi (1.17.3-java) sha256=be1ecc86edbf71b9ab59212a23b33efec431c0446cb3183066d8a960a1946d3a
454435
ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f
455436
gem_bench (2.0.5) sha256=0dc0fb44a5a5eb7b2f5c1c68a5b0164d72007132822c012bac3abe976b199ead
456437
gitmoji-regex (1.0.3) sha256=538c6f49f5af6dc36d1630edb89a5a66f6e14ec5850d7fd071e0331f940e553f
457438
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
458-
io-console (0.8.2-java) sha256=837efefe96084c13ae91114917986ae6c6d1cf063b27b8419cc564a722a38af8
459439
irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
460-
jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059
461440
json (2.18.0) sha256=b10506aee4183f5cf49e0efc48073d7b75843ce3782c68dbeb763351c08fd505
462-
json (2.18.0-java) sha256=74706f684baeb1a40351ed26fc8fe6e958afa861320d1c28ff4eb7073b29c7aa
463441
kettle-dev (1.2.4) sha256=71373c67fe7eb0a9656e70dfd10cf226a15083b6d1be18dafcb5360f21ee98b6
464442
kettle-soup-cover (1.1.1) sha256=2303885a9d8485d8d43cb250bcf73570f6b6fb997526beeaef3ef54e3501d445
465443
kettle-test (1.0.7) sha256=16fcb8b1bc12366f443d0ec9d125c1865249865c7afff7ef856e602436d4cdc7
@@ -473,7 +451,6 @@ CHECKSUMS
473451
mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
474452
nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5
475453
nokogiri (1.19.0-arm-linux-musl) sha256=23ed90922f1a38aed555d3de4d058e90850c731c5b756d191b3dc8055948e73c
476-
nokogiri (1.19.0-java) sha256=5f3a70e252be641d8a4099f7fb4cc25c81c632cb594eec9b4b8f2ca8be4374f3
477454
nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c
478455
oppen (1.0.0) sha256=379bf0b35c5e87c5f4139927721fd6c9f561e344a73ce3f658726a609034ddee
479456
ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
@@ -485,10 +462,8 @@ CHECKSUMS
485462
prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
486463
prism (1.7.0) sha256=10062f734bf7985c8424c44fac382ac04a58124ea3d220ec3ba9fe4f2da65103
487464
psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
488-
psych (5.3.1-java) sha256=20a4a81ad01479ef060f604ed75ba42fe673169e67d923b1bae5aa4e13cc5820
489465
public_suffix (7.0.2) sha256=9114090c8e4e7135c1fd0e7acfea33afaab38101884320c65aaa0ffb8e26a857
490466
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
491-
racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98
492467
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
493468
rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
494469
rbs (3.10.0) sha256=e75b5f1313c71c9ee0fcea68bf97d3e5fe8ec7a641d4b5cd18bbc28c94ddf298
@@ -539,7 +514,6 @@ CHECKSUMS
539514
standard-rubocop-lts (1.0.10) sha256=bdce3407fb6683a305f7f2e186858033dc88013d95bdc6ec4de8df0be55a0e47
540515
stone_checksums (1.0.3) sha256=1d7ee38b7c766c523cbf12ab886ffbae519a2c48288f9d8ecc7ca0deed0701fe
541516
stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
542-
stringio (3.2.0-java) sha256=55fff26a7c5062f5def0cc5868414dfa99b9f0463dd5cd6904e63bdc259f4e07
543517
terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2
544518
thor (1.4.0) sha256=8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d
545519
timecop (0.9.10) sha256=12ba45ce57cdcf6b1043cb6cdffa6381fd89ce10d369c28a7f6f04dc1b0cd8eb

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1033,7 +1033,7 @@ Thanks for RTFM. ☺️
10331033
[📌gitmoji]: https://gitmoji.dev
10341034
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
10351035
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1036-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.721-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1036+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.540-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
10371037
[🔐security]: SECURITY.md
10381038
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
10391039
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year

docs/Ast.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
<dl>
8080
<dt>Defined in:</dt>
8181
<dd>lib/ast/merge/rspec/dependency_tags.rb<span class="defines">,<br />
82-
lib/ast/merge.rb,<br /> lib/ast/merge/text.rb,<br /> lib/ast/merge/recipe.rb,<br /> lib/ast/merge/comment.rb,<br /> lib/ast/merge/version.rb,<br /> lib/ast/merge/ast_node.rb,<br /> lib/ast/merge/freezable.rb,<br /> lib/ast/merge/node_typing.rb,<br /> lib/ast/merge/comment/line.rb,<br /> lib/ast/merge/debug_logger.rb,<br /> lib/ast/merge/text/section.rb,<br /> lib/ast/merge/comment/block.rb,<br /> lib/ast/merge/comment/empty.rb,<br /> lib/ast/merge/comment/style.rb,<br /> lib/ast/merge/detector/base.rb,<br /> lib/ast/merge/merger_config.rb,<br /> lib/ast/merge/recipe/config.rb,<br /> lib/ast/merge/recipe/preset.rb,<br /> lib/ast/merge/recipe/runner.rb,<br /> lib/ast/merge/comment/parser.rb,<br /> lib/ast/merge/section_typing.rb,<br /> lib/ast/merge/text/line_node.rb,<br /> lib/ast/merge/text/word_node.rb,<br /> lib/ast/merge/file_analyzable.rb,<br /> lib/ast/merge/freeze_node_base.rb,<br /> lib/ast/merge/match_score_base.rb,<br /> lib/ast/merge/merge_result_base.rb,<br /> lib/ast/merge/node_wrapper_base.rb,<br /> lib/ast/merge/smart_merger_base.rb,<br /> lib/ast/merge/text/merge_result.rb,<br /> lib/ast/merge/text/smart_merger.rb,<br /> lib/ast/merge/detector/mergeable.rb,<br /> lib/ast/merge/match_refiner_base.rb,<br /> lib/ast/merge/text/file_analysis.rb,<br /> lib/ast/merge/navigable_statement.rb,<br /> lib/ast/merge/node_typing/wrapper.rb,<br /> lib/ast/merge/recipe/script_loader.rb,<br /> lib/ast/merge/content_match_refiner.rb,<br /> lib/ast/merge/text/section_splitter.rb,<br /> lib/ast/merge/conflict_resolver_base.rb,<br /> lib/ast/merge/node_typing/normalizer.rb,<br /> lib/ast/merge/text/conflict_resolver.rb,<br /> lib/ast/merge/partial_template_merger.rb,<br /> lib/ast/merge/detector/toml_frontmatter.rb,<br /> lib/ast/merge/detector/yaml_frontmatter.rb,<br /> lib/ast/merge/detector/fenced_code_block.rb,<br /> lib/ast/merge/node_typing/frozen_wrapper.rb</span>
82+
lib/ast/merge.rb,<br /> lib/ast/merge/text.rb,<br /> lib/ast/merge/recipe.rb,<br /> lib/ast/merge/comment.rb,<br /> lib/ast/merge/version.rb,<br /> lib/ast/merge/ast_node.rb,<br /> lib/ast/merge/freezable.rb,<br /> lib/ast/merge/node_typing.rb,<br /> lib/ast/merge/comment/line.rb,<br /> lib/ast/merge/debug_logger.rb,<br /> lib/ast/merge/text/section.rb,<br /> lib/ast/merge/comment/block.rb,<br /> lib/ast/merge/comment/empty.rb,<br /> lib/ast/merge/comment/style.rb,<br /> lib/ast/merge/detector/base.rb,<br /> lib/ast/merge/merger_config.rb,<br /> lib/ast/merge/recipe/config.rb,<br /> lib/ast/merge/recipe/preset.rb,<br /> lib/ast/merge/recipe/runner.rb,<br /> lib/ast/merge/comment/parser.rb,<br /> lib/ast/merge/section_typing.rb,<br /> lib/ast/merge/text/line_node.rb,<br /> lib/ast/merge/text/word_node.rb,<br /> lib/ast/merge/file_analyzable.rb,<br /> lib/ast/merge/freeze_node_base.rb,<br /> lib/ast/merge/match_score_base.rb,<br /> lib/ast/merge/merge_result_base.rb,<br /> lib/ast/merge/node_wrapper_base.rb,<br /> lib/ast/merge/smart_merger_base.rb,<br /> lib/ast/merge/text/merge_result.rb,<br /> lib/ast/merge/text/smart_merger.rb,<br /> lib/ast/merge/detector/mergeable.rb,<br /> lib/ast/merge/match_refiner_base.rb,<br /> lib/ast/merge/text/file_analysis.rb,<br /> lib/ast/merge/navigable_statement.rb,<br /> lib/ast/merge/node_typing/wrapper.rb,<br /> lib/ast/merge/recipe/script_loader.rb,<br /> lib/ast/merge/content_match_refiner.rb,<br /> lib/ast/merge/text/section_splitter.rb,<br /> lib/ast/merge/conflict_resolver_base.rb,<br /> lib/ast/merge/node_typing/normalizer.rb,<br /> lib/ast/merge/text/conflict_resolver.rb,<br /> lib/ast/merge/detector/toml_frontmatter.rb,<br /> lib/ast/merge/detector/yaml_frontmatter.rb,<br /> lib/ast/merge/detector/fenced_code_block.rb,<br /> lib/ast/merge/node_typing/frozen_wrapper.rb,<br /> lib/ast/merge/partial_template_merger_base.rb</span>
8383
</dd>
8484
</dl>
8585

@@ -191,7 +191,7 @@ <h5 class="example_title"><div class='inline'><p>Usage in specs</p>
191191
</div>
192192

193193
<div id="footer">
194-
Generated on Sun Jan 4 21:12:17 2026 by
194+
Generated on Mon Jan 5 22:05:05 2026 by
195195
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
196196
0.9.38 (ruby-4.0.0).
197197
</div>

0 commit comments

Comments
 (0)