Skip to content

Commit a84a92c

Browse files
committed
🔖 Prepare release v3.1.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 945be7c commit a84a92c

File tree

95 files changed

+22920
-1235
lines changed

Some content is hidden

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

95 files changed

+22920
-1235
lines changed

CHANGELOG.md

Lines changed: 22 additions & 9 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.1.0] - 2026-01-08
34+
35+
- TAG: [v3.1.0][3.1.0t]
36+
- COVERAGE: 96.89% -- 2465/2544 lines in 47 files
37+
- BRANCH COVERAGE: 89.62% -- 794/886 branches in 47 files
38+
- 98.75% documented
39+
40+
### Added
41+
2342
- `Ast::Merge::EmitterBase` - Abstract base class for format-specific emitters
2443
- Provides common infrastructure for converting AST structures back to text
2544
- Tracks indentation level with configurable `indent_size` (default: 2 spaces)
@@ -37,14 +56,6 @@ Please file a bug if you notice a violation of semantic versioning.
3756

3857
- tree_haver v4.0.0
3958

40-
### Deprecated
41-
42-
### Removed
43-
44-
### Fixed
45-
46-
### Security
47-
4859
## [3.0.0] - 2026-01-05
4960

5061
- TAG: [v3.0.0][3.0.0t]
@@ -522,7 +533,9 @@ Please file a bug if you notice a violation of semantic versioning.
522533

523534
- Initial release
524535

525-
[Unreleased]: https://github.com/kettle-rb/ast-merge/compare/v3.0.0...HEAD
536+
[Unreleased]: https://github.com/kettle-rb/ast-merge/compare/v3.1.0...HEAD
537+
[3.1.0]: https://github.com/kettle-rb/ast-merge/compare/v3.0.0...v3.1.0
538+
[3.1.0t]: https://github.com/kettle-rb/ast-merge/releases/tag/v3.1.0
526539
[3.0.0]: https://github.com/kettle-rb/ast-merge/compare/v2.0.10...v3.0.0
527540
[3.0.0t]: https://github.com/kettle-rb/ast-merge/releases/tag/v3.0.0
528541
[2.0.10]: https://github.com/kettle-rb/ast-merge/compare/v2.0.9...v2.0.10

Gemfile.lock

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

