diff --git a/CHANGELOG.md b/CHANGELOG.md index 98de0f2e6..534362553 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,8 @@ Please file a bug if you notice a violation of semantic versioning. - Extend the opt-in Rust Bash provider to preserve literal-title test_expect_success calls. +- markdown-merge: an unspecified (`:auto`) Markdown backend now prefers markly, then commonmarker, then kramdown, and uses kreuzberg-language-pack only as the last resort; optional backend gems are loaded markly first. The reported `available_markdown_backends` order is unchanged. + ### Deprecated ### Removed diff --git a/gems/kettle-jem/CHANGELOG.md b/gems/kettle-jem/CHANGELOG.md index 07180ba9f..85233249a 100644 --- a/gems/kettle-jem/CHANGELOG.md +++ b/gems/kettle-jem/CHANGELOG.md @@ -61,6 +61,13 @@ Please file a bug if you notice a violation of semantic versioning. ### Removed +- The `commonmarker-merge` and `kramdown-merge` runtime dependencies, and their + entries in the local sibling and `templating_local.gemfile` path lists. + kettle-jem merges Markdown with markly (via `ast-crispr-markdown-markly` and + `markly-merge`); other Markdown backends are still used when a project installs + them, but are no longer forced on every bundle. This also stops `commonmarker`'s + native extension from being compiled, which fails on ruby-head. + ### Fixed - The packaged `Gemfile` no longer overrides `git_source(:github)` with an SSH diff --git a/gems/kettle-jem/Gemfile b/gems/kettle-jem/Gemfile index 0a9fd7ed2..9b48a60a8 100644 --- a/gems/kettle-jem/Gemfile +++ b/gems/kettle-jem/Gemfile @@ -38,10 +38,8 @@ direct_sibling_gems = %w[ ast-merge bash-merge citrus-toml-merge - commonmarker-merge dotenv-merge json-merge - kramdown-merge markdown-merge markly-merge prism-merge diff --git a/gems/kettle-jem/Gemfile.lock b/gems/kettle-jem/Gemfile.lock index 3714f7efc..264bc51f4 100644 --- a/gems/kettle-jem/Gemfile.lock +++ b/gems/kettle-jem/Gemfile.lock @@ -17,15 +17,13 @@ PATH ast-merge (~> 7.1, >= 7.1.8) bash-merge (~> 7.1, >= 7.1.8) citrus-toml-merge (~> 7.1, >= 7.1.8) - commonmarker-merge (~> 7.1, >= 7.1.8) dotenv-merge (~> 7.1, >= 7.1.8) json-merge (~> 7.1, >= 7.1.8) kettle-changelog (~> 1.0, >= 1.0.7) kettle-dev (~> 3.0, >= 3.0.34) kettle-gha-pins (~> 0.3, >= 0.3.14) kettle-ndjson (~> 0.1, >= 0.1.13) - kettle-rb (~> 0.1, >= 0.1.14) - kramdown-merge (~> 7.1, >= 7.1.8) + kettle-rb (~> 0.1, >= 0.1.11) markdown-merge (~> 7.1, >= 7.1.8) markly-merge (~> 7.1, >= 7.1.8) parslet (~> 2.0) @@ -116,14 +114,6 @@ PATH toml-rb (~> 4.1) version_gem (~> 1.1, >= 1.1.15) -PATH - remote: /var/home/pboling/src/my/structuredmerge/ruby/gems/commonmarker-merge - specs: - commonmarker-merge (7.1.9) - commonmarker (~> 2.2) - markdown-merge (= 7.1.9) - version_gem (~> 1.1, >= 1.1.15) - PATH remote: /var/home/pboling/src/my/structuredmerge/ruby/gems/dotenv-merge specs: @@ -158,14 +148,6 @@ PATH tree_haver (= 7.1.9) version_gem (~> 1.1, >= 1.1.15) -PATH - remote: /var/home/pboling/src/my/structuredmerge/ruby/gems/kramdown-merge - specs: - kramdown-merge (7.1.9) - kramdown (~> 2.5) - markdown-merge (= 7.1.9) - version_gem (~> 1.1, >= 1.1.15) - PATH remote: /var/home/pboling/src/my/structuredmerge/ruby/gems/markdown-merge specs: @@ -337,12 +319,6 @@ GEM command_kit-completion (0.3.0) command_kit (~> 0.1) completely (~> 0.6) - commonmarker (2.10.0-aarch64-linux) - commonmarker (2.10.0-aarch64-linux-musl) - commonmarker (2.10.0-arm64-darwin) - commonmarker (2.10.0-x86_64-darwin) - commonmarker (2.10.0-x86_64-linux) - commonmarker (2.10.0-x86_64-linux-musl) completely (0.8.0) colsole (~> 1.0.0) erb @@ -779,7 +755,6 @@ DEPENDENCIES bundler-audit (~> 0.9.3) cgi (~> 0.5) citrus-toml-merge! - commonmarker-merge! debug (>= 1.1) dotenv-merge! erb (~> 6.0, >= 6.0.7) @@ -796,7 +771,6 @@ DEPENDENCIES kettle-soup-cover (~> 3.0, >= 3.0.10) kettle-test (~> 2.0, >= 2.0.21) kramdown (~> 2.5, >= 2.5.2) - kramdown-merge! kramdown-parser-gfm (~> 1.1) markdown-merge! markly-merge! @@ -867,13 +841,6 @@ CHECKSUMS colsole (1.0.1) sha256=7632a300ace2db877c024ffe413c684954cf37e41264b75ace9f456c9d657b02 command_kit (0.6.0) sha256=e57f29cf5aee4f571c210041d910ff87f85749e42dfe75139c57cc93d84afa90 command_kit-completion (0.3.0) sha256=d9c498555125bcdd0c9d869f2a64a25a2f0205102a7f28c81c7937ae633ea737 - commonmarker (2.10.0-aarch64-linux) sha256=eeb167dea203dee066eb0dd99b3fd2deb526c8b5e7297ad385f7a5d60f869478 - commonmarker (2.10.0-aarch64-linux-musl) sha256=e95d9e87ea6306e21ffa11855a7bb55518538143b23a227fe3bb00b41873ce25 - commonmarker (2.10.0-arm64-darwin) sha256=39ecc891d1e4308b5233cc28b40383de854a2bfbefe17d68e49174347a8aa79e - commonmarker (2.10.0-x86_64-darwin) sha256=01e0830ed0319825ecdc16411c90acd3f661d1568dfc178731b3f64d0ce2363d - commonmarker (2.10.0-x86_64-linux) sha256=945c510c0bfca9022245928e2248468fe3ddad58c939be0c37b20082cc392880 - commonmarker (2.10.0-x86_64-linux-musl) sha256=288cd4fb9f17eed2ffa73551ef241dcf594e0f484b2aee2a0999540333c0618e - commonmarker-merge (7.1.9) completely (0.8.0) sha256=e493cd5d84805f47917a41f277ecbfe5f35363bed670be5a957d3acaed8c6c5e concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1 date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 @@ -914,7 +881,6 @@ CHECKSUMS kettle-test (2.0.21) sha256=2ab0dd1a1d11568f8fba61084ebef84717cd4dff028a527777c92d4e77f0e9c5 kettle-wash (0.1.6) sha256=934dfb955f41b89540fe5df87614cf718a73ebc1696de7c50e7940a4695753ed kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa - kramdown-merge (7.1.9) kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0 lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 diff --git a/gems/kettle-jem/gemfiles/modular/templating_local.gemfile b/gems/kettle-jem/gemfiles/modular/templating_local.gemfile index 2ef66ef42..d5297ef19 100644 --- a/gems/kettle-jem/gemfiles/modular/templating_local.gemfile +++ b/gems/kettle-jem/gemfiles/modular/templating_local.gemfile @@ -36,13 +36,11 @@ structuredmerge_local_gems = %w[ ast-template bash-merge binary-merge - commonmarker-merge citrus-toml-merge dotenv-merge go-merge html-merge json-merge - kramdown-merge markdown-merge markly-merge parslet-toml-merge diff --git a/gems/kettle-jem/kettle-jem.gemspec b/gems/kettle-jem/kettle-jem.gemspec index e6f65e65d..f451ac9f9 100644 --- a/gems/kettle-jem/kettle-jem.gemspec +++ b/gems/kettle-jem/kettle-jem.gemspec @@ -101,15 +101,13 @@ Gem::Specification.new do |spec| spec.add_dependency("ast-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("bash-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("citrus-toml-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 - spec.add_dependency("commonmarker-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("dotenv-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("json-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("kettle-changelog", "~> 1.0", ">= 1.0.7") # ruby >= 4.0.0 spec.add_dependency("kettle-dev", "~> 3.0", ">= 3.0.34") # ruby >= 2.3.0 spec.add_dependency("kettle-gha-pins", "~> 0.3", ">= 0.3.14") # ruby >= 2.4.0 spec.add_dependency("kettle-ndjson", "~> 0.1", ">= 0.1.13") # ruby >= 2.4.0 - spec.add_dependency("kettle-rb", "~> 0.1", ">= 0.1.14") # ruby >= 1.8.7 - spec.add_dependency("kramdown-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 + spec.add_dependency("kettle-rb", "~> 0.1", ">= 0.1.11") # ruby >= 1.8.7 spec.add_dependency("markdown-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("markly-merge", "~> 7.1", ">= 7.1.8") # ruby >= 4.0.0 spec.add_dependency("parslet", "~> 2.0") # ruby >= 2.6.0 diff --git a/gems/kettle-jem/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example b/gems/kettle-jem/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example index 92ba37b75..a0908a72d 100644 --- a/gems/kettle-jem/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example +++ b/gems/kettle-jem/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example @@ -13,14 +13,12 @@ structuredmerge_local_gems = %w[ ast-template bash-merge binary-merge - commonmarker-merge citrus-toml-merge dotenv-merge go-merge html-merge json-merge kettle-jem - kramdown-merge markdown-merge markly-merge parslet-toml-merge diff --git a/gems/markdown-merge/.rubocop_gradual.lock b/gems/markdown-merge/.rubocop_gradual.lock index b714291bc..cdad8c198 100644 --- a/gems/markdown-merge/.rubocop_gradual.lock +++ b/gems/markdown-merge/.rubocop_gradual.lock @@ -93,53 +93,52 @@ "lib/markdown-merge.rb:2827716783": [ [1, 1, 0, "Naming/FileName: The name of this source file (`markdown-merge.rb`) should use snake_case.", 5381] ], - "lib/markdown/merge.rb:2631994489": [ + "lib/markdown/merge.rb:1534005504": [ [8, 3, 12, "Style/Documentation: Missing top-level documentation comment for `module Markdown::Merge`.", 2866359175], - [8, 3, 25562, "Metrics/ModuleLength: Module has too many lines. [591/100]", 2772054550], - [20, 5, 16, "Style/Documentation: Missing top-level documentation comment for `class Markdown::Merge::ParseError`.", 362242086], - [153, 5, 1014, "Metrics/MethodLength: Method has too many lines. [24/10]", 650805533], - [179, 5, 73, "Lint/ShadowedException: Do not shadow rescued Exceptions.", 2046499071], - [183, 5, 678, "Metrics/AbcSize: Assignment Branch Condition size for `match_markdown_owners` is too high. [<10, 23, 8> 26.32/17]", 2124140148], - [183, 5, 678, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `match_markdown_owners` is too high. [9/7]", 2124140148], - [183, 5, 678, "Metrics/PerceivedComplexity: Perceived complexity for `match_markdown_owners` is too high. [9/8]", 2124140148], - [196, 5, 1188, "Metrics/AbcSize: Assignment Branch Condition size for `merge_markdown` is too high. [<10, 25, 8> 28.09/17]", 3592129796], - [196, 5, 1188, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `merge_markdown` is too high. [9/7]", 3592129796], - [196, 5, 1188, "Metrics/MethodLength: Method has too many lines. [23/10]", 3592129796], - [196, 5, 1188, "Metrics/PerceivedComplexity: Perceived complexity for `merge_markdown` is too high. [9/8]", 3592129796], - [225, 5, 513, "Metrics/MethodLength: Method has too many lines. [13/10]", 912081106], - [243, 5, 747, "Metrics/MethodLength: Method has too many lines. [16/10]", 3172863125], - [274, 5, 1513, "Metrics/AbcSize: Assignment Branch Condition size for `apply_markdown_delegated_child_outputs` is too high. [<16, 37, 9> 41.3/17]", 3320736661], - [274, 5, 1513, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `apply_markdown_delegated_child_outputs` is too high. [10/7]", 3320736661], - [274, 5, 1513, "Metrics/MethodLength: Method has too many lines. [30/10]", 3320736661], - [274, 5, 1513, "Metrics/PerceivedComplexity: Perceived complexity for `apply_markdown_delegated_child_outputs` is too high. [10/8]", 3320736661], - [312, 5, 1058, "Metrics/MethodLength: Method has too many lines. [23/10]", 2000305522], - [339, 5, 1103, "Metrics/MethodLength: Method has too many lines. [23/10]", 2615729942], - [339, 52, 144, "Metrics/ParameterLists: Avoid parameter lists longer than 5 parameters. [6/5]", 3050457682], - [367, 5, 817, "Metrics/MethodLength: Method has too many lines. [13/10]", 322304706], - [372, 121, 74, "Layout/LineLength: Line is too long. [194/120]", 2378183959], - [385, 5, 805, "Metrics/MethodLength: Method has too many lines. [13/10]", 935244360], - [390, 121, 66, "Layout/LineLength: Line is too long. [186/120]", 2974266470], - [403, 5, 722, "Metrics/MethodLength: Method has too many lines. [12/10]", 1758487766], - [408, 121, 17, "Layout/LineLength: Line is too long. [137/120]", 3013228499], - [420, 5, 730, "Metrics/MethodLength: Method has too many lines. [12/10]", 3297037131], - [425, 121, 17, "Layout/LineLength: Line is too long. [137/120]", 3013228499], - [451, 5, 1584, "Metrics/AbcSize: Assignment Branch Condition size for `collect_markdown_owners` is too high. [<21, 32, 13> 40.42/17]", 572024212], - [451, 5, 1584, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `collect_markdown_owners` is too high. [11/7]", 572024212], - [451, 5, 1584, "Metrics/MethodLength: Method has too many lines. [45/10]", 572024212], - [451, 5, 1584, "Metrics/PerceivedComplexity: Perceived complexity for `collect_markdown_owners` is too high. [11/8]", 572024212], - [505, 5, 1147, "Metrics/AbcSize: Assignment Branch Condition size for `markdown_owner_start_indices` is too high. [<21, 22, 11> 32.34/17]", 12516264], - [505, 5, 1147, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `markdown_owner_start_indices` is too high. [9/7]", 12516264], - [505, 5, 1147, "Metrics/MethodLength: Method has too many lines. [33/10]", 12516264], - [505, 5, 1147, "Metrics/PerceivedComplexity: Perceived complexity for `markdown_owner_start_indices` is too high. [9/8]", 12516264], - [546, 5, 602, "Metrics/AbcSize: Assignment Branch Condition size for `collect_markdown_sections` is too high. [<9, 20, 6> 22.74/17]", 1946206422], - [546, 5, 602, "Metrics/MethodLength: Method has too many lines. [14/10]", 1946206422], - [554, 7, 11, "Style/MultilineBlockChain: Avoid multi-line chains of blocks.", 848344986], - [565, 5, 1097, "Metrics/AbcSize: Assignment Branch Condition size for `markdown_fence_ranges` is too high. [<19, 21, 11> 30.38/17]", 2035260313], - [565, 5, 1097, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `markdown_fence_ranges` is too high. [8/7]", 2035260313], - [565, 5, 1097, "Metrics/MethodLength: Method has too many lines. [31/10]", 2035260313], - [581, 13, 227, "Metrics/BlockNesting: Avoid more than 3 levels of block nesting.", 1054958538], - [603, 5, 332, "Metrics/MethodLength: Method has too many lines. [14/10]", 2041170985], - [639, 5, 549, "Metrics/MethodLength: Method has too many lines. [12/10]", 2513777426] + [8, 3, 25887, "Metrics/ModuleLength: Module has too many lines. [592/100]", 1841984214], + [24, 5, 16, "Style/Documentation: Missing top-level documentation comment for `class Markdown::Merge::ParseError`.", 362242086], + [157, 5, 1014, "Metrics/MethodLength: Method has too many lines. [24/10]", 650805533], + [187, 5, 678, "Metrics/AbcSize: Assignment Branch Condition size for `match_markdown_owners` is too high. [<10, 23, 8> 26.32/17]", 2124140148], + [187, 5, 678, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `match_markdown_owners` is too high. [9/7]", 2124140148], + [187, 5, 678, "Metrics/PerceivedComplexity: Perceived complexity for `match_markdown_owners` is too high. [9/8]", 2124140148], + [200, 5, 1188, "Metrics/AbcSize: Assignment Branch Condition size for `merge_markdown` is too high. [<10, 25, 8> 28.09/17]", 3592129796], + [200, 5, 1188, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `merge_markdown` is too high. [9/7]", 3592129796], + [200, 5, 1188, "Metrics/MethodLength: Method has too many lines. [23/10]", 3592129796], + [200, 5, 1188, "Metrics/PerceivedComplexity: Perceived complexity for `merge_markdown` is too high. [9/8]", 3592129796], + [229, 5, 513, "Metrics/MethodLength: Method has too many lines. [13/10]", 912081106], + [247, 5, 747, "Metrics/MethodLength: Method has too many lines. [16/10]", 3172863125], + [278, 5, 1513, "Metrics/AbcSize: Assignment Branch Condition size for `apply_markdown_delegated_child_outputs` is too high. [<16, 37, 9> 41.3/17]", 3320736661], + [278, 5, 1513, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `apply_markdown_delegated_child_outputs` is too high. [10/7]", 3320736661], + [278, 5, 1513, "Metrics/MethodLength: Method has too many lines. [30/10]", 3320736661], + [278, 5, 1513, "Metrics/PerceivedComplexity: Perceived complexity for `apply_markdown_delegated_child_outputs` is too high. [10/8]", 3320736661], + [316, 5, 1058, "Metrics/MethodLength: Method has too many lines. [23/10]", 2000305522], + [343, 5, 1103, "Metrics/MethodLength: Method has too many lines. [23/10]", 2615729942], + [343, 52, 144, "Metrics/ParameterLists: Avoid parameter lists longer than 5 parameters. [6/5]", 3050457682], + [371, 5, 817, "Metrics/MethodLength: Method has too many lines. [13/10]", 322304706], + [376, 121, 74, "Layout/LineLength: Line is too long. [194/120]", 2378183959], + [389, 5, 805, "Metrics/MethodLength: Method has too many lines. [13/10]", 935244360], + [394, 121, 66, "Layout/LineLength: Line is too long. [186/120]", 2974266470], + [407, 5, 722, "Metrics/MethodLength: Method has too many lines. [12/10]", 1758487766], + [412, 121, 17, "Layout/LineLength: Line is too long. [137/120]", 3013228499], + [424, 5, 730, "Metrics/MethodLength: Method has too many lines. [12/10]", 3297037131], + [429, 121, 17, "Layout/LineLength: Line is too long. [137/120]", 3013228499], + [455, 5, 1584, "Metrics/AbcSize: Assignment Branch Condition size for `collect_markdown_owners` is too high. [<21, 32, 13> 40.42/17]", 572024212], + [455, 5, 1584, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `collect_markdown_owners` is too high. [11/7]", 572024212], + [455, 5, 1584, "Metrics/MethodLength: Method has too many lines. [45/10]", 572024212], + [455, 5, 1584, "Metrics/PerceivedComplexity: Perceived complexity for `collect_markdown_owners` is too high. [11/8]", 572024212], + [509, 5, 1147, "Metrics/AbcSize: Assignment Branch Condition size for `markdown_owner_start_indices` is too high. [<21, 22, 11> 32.34/17]", 12516264], + [509, 5, 1147, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `markdown_owner_start_indices` is too high. [9/7]", 12516264], + [509, 5, 1147, "Metrics/MethodLength: Method has too many lines. [33/10]", 12516264], + [509, 5, 1147, "Metrics/PerceivedComplexity: Perceived complexity for `markdown_owner_start_indices` is too high. [9/8]", 12516264], + [550, 5, 602, "Metrics/AbcSize: Assignment Branch Condition size for `collect_markdown_sections` is too high. [<9, 20, 6> 22.74/17]", 1946206422], + [550, 5, 602, "Metrics/MethodLength: Method has too many lines. [14/10]", 1946206422], + [558, 7, 11, "Style/MultilineBlockChain: Avoid multi-line chains of blocks.", 848344986], + [569, 5, 1097, "Metrics/AbcSize: Assignment Branch Condition size for `markdown_fence_ranges` is too high. [<19, 21, 11> 30.38/17]", 2035260313], + [569, 5, 1097, "Metrics/CyclomaticComplexity: Cyclomatic complexity for `markdown_fence_ranges` is too high. [8/7]", 2035260313], + [569, 5, 1097, "Metrics/MethodLength: Method has too many lines. [31/10]", 2035260313], + [585, 13, 227, "Metrics/BlockNesting: Avoid more than 3 levels of block nesting.", 1054958538], + [607, 5, 332, "Metrics/MethodLength: Method has too many lines. [14/10]", 2041170985], + [643, 5, 549, "Metrics/MethodLength: Method has too many lines. [12/10]", 2513777426] ], "lib/markdown/merge/backend_support.rb:1910609966": [ [6, 5, 7153, "Metrics/ModuleLength: Module has too many lines. [161/100]", 606467501], diff --git a/gems/markdown-merge/lib/markdown/merge.rb b/gems/markdown-merge/lib/markdown/merge.rb index cc3d41a06..0e60276aa 100644 --- a/gems/markdown-merge/lib/markdown/merge.rb +++ b/gems/markdown-merge/lib/markdown/merge.rb @@ -13,6 +13,10 @@ module Merge 'markly' => TreeHaver::BackendReference.new(id: 'markly', family: 'native').freeze, 'kramdown' => TreeHaver::BackendReference.new(id: 'kramdown', family: 'native').freeze }.freeze + # Order in which an unspecified (:auto) backend is chosen from those available. + # Markly is the most capable Markdown parser; the language pack is the last + # resort. BACKEND_REFERENCES keeps the shared fixtures' reporting order. + BACKEND_PREFERENCE = %w[markly commonmarker kramdown kreuzberg-language-pack].freeze BACKEND_REGISTRY = Struct.new(:registered, :mutex).new(false, Mutex.new) class Error < Ast::Merge::Error; end @@ -632,7 +636,7 @@ def resolve_backend(backend) current = TreeHaver.current_backend_id return current if BACKEND_REFERENCES.key?(current.to_s) && markdown_backend_available_for_analysis?(current) - BACKEND_REFERENCES.keys.find { |backend_id| markdown_backend_available_for_analysis?(backend_id) } || + BACKEND_PREFERENCE.find { |backend_id| markdown_backend_available_for_analysis?(backend_id) } || 'kreuzberg-language-pack' end @@ -713,9 +717,10 @@ def unsupported_feature_result(message) Markdown::Merge.register_provider! +# Optional backends: loaded when their gems are installed, never required. %w[ - commonmarker/merge/backend markly/merge/backend + commonmarker/merge/backend ].each do |feature| require feature rescue LoadError