kramdown-merge 7.0.0 → 7.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c872d56167e1ad4288b96ed40cbd44143bbd97e1ec58028233aaa5dad8ba6687
4
- data.tar.gz: 572a769bdab66bb6d7fc720401781b6ac45322fe785732959ebe94a4451c1cf5
3
+ metadata.gz: 5f7a72dc6fc3bf5dd8e1cf8fcfbe87985f8d1c76e40e16427249e9dd78644216
4
+ data.tar.gz: a5410ac7007abffd6af670d598230eb03825d1b25f0c2f9044d1f99a74f8ef4b
5
5
  SHA512:
6
- metadata.gz: ae28ab27cdcfad5445268216484fe9950e8e074bb30ed98467781b1ef52906c4c65b1d18a97344332820c07da68464f3a50986cff86143fdbb61f248bea0124a
7
- data.tar.gz: 142672e6de29376102e533c92c4b88f2623dd67edcdbd6a3cf5618cbcbae748d586ebf669e32b97937969ae37cf8d6cf5a21b3df8698625403c06bcfd78f40cd
6
+ metadata.gz: 3f6a0adc4abcfabaf4520154cf8f0623274f2f7e18173db2d1bbd85a1395c41eba8f74ef61fc1f6d8329eb7d407c1bdaead150f12de62583966fe73203442c64
7
+ data.tar.gz: 27a29c9c637fe2ca18ca22169bc6e9c97cfbbe514b2222332add0ac919d759f3ed221812cf94068774f424cdd6f332f25679394a0d6d802d99d105b54d0d2e3c
checksums.yaml.gz.sig CHANGED
Binary file
data/LICENSE.md ADDED
@@ -0,0 +1,13 @@
1
+ # License
2
+
3
+ This project is made available under the following licenses.
4
+ Choose the option that best fits your use case:
5
+
6
+ - [AGPL-3.0-only](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/AGPL-3.0-only.md)
7
+ - [PolyForm-Small-Business-1.0.0](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/PolyForm-Small-Business-1.0.0.md)
8
+
9
+ If none of the above licenses fit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
10
+
11
+ ## Copyright Notice
12
+
13
+ - Required Notice: Copyright (c) 2026 Peter H. Boling
data/README.md ADDED
@@ -0,0 +1,287 @@
1
+ <a href="https://github.com/structuredmerge"><img alt="structuredmerge Logo by GitHub" src="https://github.com/structuredmerge.png?size=192" width="14%" align="right"/></a>
2
+
3
+ # ☯️ Kramdown::Merge
4
+
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only OR PolyForm-Small-Business-1.0.0][📄license-img]][📄license] [![Total downloads][👽dl-ranki]][👽dl-rank] [![CI Current][🚎11-c-wfi]][🚎11-c-wf]
6
+
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
+
9
+ ---
10
+
11
+ `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
+
13
+ [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
14
+
15
+ <details markdown="1">
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
23
+
24
+ `Kramdown::Merge` is a Ruby provider package for the Markdown merge family. Markdown provider backed by Kramdown. It registers its backend with `tree_haver` and exposes provider-specific defaults while preserving the canonical family contract.
25
+
26
+ ### Key Features
27
+
28
+ - Backend registration for `Kramdown`.
29
+ - Provider-specific parser capability reporting.
30
+ - Family-compatible parse and merge methods.
31
+ - Structured diagnostics for unsupported backends and parser failures.
32
+ - A provider `SmartMerger` wrapper when the underlying family exposes one.
33
+
34
+ ## 💡 Info you can shake a stick at
35
+
36
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
37
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
38
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf]|
39
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
40
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on GitHub.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
41
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
42
+ | Compliance | [![License: AGPL-3.0-only OR PolyForm-Small-Business-1.0.0][📄license-img]][📄license] [![Apache license compatibility: Category X][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
43
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
44
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
45
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
46
+
47
+ ### Compatibility
48
+
49
+ Compatible with MRI Ruby 4.0.0+, JRuby, and TruffleRuby.
50
+ CI workflows and Appraisals are generated for MRI Ruby 4.0.0+.
51
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
52
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
53
+ not practical for the current toolchain.
54
+
55
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
56
+
57
+ The _amazing_ test matrix is powered by the kettle-dev stack.
58
+
59
+ <details markdown="1">
60
+ <summary>How kettle-dev manages complexity in tests</summary>
61
+
62
+ | Gem | Source | Role | Total downloads |
63
+ |-----|--------|------|---------------------|
64
+ | [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Total downloads for appraisal2](https://img.shields.io/gem/dt/appraisal2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2) |
65
+ | [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Total downloads for appraisal2-rubocop](https://img.shields.io/gem/dt/appraisal2-rubocop.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
66
+ | [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Total downloads for kettle-dev](https://img.shields.io/gem/dt/kettle-dev.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
67
+ | [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Total downloads for kettle-jem](https://img.shields.io/gem/dt/kettle-jem.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
68
+ | [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Total downloads for kettle-soup-cover](https://img.shields.io/gem/dt/kettle-soup-cover.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
69
+ | [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Total downloads for kettle-test](https://img.shields.io/gem/dt/kettle-test.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-test) |
70
+ | [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Total downloads for rubocop-lts](https://img.shields.io/gem/dt/rubocop-lts.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
71
+ | [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Total downloads for turbo_tests2](https://img.shields.io/gem/dt/turbo_tests2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
72
+
73
+ </details>
74
+
75
+ ## ✨ Installation
76
+
77
+ Install the gem and add to the application's Gemfile by executing:
78
+
79
+ ```console
80
+ bundle add kramdown-merge
81
+ ```
82
+
83
+ If bundler is not being used to manage dependencies, install the gem by executing:
84
+
85
+ ```console
86
+ gem install kramdown-merge
87
+ ```
88
+
89
+ ## ⚙️ Configuration
90
+
91
+ ```ruby
92
+ require "kramdown/merge"
93
+
94
+ profile = Kramdown::Merge.markdown_backend_feature_profile(backend: :kramdown)
95
+ context = Kramdown::Merge.markdown_plan_context(backend: :kramdown)
96
+ ```
97
+
98
+ Use this package when you want a hard dependency on the `Kramdown` backend. Use the canonical family package when backend auto-selection is preferred.
99
+
100
+ ## 🔧 Basic Usage
101
+
102
+ ```ruby
103
+ require "kramdown/merge"
104
+
105
+ result = Kramdown::Merge.merge_markdown(
106
+ File.read("template.md"),
107
+ File.read("destination.md"),
108
+ "markdown",
109
+ backend: :kramdown,
110
+ )
111
+
112
+ abort result.fetch(:diagnostics).inspect unless result.fetch(:ok)
113
+ File.write("destination.md", result.fetch(:output))
114
+ ```
115
+
116
+ ## 🔐 Security
117
+
118
+ See [SECURITY.md][🔐security].
119
+
120
+ ## 🤝 Contributing
121
+
122
+ If you need some ideas of where to help, you could work on adding more code coverage,
123
+ check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
124
+
125
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
126
+
127
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
128
+
129
+ ## 📌 Versioning
130
+
131
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
132
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
133
+
134
+ For example:
135
+
136
+ ```ruby
137
+ spec.add_dependency("kramdown-merge", "~> 7.0")
138
+ ```
139
+
140
+ <details markdown="1">
141
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
142
+
143
+ Dropping support for a platform can be a breaking change for affected users.
144
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
145
+
146
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
147
+ read this article from the creator of SemVer:
148
+
149
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
150
+
151
+ </details>
152
+
153
+ See [CHANGELOG.md][📌changelog] for a list of releases.
154
+
155
+ ## 📄 License
156
+
157
+ The gem is available under the following licenses: [AGPL-3.0-only](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/AGPL-3.0-only.md), [PolyForm-Small-Business-1.0.0](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/PolyForm-Small-Business-1.0.0.md).
158
+ See [LICENSE.md][📄license] for details.
159
+
160
+ If none of the available licenses suit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
161
+
162
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
163
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
164
+ [⛳liberapay]: https://liberapay.com/pboling/donate
165
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
166
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
167
+ [🖇sponsor]: https://github.com/sponsors/pboling
168
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
169
+ [🖇kofi]: https://ko-fi.com/pboling
170
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
171
+ [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
172
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
173
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
174
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
175
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
176
+ [🖇floss-funding.dev]: https://floss-funding.dev
177
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
178
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
179
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
180
+ [✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
181
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
182
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
183
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
184
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/structuredmerge
185
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
186
+ [⛳️gem-namespace]: https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kramdown-merge
187
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Kramdown::Merge-3C2D2D.svg?style=square&logo=ruby&logoColor=white
188
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/kramdown-merge
189
+ [⛳️name-img]: https://img.shields.io/badge/name-kramdown--merge-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
190
+ [⛳️tag-img]: https://img.shields.io/github/tag/structuredmerge/structuredmerge-ruby.svg
191
+ [⛳️tag]: https://github.com/structuredmerge/structuredmerge-ruby/releases
192
+ [🚂maint-blog]: http://www.railsbling.com/tags/kramdown-merge
193
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
194
+ [🚂maint-contact]: http://www.railsbling.com/contact
195
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
196
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
197
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
198
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
199
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
200
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
201
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
202
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
203
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
204
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
205
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
206
+ [💖🌳linktree]: https://linktr.ee/galtzo
207
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
208
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
209
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
210
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
211
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
212
+ [💖🧊berg]: https://codeberg.org/pboling
213
+ [💖🐙hub]: https://github.org/pboling
214
+ [💖🛖hut]: https://sr.ht/~galtzo/
215
+ [💖🧪lab]: https://gitlab.com/pboling
216
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
217
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
218
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
219
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
220
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-kramdown-merge?utm_source=rubygems-kramdown-merge&utm_medium=referral&utm_campaign=readme
221
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
222
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
223
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
224
+ [🚂railsbling]: http://www.railsbling.com
225
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
226
+ [📜src-gl]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/tree/main/gems/kramdown-merge
227
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
228
+ [📜src-cb]: https://codeberg.org/structuredmerge/structuredmerge-ruby/src/branch/main/gems/kramdown-merge
229
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
230
+ [📜src-gh]: https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kramdown-merge
231
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
232
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
233
+ [📜gl-wiki]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/wikis/home
234
+ [📜gh-wiki]: https://github.com/structuredmerge/structuredmerge-ruby/wiki
235
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
236
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
237
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/kramdown-merge
238
+ [👽dl-ranki]: https://img.shields.io/gem/dt/kramdown-merge.svg
239
+ [👽version]: https://clickgems.clickhouse.com/dashboard/kramdown-merge
240
+ [👽versioni]: https://img.shields.io/gem/v/kramdown-merge.svg
241
+ [🚎11-c-wf]: https://github.com/structuredmerge/structuredmerge-ruby/actions/workflows/current.yml
242
+ [🚎11-c-wfi]: https://github.com/structuredmerge/structuredmerge-ruby/actions/workflows/current.yml/badge.svg
243
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
244
+ [🤝gh-issues]: https://github.com/structuredmerge/structuredmerge-ruby/issues
245
+ [🤝gh-pulls]: https://github.com/structuredmerge/structuredmerge-ruby/pulls
246
+ [🤝gl-issues]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/issues
247
+ [🤝gl-pulls]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/merge_requests
248
+ [🤝cb-issues]: https://codeberg.org/structuredmerge/structuredmerge-ruby/issues
249
+ [🤝cb-pulls]: https://codeberg.org/structuredmerge/structuredmerge-ruby/pulls
250
+ [🤝cb-donate]: https://donate.codeberg.org/
251
+ [🤝contributing]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CONTRIBUTING.md
252
+ [🖐contrib-rocks]: https://contrib.rocks
253
+ [🖐contributors]: https://github.com/structuredmerge/structuredmerge-ruby/graphs/contributors
254
+ [🖐contributors-img]: https://contrib.rocks/image?repo=structuredmerge/structuredmerge-ruby
255
+ [🪇conduct]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CODE_OF_CONDUCT.md
256
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
257
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
258
+ [📌semver]: https://semver.org/spec/v2.0.0.html
259
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
260
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
261
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
262
+ [📌changelog]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CHANGELOG.md
263
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
264
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
265
+ [📌gitmoji]: https://gitmoji.dev
266
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
267
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
268
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.124-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
269
+ [🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
270
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
271
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
272
+ [📄license]: LICENSE.md
273
+ [📄license-ref]: LICENSE.md
274
+ [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only_OR_PolyForm--Small--Business--1.0.0-259D6C.svg
275
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
276
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-%E2%9C%97-C0392B.svg?style=flat&logo=Apache
277
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
278
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
279
+ [🚎yard-current]: http://rubydoc.info/gems/kramdown-merge
280
+ [🚎yard-head]: https://kramdown-merge.galtzo.com
281
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
282
+ [💎SHA_checksums]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/tree/main/checksums
283
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
284
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
285
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
286
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
287
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kramdown
4
+ module Merge
5
+ module Backend
6
+ Markdown::Merge::BackendSupport.install!(
7
+ backend_module: self,
8
+ backend_name: :kramdown,
9
+ gem_name: 'kramdown',
10
+ require_path: 'kramdown/merge'
11
+ )
12
+
13
+ class Language < ::TreeHaver::Base::Language
14
+ def initialize(name = :markdown, options: {})
15
+ super(name, backend: :kramdown, options: options)
16
+ end
17
+
18
+ class << self
19
+ def markdown(options: {})
20
+ new(:markdown, options: options)
21
+ end
22
+ end
23
+
24
+ Markdown::Merge::BackendSupport.configure_markdown_only_language_class!(
25
+ self,
26
+ backend_label: 'Kramdown'
27
+ )
28
+ end
29
+
30
+ class Parser < ::TreeHaver::Base::Parser
31
+ def parse(source)
32
+ raise 'Language not set' unless language
33
+
34
+ Backend.available? or raise 'Kramdown not available'
35
+
36
+ document = ::Kramdown::Document.new(source, **(language.options || {}))
37
+ Tree.new(document.root, source)
38
+ end
39
+ end
40
+
41
+ class Node < ::TreeHaver::Base::Node
42
+ TYPE_MAP = {
43
+ root: 'document',
44
+ header: 'heading',
45
+ codeblock: 'code_block',
46
+ p: 'paragraph'
47
+ }.freeze
48
+
49
+ Markdown::Merge::BackendSupport.configure_node_link_and_navigation!(
50
+ self,
51
+ next_sibling_selector: :next,
52
+ prev_sibling_selector: :previous,
53
+ parent_selector: :parent
54
+ )
55
+ Markdown::Merge::BackendSupport.configure_node_heading_and_code_block_helpers!(
56
+ self,
57
+ heading_matcher: ->(node) { node.raw_type == 'header' },
58
+ code_block_matcher: ->(node) { node.raw_type == 'codeblock' },
59
+ heading_level_extractor: ->(inner_node) { inner_node.options[:level] },
60
+ code_block_info_extractor: ->(inner_node) { inner_node.options[:lang] }
61
+ )
62
+
63
+ def type
64
+ TYPE_MAP.fetch(raw_type.to_sym, raw_type)
65
+ end
66
+
67
+ alias kind type
68
+
69
+ def raw_type
70
+ inner_node.type.to_s
71
+ end
72
+
73
+ def text
74
+ return inner_node.value.to_s if inner_node.value
75
+ return inner_node.options[:raw_text].to_s if inner_node.options.key?(:raw_text)
76
+
77
+ children.map(&:text).join
78
+ end
79
+
80
+ def children
81
+ Array(inner_node.children).map { |child| self.class.new(child, source: source, lines: lines) }
82
+ end
83
+
84
+ def start_point
85
+ line = [inner_node.options.fetch(:location, 1).to_i - 1, 0].max
86
+ Point.new(line, 0)
87
+ end
88
+
89
+ def end_point
90
+ Point.new([start_point.row + text.lines.count - 1, start_point.row].max, 0)
91
+ end
92
+
93
+ def start_byte
94
+ calculate_byte_offset(start_point.row, start_point.column)
95
+ end
96
+
97
+ def end_byte
98
+ calculate_byte_offset(end_point.row, end_point.column)
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kramdown
4
+ # Source-preserving Markdown provider integration for Kramdown.
5
+ module Merge
6
+ # Native Kramdown backend configuration for the shared provider engine.
7
+ class Provider < Markdown::Merge::SourcePreservingProvider
8
+ # rubocop:disable Metrics/MethodLength -- constructor declares the complete backend boundary
9
+ def initialize
10
+ super(
11
+ provider_id: 'ruby.markdown.kramdown',
12
+ role: :backend,
13
+ backend: Markdown::Merge::ProviderBackend.new(
14
+ id: :kramdown,
15
+ package: PACKAGE_NAME,
16
+ dialects: %i[markdown kramdown],
17
+ parser: lambda { |source|
18
+ parser = Backend::Parser.new
19
+ parser.language = Backend::Language.markdown
20
+ parser.parse(source)
21
+ },
22
+ headings: lambda { |root, source|
23
+ Markdown::Merge::ProviderBackend.native_headings(root, source, kramdown: true)
24
+ }
25
+ )
26
+ )
27
+ end
28
+ # rubocop:enable Metrics/MethodLength
29
+ end
30
+
31
+ class << self
32
+ def merge_provider
33
+ @merge_provider ||= Provider.new
34
+ end
35
+
36
+ def register_provider!(replace: false)
37
+ return unless Ast::Merge.respond_to?(:register_provider)
38
+
39
+ Ast::Merge.register_provider(merge_provider, replace: replace)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -2,10 +2,12 @@
2
2
 
3
3
  module Kramdown
4
4
  module Merge
5
+ # Version namespace for this gem.
5
6
  module Version
6
- VERSION = "7.0.0"
7
+ # Current gem version.
8
+ VERSION = '7.1.3'
7
9
  end
8
-
9
- VERSION = Version::VERSION
10
+ # Current gem version exposed at the traditional constant location.
11
+ VERSION = Version::VERSION # Traditional Constant Location
10
12
  end
11
13
  end
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "markdown-merge"
4
- require "kramdown"
3
+ require 'markdown-merge'
4
+ require 'kramdown'
5
+ require_relative 'merge/version'
6
+ require_relative 'merge/backend'
5
7
 
6
8
  module Kramdown
7
9
  module Merge
8
- extend self
10
+ module_function
9
11
 
10
- PACKAGE_NAME = "kramdown-merge"
11
- BACKEND_REFERENCE = TreeHaver::BackendReference.new(id: "kramdown", family: "native").freeze
12
+ PACKAGE_NAME = 'kramdown-merge'
13
+ BACKEND_REFERENCE = TreeHaver::BackendReference.new(id: 'kramdown', family: 'native').freeze
12
14
  TreeHaver::BackendRegistry.register(BACKEND_REFERENCE)
13
15
 
14
16
  def markdown_feature_profile
@@ -21,7 +23,9 @@ module Kramdown
21
23
 
22
24
  def markdown_backend_feature_profile(backend: nil)
23
25
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
24
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
26
+ unless requested == BACKEND_REFERENCE.id
27
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
28
+ end
25
29
 
26
30
  markdown_feature_profile.merge(backend: BACKEND_REFERENCE.id, backend_ref: BACKEND_REFERENCE.to_h)
27
31
  end
@@ -42,20 +46,22 @@ module Kramdown
42
46
 
43
47
  def parse_markdown(source, dialect, backend: nil)
44
48
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
45
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
49
+ unless requested == BACKEND_REFERENCE.id
50
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
51
+ end
46
52
 
47
- return unsupported_feature_result("Unsupported Markdown dialect #{dialect}.") unless dialect == "markdown"
53
+ return unsupported_feature_result("Unsupported Markdown dialect #{dialect}.") unless dialect == 'markdown'
48
54
 
49
- ::Kramdown::Document.new(source)
55
+ TreeHaver.with_backend(BACKEND_REFERENCE.id) { TreeHaver.parser_for(:markdown).parse(source) }
50
56
  normalized = Markdown::Merge.normalize_source(source)
51
57
  {
52
58
  ok: true,
53
59
  diagnostics: [],
54
60
  analysis: {
55
- kind: "markdown",
61
+ kind: 'markdown',
56
62
  dialect: dialect,
57
63
  normalized_source: normalized,
58
- root_kind: "document",
64
+ root_kind: 'document',
59
65
  owners: Markdown::Merge.collect_markdown_owners(normalized)
60
66
  },
61
67
  policies: []
@@ -63,7 +69,7 @@ module Kramdown
63
69
  rescue StandardError => e
64
70
  {
65
71
  ok: false,
66
- diagnostics: [{ severity: "error", category: "parse_error", message: e.message }],
72
+ diagnostics: [{ severity: 'error', category: 'parse_error', message: e.message }],
67
73
  policies: []
68
74
  }
69
75
  end
@@ -74,69 +80,91 @@ module Kramdown
74
80
 
75
81
  def merge_markdown(template_source, destination_source, dialect, backend: nil)
76
82
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
77
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
83
+ unless requested == BACKEND_REFERENCE.id
84
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
85
+ end
78
86
 
79
- Markdown::Merge.merge_markdown(template_source, destination_source, dialect)
87
+ Markdown::Merge.merge_markdown(template_source, destination_source, dialect, backend: BACKEND_REFERENCE.id)
80
88
  end
81
89
 
82
- def merge_markdown_with_reviewed_nested_outputs(template_source, destination_source, dialect, review_state, applied_children, backend: nil)
90
+ def merge_markdown_with_reviewed_nested_outputs(template_source, destination_source, dialect, review_state,
91
+ applied_children, backend: nil)
83
92
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
84
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
93
+ unless requested == BACKEND_REFERENCE.id
94
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
95
+ end
85
96
 
86
97
  Markdown::Merge.merge_markdown_with_reviewed_nested_outputs(
87
98
  template_source,
88
99
  destination_source,
89
100
  dialect,
90
101
  review_state,
91
- applied_children
102
+ applied_children,
103
+ backend: BACKEND_REFERENCE.id
92
104
  )
93
105
  end
94
106
 
95
- def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle(template_source, destination_source, dialect, replay_bundle, backend: nil)
107
+ def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle(template_source, destination_source, dialect,
108
+ replay_bundle, backend: nil)
96
109
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
97
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
110
+ unless requested == BACKEND_REFERENCE.id
111
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
112
+ end
98
113
 
99
114
  Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_replay_bundle(
100
115
  template_source,
101
116
  destination_source,
102
117
  dialect,
103
- replay_bundle
118
+ replay_bundle,
119
+ backend: BACKEND_REFERENCE.id
104
120
  )
105
121
  end
106
122
 
107
- def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle_envelope(template_source, destination_source, dialect, envelope, backend: nil)
123
+ def merge_markdown_with_reviewed_nested_outputs_from_replay_bundle_envelope(template_source, destination_source,
124
+ dialect, envelope, backend: nil)
108
125
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
109
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
126
+ unless requested == BACKEND_REFERENCE.id
127
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
128
+ end
110
129
 
111
130
  Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_replay_bundle_envelope(
112
131
  template_source,
113
132
  destination_source,
114
133
  dialect,
115
- envelope
134
+ envelope,
135
+ backend: BACKEND_REFERENCE.id
116
136
  )
117
137
  end
118
138
 
119
- def merge_markdown_with_reviewed_nested_outputs_from_review_state(template_source, destination_source, dialect, review_state, backend: nil)
139
+ def merge_markdown_with_reviewed_nested_outputs_from_review_state(template_source, destination_source, dialect,
140
+ review_state, backend: nil)
120
141
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
121
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
142
+ unless requested == BACKEND_REFERENCE.id
143
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
144
+ end
122
145
 
123
146
  Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_review_state(
124
147
  template_source,
125
148
  destination_source,
126
149
  dialect,
127
- review_state
150
+ review_state,
151
+ backend: BACKEND_REFERENCE.id
128
152
  )
129
153
  end
130
154
 
131
- def merge_markdown_with_reviewed_nested_outputs_from_review_state_envelope(template_source, destination_source, dialect, envelope, backend: nil)
155
+ def merge_markdown_with_reviewed_nested_outputs_from_review_state_envelope(template_source, destination_source,
156
+ dialect, envelope, backend: nil)
132
157
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
133
- return unsupported_feature_result("Unsupported Markdown backend #{requested}.") unless requested == BACKEND_REFERENCE.id
158
+ unless requested == BACKEND_REFERENCE.id
159
+ return unsupported_feature_result("Unsupported Markdown backend #{requested}.")
160
+ end
134
161
 
135
162
  Markdown::Merge.merge_markdown_with_reviewed_nested_outputs_from_review_state_envelope(
136
163
  template_source,
137
164
  destination_source,
138
165
  dialect,
139
- envelope
166
+ envelope,
167
+ backend: BACKEND_REFERENCE.id
140
168
  )
141
169
  end
142
170
 
@@ -147,7 +175,7 @@ module Kramdown
147
175
  def unsupported_feature_result(message)
148
176
  {
149
177
  ok: false,
150
- diagnostics: [{ severity: "error", category: "unsupported_feature", message: message }],
178
+ diagnostics: [{ severity: 'error', category: 'unsupported_feature', message: message }],
151
179
  policies: []
152
180
  }
153
181
  end
@@ -170,3 +198,6 @@ module Kramdown
170
198
  )
171
199
  end
172
200
  end
201
+
202
+ require_relative 'merge/provider'
203
+ Kramdown::Merge.register_provider!
@@ -1,3 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "kramdown/merge"
3
+ require_relative 'kramdown/merge'
4
+ require 'version_gem'
5
+ require_relative 'kramdown/merge/version'
6
+
7
+ Kramdown::Merge::Version.class_eval do
8
+ extend VersionGem::Basic
9
+ end
@@ -0,0 +1,15 @@
1
+ module Kramdown
2
+ module Merge
3
+ module Version
4
+ VERSION: String
5
+ end
6
+ VERSION: String
7
+
8
+ class Provider < Markdown::Merge::SourcePreservingProvider
9
+ def initialize: () -> void
10
+ end
11
+
12
+ def self.merge_provider: () -> Provider
13
+ def self.register_provider!: (?replace: bool) -> untyped
14
+ end
15
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-merge
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 7.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
8
- bindir: bin
8
+ bindir: exe
9
9
  cert_chain:
10
10
  - |
11
11
  -----BEGIN CERTIFICATE-----
@@ -37,60 +37,298 @@ cert_chain:
37
37
  -----END CERTIFICATE-----
38
38
  date: 1980-01-02 00:00:00.000000000 Z
39
39
  dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: kramdown
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.5'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.5'
40
54
  - !ruby/object:Gem::Dependency
41
55
  name: markdown-merge
42
56
  requirement: !ruby/object:Gem::Requirement
43
57
  requirements:
44
58
  - - '='
45
59
  - !ruby/object:Gem::Version
46
- version: 7.0.0
60
+ version: 7.1.3
47
61
  type: :runtime
48
62
  prerelease: false
49
63
  version_requirements: !ruby/object:Gem::Requirement
50
64
  requirements:
51
65
  - - '='
52
66
  - !ruby/object:Gem::Version
53
- version: 7.0.0
67
+ version: 7.1.3
54
68
  - !ruby/object:Gem::Dependency
55
- name: kramdown
69
+ name: version_gem
56
70
  requirement: !ruby/object:Gem::Requirement
57
71
  requirements:
58
72
  - - "~>"
59
73
  - !ruby/object:Gem::Version
60
- version: '2.5'
74
+ version: '1.1'
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 1.1.15
61
78
  type: :runtime
62
79
  prerelease: false
63
80
  version_requirements: !ruby/object:Gem::Requirement
64
81
  requirements:
65
82
  - - "~>"
66
83
  - !ruby/object:Gem::Version
67
- version: '2.5'
68
- description: Kramdown-backed Markdown provider gem for the Structured Merge Markdown
69
- family.
84
+ version: '1.1'
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 1.1.15
88
+ - !ruby/object:Gem::Dependency
89
+ name: kettle-dev
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 3.0.0
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.0'
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 3.0.0
108
+ - !ruby/object:Gem::Dependency
109
+ name: bundler-audit
110
+ requirement: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: 0.9.3
115
+ type: :development
116
+ prerelease: false
117
+ version_requirements: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.9.3
122
+ - !ruby/object:Gem::Dependency
123
+ name: rake
124
+ requirement: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '13.0'
129
+ type: :development
130
+ prerelease: false
131
+ version_requirements: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '13.0'
136
+ - !ruby/object:Gem::Dependency
137
+ name: require_bench
138
+ requirement: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.0'
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.0.4
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 1.0.4
156
+ - !ruby/object:Gem::Dependency
157
+ name: anonymous_loader
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '0.1'
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 0.1.3
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '0.1'
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: 0.1.3
176
+ - !ruby/object:Gem::Dependency
177
+ name: appraisal2
178
+ requirement: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '3.2'
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: 3.2.2
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3.2'
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: 3.2.2
196
+ - !ruby/object:Gem::Dependency
197
+ name: kettle-test
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '2.0'
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: 2.0.19
206
+ type: :development
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - "~>"
211
+ - !ruby/object:Gem::Version
212
+ version: '2.0'
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: 2.0.19
216
+ - !ruby/object:Gem::Dependency
217
+ name: turbo_tests2
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '3.2'
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: 3.2.5
226
+ type: :development
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - "~>"
231
+ - !ruby/object:Gem::Version
232
+ version: '3.2'
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: 3.2.5
236
+ - !ruby/object:Gem::Dependency
237
+ name: ruby-progressbar
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '1.13'
243
+ type: :development
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: '1.13'
250
+ - !ruby/object:Gem::Dependency
251
+ name: stone_checksums
252
+ requirement: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: '1.0'
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: 1.0.8
260
+ type: :development
261
+ prerelease: false
262
+ version_requirements: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - "~>"
265
+ - !ruby/object:Gem::Version
266
+ version: '1.0'
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: 1.0.8
270
+ - !ruby/object:Gem::Dependency
271
+ name: gitmoji-regex
272
+ requirement: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - "~>"
275
+ - !ruby/object:Gem::Version
276
+ version: '2.0'
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: 2.0.11
280
+ type: :development
281
+ prerelease: false
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: '2.0'
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: 2.0.11
290
+ description: "☯️ Kramdown-backed Markdown provider gem for the Structured Merge Markdown
291
+ family."
70
292
  email:
71
- - info@structuredmerge.org
293
+ - floss@galtzo.com
72
294
  executables: []
73
295
  extensions: []
74
296
  extra_rdoc_files: []
75
297
  files:
298
+ - LICENSE.md
299
+ - README.md
76
300
  - lib/kramdown-merge.rb
77
301
  - lib/kramdown/merge.rb
302
+ - lib/kramdown/merge/backend.rb
303
+ - lib/kramdown/merge/provider.rb
78
304
  - lib/kramdown/merge/version.rb
305
+ - sig/kramdown/merge.rbs
79
306
  homepage: https://github.com/structuredmerge/structuredmerge-ruby
80
307
  licenses:
81
308
  - AGPL-3.0-only
82
309
  - PolyForm-Small-Business-1.0.0
83
310
  metadata:
84
311
  homepage_uri: https://structuredmerge.org
85
- source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.0.0
86
- changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.0.0/CHANGELOG.md
312
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.3
313
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.3/CHANGELOG.md
87
314
  bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
88
- documentation_uri: https://www.rubydoc.info/gems/kramdown-merge/7.0.0
315
+ documentation_uri: https://www.rubydoc.info/gems/kramdown-merge/7.1.3
89
316
  funding_uri: https://github.com/sponsors/pboling
90
317
  wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
318
+ news_uri: https://www.railsbling.com/tags/kramdown-merge
91
319
  discord_uri: https://discord.gg/3qme4XHNKN
320
+ mailing_list_uri: https://www.rubyforum.org/tag/structuredmerge
92
321
  rubygems_mfa_required: 'true'
93
- rdoc_options: []
322
+ rdoc_options:
323
+ - "--title"
324
+ - kramdown-merge - ☯️ Structured Merge Kramdown-backed Markdown analysis for Ruby
325
+ - "--main"
326
+ - README.md
327
+ - "--exclude"
328
+ - "^sig/"
329
+ - "--line-numbers"
330
+ - "--inline-source"
331
+ - "--quiet"
94
332
  require_paths:
95
333
  - lib
96
334
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -104,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
342
  - !ruby/object:Gem::Version
105
343
  version: '0'
106
344
  requirements: []
107
- rubygems_version: 4.0.10
345
+ rubygems_version: 4.0.17
108
346
  specification_version: 4
109
- summary: Structured Merge Kramdown-backed Markdown analysis for Ruby
347
+ summary: "☯️ Structured Merge Kramdown-backed Markdown analysis for Ruby"
110
348
  test_files: []
metadata.gz.sig CHANGED
Binary file