ast-merge 4.0.2 → 4.0.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/CHANGELOG.md +23 -0
- data/README.md +18 -15
- data/lib/ast/merge/rspec/dependency_tags.rb +15 -0
- data/lib/ast/merge/rspec/merge_gem_registry.rb +42 -0
- data/lib/ast/merge/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +7 -7
- 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: 72301b52fa4f37e5f4224041c08fe9ace0117f84521e37b8b1c8b354bc5af500
|
|
4
|
+
data.tar.gz: 16c3d01ce0e56c17998fcf7e0e4629832fc52db44dc64d07b897004e9981f6ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0ab85926e6944d30500a5ced0144c86fa966d6a18252cda9c6c8091e4827e62b8743119be97944c30145d9a1e64f8c2fad52c5e9fd6f50d09b3ff70417ce64d
|
|
7
|
+
data.tar.gz: f57d3ce4c7cdb62dbbe59493581bbe2fb721a62ea029bf327a527edd2e76d394be554b34ad97fe68a82f009abf56e39225994835f03315663b8c3b137e56a459
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,29 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [4.0.3] - 2026-01-19
|
|
34
|
+
|
|
35
|
+
- TAG: [v4.0.3][4.0.3t]
|
|
36
|
+
- COVERAGE: 97.30% -- 2739/2815 lines in 53 files
|
|
37
|
+
- BRANCH COVERAGE: 89.84% -- 893/994 branches in 53 files
|
|
38
|
+
- 98.81% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- **`Ast::Merge::RSpec::MergeGemRegistry.register_known_gems`**: Selective registration of known merge gems for RSpec dependency tags
|
|
43
|
+
- Allows test suites to explicitly register only the merge gems they need, avoiding overhead of registering all known gems
|
|
44
|
+
- Usage in `spec/config/tree_haver.rb`: `MergeGemRegistry.register_known_gems(:prism_merge, :commonmarker_merge)`
|
|
45
|
+
- Enables proper RSpec tag-based test skipping for optional merge gem dependencies
|
|
46
|
+
- Example: Tests tagged with `:prism_merge` are automatically skipped when prism-merge isn't available
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- Upgrade to [tree_haver v5.0.2](https://github.com/kettle-rb/tree_haver/releases/tag/v5.0.2)
|
|
51
|
+
- **RSpec dependency tag load order pattern**: Merge gems now load tree_haver and dependency tags early via `spec/config/tree_haver.rb`
|
|
52
|
+
- Ensures `TreeHaver::RSpec::DependencyTags` is loaded before gems register themselves
|
|
53
|
+
- Pattern: Load tree_haver/rspec → Load ast/merge/rspec → Register known gems → Load library
|
|
54
|
+
- Applied to markdown-merge and markly-merge; other merge gems should follow this pattern
|
|
55
|
+
|
|
33
56
|
## [4.0.2] - 2026-01-12
|
|
34
57
|
|
|
35
58
|
- TAG: [v4.0.2][4.0.2t]
|
data/README.md
CHANGED
|
@@ -62,7 +62,7 @@ The `*-merge` gem family provides intelligent, AST-based merging for various fil
|
|
|
62
62
|
|
|
63
63
|
| Gem | Version | CI | | Language<br>/ Format | Parser Backend(s) | Description |
|
|
64
64
|
|------------------------------------------|----------------------------------------------------------------|--------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|-------------|
|
|
65
|
-
| [tree_haver][tree_haver] | [![Version][tree_haver-gem-i]][tree_haver-gem] | [![Version][tree_haver-ci-i]][tree_haver-ci] | Multi | MRI C, Rust, FFI, Java, Prism, Psych, Commonmarker, Markly, Citrus, Parslet
|
|
65
|
+
| [tree_haver][tree_haver] | [![Version][tree_haver-gem-i]][tree_haver-gem] | [![Version][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) |
|
|
66
66
|
| [ast-merge][ast-merge] | [![Version][ast-merge-gem-i]][ast-merge-gem] | [![Version][ast-merge-ci-i]][ast-merge-ci] | Text | internal | **Infrastructure**: Shared base classes and merge logic for all `*-merge` gems |
|
|
67
67
|
| [bash-merge][bash-merge] | [![Version][bash-merge-gem-i]][bash-merge-gem] | [![Version][bash-merge-ci-i]][bash-merge-ci] | Bash | [tree-sitter-bash][ts-bash] (via tree_haver) | Smart merge for Bash scripts |
|
|
68
68
|
| [commonmarker-merge][commonmarker-merge] | [![Version][commonmarker-merge-gem-i]][commonmarker-merge-gem] | [![Version][commonmarker-merge-ci-i]][commonmarker-merge-ci] | Markdown | [Commonmarker][commonmarker] (via tree_haver) | Smart merge for Markdown (CommonMark via comrak Rust) |
|
|
@@ -80,18 +80,18 @@ The `*-merge` gem family provides intelligent, AST-based merging for various fil
|
|
|
80
80
|
|
|
81
81
|
tree_haver supports multiple parsing backends, but not all backends work on all Ruby platforms:
|
|
82
82
|
|
|
83
|
-
| Platform 👉️<br> TreeHaver Backend 👇️
|
|
84
|
-
|
|
85
|
-
| **MRI** ([ruby_tree_sitter][ruby_tree_sitter])
|
|
86
|
-
| **Rust** ([tree_stump][tree_stump])
|
|
87
|
-
| **FFI**
|
|
88
|
-
| **Java** ([jtreesitter][jtreesitter])
|
|
89
|
-
| **Prism**
|
|
90
|
-
| **Psych**
|
|
91
|
-
| **Citrus**
|
|
92
|
-
| **Parslet**
|
|
93
|
-
| **Commonmarker**
|
|
94
|
-
| **Markly**
|
|
83
|
+
| Platform 👉️<br> TreeHaver Backend 👇️ | MRI | JRuby | TruffleRuby | Notes |
|
|
84
|
+
|-------------------------------------------------|:---:|:-----:|:-----------:|----------------------------------------------------------------------------|
|
|
85
|
+
| **MRI** ([ruby_tree_sitter][ruby_tree_sitter]) | ✅ | ❌ | ❌ | C extension, MRI only |
|
|
86
|
+
| **Rust** ([tree_stump][tree_stump]) | ✅ | ❌ | ❌ | Rust extension via magnus/rb-sys, MRI only |
|
|
87
|
+
| **FFI** ([ffi][ffi]) | ✅ | ✅ | ❌ | TruffleRuby's FFI doesn't support `STRUCT_BY_VALUE` |
|
|
88
|
+
| **Java** ([jtreesitter][jtreesitter]) | ❌ | ✅ | ❌ | JRuby only, requires grammar JARs |
|
|
89
|
+
| **Prism** ([prism][prism]) | ✅ | ✅ | ✅ | Ruby parsing, stdlib in Ruby 3.4+ |
|
|
90
|
+
| **Psych** ([psych][psych]) | ✅ | ✅ | ✅ | YAML parsing, stdlib |
|
|
91
|
+
| **Citrus** ([citrus][citrus]) | ✅ | ✅ | ✅ | Pure Ruby PEG parser, no native dependencies |
|
|
92
|
+
| **Parslet** ([parslet][parslet]) | ✅ | ✅ | ✅ | Pure Ruby PEG parser, no native dependencies |
|
|
93
|
+
| **Commonmarker** ([commonmarker][commonmarker]) | ✅ | ❌ | ❓ | Rust extension for Markdown (via [commonmarker-merge][commonmarker-merge]) |
|
|
94
|
+
| **Markly** ([markly][markly]) | ✅ | ❌ | ❓ | C extension for Markdown (via [markly-merge][markly-merge]) |
|
|
95
95
|
|
|
96
96
|
**Legend**: ✅ = Works, ❌ = Does not work, ❓ = Untested
|
|
97
97
|
|
|
@@ -185,6 +185,7 @@ tree_haver supports multiple parsing backends, but not all backends work on all
|
|
|
185
185
|
[kettle-jem-ci]: https://github.com/kettle-rb/kettle-jem/actions/workflows/current.yml
|
|
186
186
|
[prism]: https://github.com/ruby/prism
|
|
187
187
|
[psych]: https://github.com/ruby/psych
|
|
188
|
+
[ffi]: https://github.com/ffi/ffi
|
|
188
189
|
[ts-json]: https://github.com/tree-sitter/tree-sitter-json
|
|
189
190
|
[ts-jsonc]: https://gitlab.com/WhyNotHugo/tree-sitter-jsonc
|
|
190
191
|
[ts-bash]: https://github.com/tree-sitter/tree-sitter-bash
|
|
@@ -199,6 +200,8 @@ tree_haver supports multiple parsing backends, but not all backends work on all
|
|
|
199
200
|
[ruby_tree_sitter]: https://github.com/Faveod/ruby-tree-sitter
|
|
200
201
|
[tree_stump]: https://github.com/joker1007/tree_stump
|
|
201
202
|
[jtreesitter]: https://central.sonatype.com/artifact/io.github.tree-sitter/jtreesitter
|
|
203
|
+
[citrus]: https://github.com/mjackson/citrus
|
|
204
|
+
[parslet]: https://github.com/kschiess/parslet
|
|
202
205
|
|
|
203
206
|
### Architecture: tree\_haver + ast-merge
|
|
204
207
|
|
|
@@ -788,7 +791,7 @@ Support us with a monthly donation and help us continue our activities. \[[Becom
|
|
|
788
791
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
789
792
|
|
|
790
793
|
<!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
|
|
791
|
-
No backers yet. Be the first
|
|
794
|
+
No backers yet. Be the first!
|
|
792
795
|
<!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
|
|
793
796
|
|
|
794
797
|
### Open Collective for Organizations
|
|
@@ -798,7 +801,7 @@ Become a sponsor and get your logo on our README on GitHub with a link to your s
|
|
|
798
801
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
799
802
|
|
|
800
803
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
|
|
801
|
-
No sponsors yet. Be the first
|
|
804
|
+
No sponsors yet. Be the first!
|
|
802
805
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
|
|
803
806
|
|
|
804
807
|
[kettle-readme-backers]: https://github.com/kettle-rb/ast-merge/blob/main/exe/kettle-readme-backers
|
|
@@ -84,6 +84,21 @@ module Ast
|
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
+
# NOTE: Known merge gems (KNOWN_GEMS) are NOT automatically registered here.
|
|
88
|
+
# Each test suite should explicitly register only the gems it needs in its
|
|
89
|
+
# spec/config/tree_haver.rb file using:
|
|
90
|
+
#
|
|
91
|
+
# Ast::Merge::RSpec::MergeGemRegistry.register_known_gems(:gem1, :gem2, ...)
|
|
92
|
+
#
|
|
93
|
+
# This avoids wasting time registering gems that aren't needed for a particular
|
|
94
|
+
# test suite. Only the gems that are actually required for testing should be registered.
|
|
95
|
+
#
|
|
96
|
+
# Example for a gem that needs to test with optional markdown backends:
|
|
97
|
+
# Ast::Merge::RSpec::MergeGemRegistry.register_known_gems(
|
|
98
|
+
# :commonmarker_merge,
|
|
99
|
+
# :markly_merge
|
|
100
|
+
# )
|
|
101
|
+
|
|
87
102
|
# Configure RSpec with dependency-based exclusion filters
|
|
88
103
|
RSpec.configure do |config|
|
|
89
104
|
deps = Ast::Merge::RSpec::DependencyTags
|
|
@@ -253,6 +253,48 @@ module Ast
|
|
|
253
253
|
end
|
|
254
254
|
end
|
|
255
255
|
|
|
256
|
+
# Register one or more known gems for RSpec dependency tag support
|
|
257
|
+
#
|
|
258
|
+
# This allows test suites to explicitly register only the merge gems they need
|
|
259
|
+
# for their tests, avoiding the overhead of registering all known gems.
|
|
260
|
+
#
|
|
261
|
+
# @param gem_names [Array<Symbol>] list of gem names from KNOWN_GEMS to register
|
|
262
|
+
# @return [void]
|
|
263
|
+
#
|
|
264
|
+
# @example In spec/config/tree_haver.rb
|
|
265
|
+
# # Only register the markdown merge gems that markly-merge tests depend on
|
|
266
|
+
# Ast::Merge::RSpec::MergeGemRegistry.register_known_gems(:prism_merge)
|
|
267
|
+
#
|
|
268
|
+
# @example Register multiple gems
|
|
269
|
+
# Ast::Merge::RSpec::MergeGemRegistry.register_known_gems(
|
|
270
|
+
# :commonmarker_merge,
|
|
271
|
+
# :markly_merge
|
|
272
|
+
# )
|
|
273
|
+
def register_known_gems(*gem_names)
|
|
274
|
+
gem_names.each do |tag_name|
|
|
275
|
+
tag_sym = tag_name.to_sym
|
|
276
|
+
|
|
277
|
+
# Skip if not in KNOWN_GEMS
|
|
278
|
+
unless KNOWN_GEMS.key?(tag_sym)
|
|
279
|
+
warn("Unknown gem: #{tag_name}. Available: #{KNOWN_GEMS.keys.join(", ")}")
|
|
280
|
+
next
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# Skip if already registered
|
|
284
|
+
next if registered?(tag_sym)
|
|
285
|
+
|
|
286
|
+
metadata = KNOWN_GEMS[tag_sym]
|
|
287
|
+
register(
|
|
288
|
+
tag_sym,
|
|
289
|
+
require_path: metadata[:require_path],
|
|
290
|
+
merger_class: metadata[:merger_class],
|
|
291
|
+
test_source: metadata[:test_source],
|
|
292
|
+
category: metadata[:category],
|
|
293
|
+
skip_instantiation: metadata[:skip_instantiation],
|
|
294
|
+
)
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
256
298
|
# Get all registered gem tag names (including pre-configured known gems)
|
|
257
299
|
#
|
|
258
300
|
# @return [Array<Symbol>] list of registered tag names
|
data/lib/ast/merge/version.rb
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ast-merge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.0.
|
|
4
|
+
version: 4.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -66,7 +66,7 @@ dependencies:
|
|
|
66
66
|
version: '5.0'
|
|
67
67
|
- - ">="
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 5.0.
|
|
69
|
+
version: 5.0.2
|
|
70
70
|
type: :runtime
|
|
71
71
|
prerelease: false
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -76,7 +76,7 @@ dependencies:
|
|
|
76
76
|
version: '5.0'
|
|
77
77
|
- - ">="
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: 5.0.
|
|
79
|
+
version: 5.0.2
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: kettle-dev
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -382,10 +382,10 @@ licenses:
|
|
|
382
382
|
- MIT
|
|
383
383
|
metadata:
|
|
384
384
|
homepage_uri: https://ast-merge.galtzo.com/
|
|
385
|
-
source_code_uri: https://github.com/kettle-rb/ast-merge/tree/v4.0.
|
|
386
|
-
changelog_uri: https://github.com/kettle-rb/ast-merge/blob/v4.0.
|
|
385
|
+
source_code_uri: https://github.com/kettle-rb/ast-merge/tree/v4.0.3
|
|
386
|
+
changelog_uri: https://github.com/kettle-rb/ast-merge/blob/v4.0.3/CHANGELOG.md
|
|
387
387
|
bug_tracker_uri: https://github.com/kettle-rb/ast-merge/issues
|
|
388
|
-
documentation_uri: https://www.rubydoc.info/gems/ast-merge/4.0.
|
|
388
|
+
documentation_uri: https://www.rubydoc.info/gems/ast-merge/4.0.3
|
|
389
389
|
funding_uri: https://github.com/sponsors/pboling
|
|
390
390
|
wiki_uri: https://github.com/kettle-rb/ast-merge/wiki
|
|
391
391
|
news_uri: https://www.railsbling.com/tags/ast-merge
|
|
@@ -414,7 +414,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
414
414
|
- !ruby/object:Gem::Version
|
|
415
415
|
version: '0'
|
|
416
416
|
requirements: []
|
|
417
|
-
rubygems_version: 4.0.
|
|
417
|
+
rubygems_version: 4.0.4
|
|
418
418
|
specification_version: 4
|
|
419
419
|
summary: "☯️ Shared infrastructure for the *-merge gem family"
|
|
420
420
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|