@@ -407,7 +407,7 @@ CHECKSUMS
407407
ansi (1.5.0) sha256=5408253274e33d9d27d4a98c46d2998266fd51cba58a7eb9d08f50e57ed23592
408408
appraisal2 (3.0.0) sha256=f1b4e742cf8ebef5e9fbb76c416a8c16edfe0727964a5a17b44adfc37b701aed
409409
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
410-
ast-merge (3.0.0)
410+
ast-merge (3.1.0)
411411
backports (3.25.3) sha256=94298d32dc3c40ca15633b54e282780b49e2db0c045f602ea1907e4f63a17235
412412
benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
413413
bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,7 @@ Thanks for RTFM. ☺️
10561056
[📌gitmoji]: https://gitmoji.dev
10571057
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
10581058
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1059-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.540-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1059+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.544-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
10601060
[🔐security]: SECURITY.md
10611061
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
10621062
[📄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/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>
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/emitter_base.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 Mon Jan 5 22:05:05 2026 by
194+
Generated on Thu Jan 8 04:50:51 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>

docs/Ast/Merge.html

Lines changed: 3 additions & 3 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.rb<span class="defines">,<br />
82-
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/rspec/dependency_tags.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>
82+
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/emitter_base.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/rspec/dependency_tags.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

@@ -93,7 +93,7 @@ <h2>Defined Under Namespace</h2>
9393

9494

9595

96-
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Merge/AstNode.html" title="Ast::Merge::AstNode (class)">AstNode</a></span>, <span class='object_link'><a href="Merge/ConflictResolverBase.html" title="Ast::Merge::ConflictResolverBase (class)">ConflictResolverBase</a></span>, <span class='object_link'><a href="Merge/ContentMatchRefiner.html" title="Ast::Merge::ContentMatchRefiner (class)">ContentMatchRefiner</a></span>, <span class='object_link'><a href="Merge/DestinationParseError.html" title="Ast::Merge::DestinationParseError (class)">DestinationParseError</a></span>, <span class='object_link'><a href="Merge/Error.html" title="Ast::Merge::Error (class)">Error</a></span>, <span class='object_link'><a href="Merge/FreezeNodeBase.html" title="Ast::Merge::FreezeNodeBase (class)">FreezeNodeBase</a></span>, <span class='object_link'><a href="Merge/InjectionPoint.html" title="Ast::Merge::InjectionPoint (class)">InjectionPoint</a></span>, <span class='object_link'><a href="Merge/InjectionPointFinder.html" title="Ast::Merge::InjectionPointFinder (class)">InjectionPointFinder</a></span>, <span class='object_link'><a href="Merge/MatchRefinerBase.html" title="Ast::Merge::MatchRefinerBase (class)">MatchRefinerBase</a></span>, <span class='object_link'><a href="Merge/MatchScoreBase.html" title="Ast::Merge::MatchScoreBase (class)">MatchScoreBase</a></span>, <span class='object_link'><a href="Merge/MergeResultBase.html" title="Ast::Merge::MergeResultBase (class)">MergeResultBase</a></span>, <span class='object_link'><a href="Merge/MergerConfig.html" title="Ast::Merge::MergerConfig (class)">MergerConfig</a></span>, <span class='object_link'><a href="Merge/NavigableStatement.html" title="Ast::Merge::NavigableStatement (class)">NavigableStatement</a></span>, <span class='object_link'><a href="Merge/NodeWrapperBase.html" title="Ast::Merge::NodeWrapperBase (class)">NodeWrapperBase</a></span>, <span class='object_link'><a href="Merge/ParseError.html" title="Ast::Merge::ParseError (class)">ParseError</a></span>, <span class='object_link'><a href="Merge/PartialTemplateMergerBase.html" title="Ast::Merge::PartialTemplateMergerBase (class)">PartialTemplateMergerBase</a></span>, <span class='object_link'><a href="Merge/PlaceholderCollisionError.html" title="Ast::Merge::PlaceholderCollisionError (class)">PlaceholderCollisionError</a></span>, <span class='object_link'><a href="Merge/SmartMergerBase.html" title="Ast::Merge::SmartMergerBase (class)">SmartMergerBase</a></span>, <span class='object_link'><a href="Merge/TemplateParseError.html" title="Ast::Merge::TemplateParseError (class)">TemplateParseError</a></span>
96+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Merge/AstNode.html" title="Ast::Merge::AstNode (class)">AstNode</a></span>, <span class='object_link'><a href="Merge/ConflictResolverBase.html" title="Ast::Merge::ConflictResolverBase (class)">ConflictResolverBase</a></span>, <span class='object_link'><a href="Merge/ContentMatchRefiner.html" title="Ast::Merge::ContentMatchRefiner (class)">ContentMatchRefiner</a></span>, <span class='object_link'><a href="Merge/DestinationParseError.html" title="Ast::Merge::DestinationParseError (class)">DestinationParseError</a></span>, <span class='object_link'><a href="Merge/EmitterBase.html" title="Ast::Merge::EmitterBase (class)">EmitterBase</a></span>, <span class='object_link'><a href="Merge/Error.html" title="Ast::Merge::Error (class)">Error</a></span>, <span class='object_link'><a href="Merge/FreezeNodeBase.html" title="Ast::Merge::FreezeNodeBase (class)">FreezeNodeBase</a></span>, <span class='object_link'><a href="Merge/InjectionPoint.html" title="Ast::Merge::InjectionPoint (class)">InjectionPoint</a></span>, <span class='object_link'><a href="Merge/InjectionPointFinder.html" title="Ast::Merge::InjectionPointFinder (class)">InjectionPointFinder</a></span>, <span class='object_link'><a href="Merge/MatchRefinerBase.html" title="Ast::Merge::MatchRefinerBase (class)">MatchRefinerBase</a></span>, <span class='object_link'><a href="Merge/MatchScoreBase.html" title="Ast::Merge::MatchScoreBase (class)">MatchScoreBase</a></span>, <span class='object_link'><a href="Merge/MergeResultBase.html" title="Ast::Merge::MergeResultBase (class)">MergeResultBase</a></span>, <span class='object_link'><a href="Merge/MergerConfig.html" title="Ast::Merge::MergerConfig (class)">MergerConfig</a></span>, <span class='object_link'><a href="Merge/NavigableStatement.html" title="Ast::Merge::NavigableStatement (class)">NavigableStatement</a></span>, <span class='object_link'><a href="Merge/NodeWrapperBase.html" title="Ast::Merge::NodeWrapperBase (class)">NodeWrapperBase</a></span>, <span class='object_link'><a href="Merge/ParseError.html" title="Ast::Merge::ParseError (class)">ParseError</a></span>, <span class='object_link'><a href="Merge/PartialTemplateMergerBase.html" title="Ast::Merge::PartialTemplateMergerBase (class)">PartialTemplateMergerBase</a></span>, <span class='object_link'><a href="Merge/PlaceholderCollisionError.html" title="Ast::Merge::PlaceholderCollisionError (class)">PlaceholderCollisionError</a></span>, <span class='object_link'><a href="Merge/SmartMergerBase.html" title="Ast::Merge::SmartMergerBase (class)">SmartMergerBase</a></span>, <span class='object_link'><a href="Merge/TemplateParseError.html" title="Ast::Merge::TemplateParseError (class)">TemplateParseError</a></span>
9797

9898

9999
</p>
@@ -158,7 +158,7 @@ <h2>
158158
</div>
159159

160160
<div id="footer">
161-
Generated on Mon Jan 5 22:05:05 2026 by
161+
Generated on Thu Jan 8 04:50:51 2026 by
162162
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
163163
0.9.38 (ruby-4.0.0).
164164
</div>

docs/Ast/Merge/AstNode.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2407,7 +2407,7 @@ <h3 class="signature " id="unwrap-instance_method">
24072407
</div>
24082408

24092409
<div id="footer">
2410-
Generated on Mon Jan 5 22:05:05 2026 by
2410+
Generated on Thu Jan 8 04:50:51 2026 by
24112411
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
24122412
0.9.38 (ruby-4.0.0).
24132413
</div>

0 commit comments

Comments
 (0)