yard-yaml 0.1.0

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.
data/README.md ADDED
@@ -0,0 +1,1340 @@
1
+ | 📍 NOTE |
2
+ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
+
14
+ [rubygems-org]: https://github.com/rubygems/
15
+ [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
16
+ [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
17
+ [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
18
+ [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
19
+ [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
20
+ [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
21
+ [draper-theft]: https://joel.drapper.me/p/ruby-central/
22
+ [reinteractive]: https://reinteractive.com/ruby-on-rails
23
+ [gem-coop]: https://gem.coop
24
+ [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
25
+ [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
26
+ [gem-scopes]: https://github.com/galtzo-floss/bundle-namespace
27
+ [gem-server]: https://github.com/galtzo-floss/gem-server
28
+ [reinteractive-podcast]: https://youtu.be/_H4qbtC5qzU?si=BvuBU90R2wAqD2E6
29
+
30
+ [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![yard-yaml Logo by Aboling0, CC BY-SA 4.0][🖼️yard-yaml-i]][🖼️yard-yaml]
31
+
32
+ [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
33
+ [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
34
+ [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
35
+ [🖼️ruby-lang]: https://www.ruby-lang.org/
36
+ [🖼️yard-yaml-i]: https://logos.galtzo.com/assets/images/galtzo-floss/yard-yaml/avatar-192px.svg
37
+ [🖼️yard-yaml]: https://github.com/galtzo-floss/yard-yaml
38
+
39
+ # 🥨 Yard::Yaml
40
+
41
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
42
+
43
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
44
+
45
+ ---
46
+
47
+ `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.
48
+
49
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![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 on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
50
+
51
+ ## 🌻 Synopsis
52
+
53
+ To enable the `yard-yaml` plugin add it to your Gemfile,
54
+ and then add the following line to your `.yardopts` file:
55
+
56
+ ```text
57
+ --plugin yaml
58
+ ```
59
+
60
+ This will activate the plugin during the `yard doc` generation process, converting YAML (including CFF) files to HTML.
61
+
62
+ ## 💡 Info you can shake a stick at
63
+
64
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
65
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
66
+ | Works with JRuby | [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
67
+ | Works with Truffle Ruby | [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
68
+ | Works with MRI Ruby 3 | [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
69
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![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] |
70
+ | 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] |
71
+ | 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] |
72
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄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] |
73
+ | 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] |
74
+ | 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] |
75
+ | `...` 💖 | [![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] |
76
+
77
+ ### Compatibility
78
+
79
+ Compatible with MRI Ruby 3.2.0+, and concordant releases of JRuby, and TruffleRuby.
80
+
81
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
82
+ |------------------------------------------------|--------------------------------------------------------|
83
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
84
+
85
+ ### Federated DVCS
86
+
87
+ <details markdown="1">
88
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
89
+
90
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
91
+ |---------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
92
+ | 🧪 [galtzo-floss/yard-yaml on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
93
+ | 🧊 [galtzo-floss/yard-yaml on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
94
+ | 🐙 [galtzo-floss/yard-yaml on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
95
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
96
+
97
+ </details>
98
+
99
+ [gh-discussions]: https://github.com/galtzo-floss/yard-yaml/discussions
100
+
101
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/yard-yaml)](https://tidelift.com/subscription/pkg/rubygems-yard-yaml?utm_source=rubygems-yard-yaml&utm_medium=referral&utm_campaign=readme)
102
+
103
+ Available as part of the Tidelift Subscription.
104
+
105
+ <details markdown="1">
106
+ <summary>Need enterprise-level guarantees?</summary>
107
+
108
+ The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
109
+
110
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
111
+
112
+ - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
113
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
114
+ - 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
115
+
116
+ Alternatively:
117
+
118
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
119
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
120
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
121
+
122
+ </details>
123
+
124
+ ## ✨ Installation
125
+
126
+ Install the gem and add to the application's Gemfile by executing:
127
+
128
+ ```console
129
+ bundle add yard-yaml
130
+ ```
131
+
132
+ If bundler is not being used to manage dependencies, install the gem by executing:
133
+
134
+ ```console
135
+ gem install yard-yaml
136
+ ```
137
+
138
+ ### 🔒 Secure Installation
139
+
140
+ <details markdown="1">
141
+ <summary>For Medium or High Security Installations</summary>
142
+
143
+ This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
144
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
145
+ by following the instructions below.
146
+
147
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
148
+
149
+ ```console
150
+ gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
151
+ ```
152
+
153
+ You only need to do that once. Then proceed to install with:
154
+
155
+ ```console
156
+ gem install yard-yaml -P HighSecurity
157
+ ```
158
+
159
+ The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
160
+
161
+ If you want to up your security game full-time:
162
+
163
+ ```console
164
+ bundle config set --global trust-policy MediumSecurity
165
+ ```
166
+
167
+ `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
168
+
169
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
170
+
171
+ </details>
172
+
173
+ ## ⚙️ Configuration
174
+
175
+ The `yard-yaml` plugin supports the following configuration options:
176
+
177
+ - **include**: Array of file patterns to include (default: `["docs/**/*.y{a,}ml", "*.y{a,}ml", "docs/**/*.cff", "*.cff"]`).
178
+ - **exclude**: Array of file patterns to exclude (default: `["**/_*.y{a,}ml", "**/_*.cff"]`).
179
+ - **out_dir**: Output directory for YAML files (default: `"yaml"`).
180
+ - **index**: Whether to generate an index page (default: `true`).
181
+ - **toc**: Table of contents generation mode (default: `"auto"`).
182
+ - **converter_options**: Options passed to the YAML converter (default: `{}`).
183
+ - **front_matter**: Whether to parse front matter (default: `true`).
184
+ - **strict**: Raise errors on conversion failures (default: `false`).
185
+ - **allow_erb**: Allow ERB processing in YAML files (default: `false`).
186
+
187
+ Note: Citation File Format (`.cff`) files are valid YAML and are discovered by default without needing explicit globs.
188
+
189
+ ### Example `.yardopts` Configuration
190
+
191
+ ```text
192
+ --plugin yaml
193
+ --yard_yaml-include "examples//*.yml"
194
+ --yard_yaml-exclude "/drafts/*.yml"
195
+ --yard_yaml-out_dir "custom_output"
196
+ --yard_yaml-strict
197
+ ```
198
+
199
+ ## 🔧 Basic Usage
200
+
201
+ ### Inline Tags
202
+
203
+ The `yard-yaml` plugin introduces two new tags for use in docstrings:
204
+
205
+ 1. **`@yaml`**: Embeds converted YAML content as HTML.
206
+ 2. **`@yaml_file`**: Links to or embeds a converted YAML file.
207
+
208
+ #### Examples
209
+
210
+ ##### `@yaml` Tag
211
+
212
+ ```ruby
213
+ # @yaml
214
+ # ---
215
+ # title: Example YAML
216
+ # description: This is an example YAML block.
217
+ # ---
218
+ ```
219
+
220
+ ##### `@yaml_file` Tag
221
+
222
+ ```ruby
223
+ # @yaml_file path/to/example.yml
224
+ ```
225
+
226
+ #### Include .yml/.yaml files as pages
227
+
228
+ - Generate docs (plugin loads; discovery config comes from flags you pass):
229
+ ```bash
230
+ bundle exec yard
231
+ ```
232
+ - Then emit converted pages into your YARD output dir (replace globs/output to match your project):
233
+ ```bash
234
+ ruby -r yard/yaml -e 'Yard::Yaml::Plugin.activate(%w[--yard_yaml-include docs/**/*.y{a,}ml --yard_yaml-exclude **/_*.y{a,}ml]); Yard::Yaml::Emitter.emit!(pages: Yard::Yaml.pages, output_dir: "docs", config: Yard::Yaml.config)'
235
+ ```
236
+ Result: `docs/yaml/<slug>.html` and `docs/yaml/index.html` (when index enabled). Front matter supports `title`, `description`, `nav_order`, optional `slug`.
237
+
238
+ #### Inline YAML in Markdown (GFM) fences
239
+
240
+ - In code object docstrings, prefer the tags above; they convert and render after the docstring via this plugin’s theme hook.
241
+ - In standalone Markdown pages, fenced ```yaml blocks render as code by Markdown; this plugin doesn’t auto‑convert them yet. Use either:
242
+ - Link to an emitted page (after emission), e.g. `[See config](./yaml/config.html)`.
243
+ - Pre‑convert and paste HTML (Kramdown allows raw HTML):
244
+ ```bash
245
+ ruby -r yard/yaml -e 'print Yard::Yaml::Converter.from_string(File.read(ARGV[0]))[:html]' path/to/file.yml > tmp.html
246
+ ```
247
+ Then paste the HTML (optionally wrapped in `<div class="yyaml-inline">…</div>`).
248
+
249
+ ## Quickstart — YARD YAML Plugin
250
+
251
+ Add the plugin and run YARD to integrate YAML into your documentation workflow.
252
+
253
+ ### 1. Install dependencies
254
+
255
+ ```bash
256
+ bundle install
257
+ ```
258
+
259
+ ### 2. Configure `.yardopts`
260
+
261
+ Minimal example (adjust globs/output for your project):
262
+
263
+ ```text
264
+ --plugin yaml
265
+ --markup markdown
266
+ --markup-provider kramdown
267
+ --output docs
268
+ --yard_yaml-include docs/**/*.y{a,}ml
269
+ --yard_yaml-exclude **/_*.y{a,}ml
270
+ --yard_yaml-out_dir yaml
271
+ --yard_yaml-index
272
+ ```
273
+
274
+ NOTE: This gem uses `--plugin fence -e yard/fence/hoist.rb` for its own documentation. `yaml-fence` hoists fenced blocks inside code object docstrings, so that they are transformed to UNICODE fences before YARD sees them, to avoid the `InvalidLink` warnings, but does not convert YAML fences.
275
+
276
+ ### 3. Generate API docs & collect YAML (discovery only)
277
+
278
+ Running `yard` loads the plugin but does not auto-emit standalone YAML pages. Discovery + conversion occur only when you explicitly activate and emit.
279
+
280
+ ```bash
281
+ bundle exec yard
282
+ ```
283
+
284
+ ### 4. Emit standalone YAML pages (manual step)
285
+
286
+ Invoke activation + emission in a separate Ruby process (pass the same flags you used in `.yardopts` so discovery matches):
287
+
288
+ ```bash
289
+ ruby -r yard/yaml -e 'Yard::Yaml::Plugin.activate(%w[--yard_yaml-include docs/**/*.y{a,}ml --yard_yaml-exclude **/_*.y{a,}ml --yard_yaml-out_dir yaml --yard_yaml-index]); Yard::Yaml::Emitter.emit!(pages: Yard::Yaml.pages, output_dir: "docs", config: Yard::Yaml.config)'
290
+ ```
291
+
292
+ Result:
293
+
294
+ - Pages written to `docs/yaml/<slug>.html`
295
+ - Index (if enabled) at `docs/yaml/index.html`
296
+ - Sidebar entries (via theme hooks) link to these pages
297
+
298
+ ### 5. Inline YAML in code object docstrings
299
+
300
+ Preferred: use tags.
301
+
302
+ ```ruby
303
+ # @yaml
304
+ # ---
305
+ # title: Inline Example
306
+ # description: Demonstrates inline conversion.
307
+ # ---
308
+ # a: 1
309
+ # b: 2
310
+ ```
311
+
312
+ ```ruby
313
+ # @yaml_file docs/config/app.yml
314
+ ```
315
+
316
+ Theme hooks insert converted HTML right after the main docstring. Strict mode governs failure behavior.
317
+
318
+ ### 6. YAML in Markdown (GFM) fenced blocks
319
+
320
+ Standalone Markdown pages (e.g. README sections) treat:
321
+
322
+ ~~~markdown
323
+ ```yaml
324
+ key: value
325
+ ```
326
+ ~~~
327
+
328
+ as a code block. This plugin does NOT yet auto-convert fenced YAML in arbitrary Markdown pages.
329
+
330
+ Workarounds:
331
+
332
+ - Link to emitted page: `[Full Config](./yaml/config.html)`
333
+ - Pre-convert & paste HTML:
334
+ ```bash
335
+ ruby -r yard/yaml -e 'print Yard::Yaml::Converter.from_string(File.read(ARGV[0]))[:html]' docs/config/app.yml > tmp.html
336
+ ```
337
+ Paste the resulting HTML (Kramdown allows raw HTML). Optionally wrap:
338
+ ```html
339
+ <div class="yyaml-inline">(converted YAML html here)</div>
340
+ ```
341
+
342
+ ### Front Matter Support
343
+
344
+ Example `docs/config/app.yml`:
345
+
346
+ ```yaml
347
+ ---
348
+ # Front matter fields consumed by yaml-converter
349
+ title: Application Configuration
350
+ nav_order: 10
351
+ description: Core settings
352
+ slug: app-config
353
+ ---
354
+ app:
355
+ name: demo
356
+ enabled: true
357
+ ```
358
+
359
+ Parsed fields:
360
+ - `title`, `description` for page heading & sidebar
361
+ - `nav_order` for ordering
362
+ - `slug` overrides derived slug
363
+
364
+ ### Strict Mode & Safety
365
+
366
+ - `--yard_yaml-strict=true`: raise `Yard::Yaml::Error` on missing file, conversion, or write errors.
367
+ - Default (non-strict): warn and skip.
368
+ - ERB disabled by default (`allow_erb=false`); enable only if you trust sources: `--yard_yaml-allow_erb=true`.
369
+
370
+ ### Converter Options
371
+
372
+ Customize yaml-converter behavior (example):
373
+
374
+ ```text
375
+ --yard_yaml-converter_options pretty:true,wrap:80
376
+ ```
377
+
378
+ Boolean/number coercion is handled automatically.
379
+
380
+ ### Why not `yaml-markdown`?
381
+
382
+ Unnecessary here. YARD already processes Markdown via `--markup markdown --markup-provider kramdown`. This plugin focuses on YAML discovery, conversion, tagging, and emission, leveraging the `yaml-converter` dependency.
383
+
384
+ ### Limitations & Roadmap
385
+
386
+ Current limitations:
387
+
388
+ - No automatic emission during `yard` run (manual step required)
389
+ - No automatic conversion of fenced YAML in standalone Markdown pages
390
+ - Minimal default HTML for emitted pages (simple inline styles)
391
+
392
+ Planned improvements (subject to change):
393
+
394
+ - Automatic emission hook in the generation pipeline
395
+ - Optional fenced YAML auto-conversion in Markdown
396
+ - Enhanced theming & TOC modes beyond `auto`
397
+ - Search integration across YAML content
398
+
399
+ ### Troubleshooting Quick Reference
400
+
401
+ | Symptom | Fix |
402
+ |----------------------------|----------------------------------------------------------|
403
+ | Sidebar links 404 | Run emission step (Step 4) |
404
+ | Missing expected YAML page | Verify include/exclude globs & rerun emission |
405
+ | Inline tag shows empty | Ensure YAML content is valid; check strict mode warnings |
406
+ | Fenced YAML not converted | Use tags or pre-convert & paste HTML |
407
+ | ERB ignored | Enable `--yard_yaml-allow_erb=true` (security trade-off) |
408
+ | Build fails in strict mode | Rerun without strict to inspect warnings |
409
+
410
+ ## 🦷 FLOSS Funding
411
+
412
+ While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
413
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
414
+
415
+ We welcome both individual and corporate sponsors! We also offer a
416
+ wide array of funding channels to account for your preferences
417
+ (although currently [Open Collective][🖇osc] is our preferred funding platform).
418
+
419
+ **If you're working in a company that's making significant use of galtzo-floss tools we'd
420
+ appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
421
+
422
+ You can support the development of galtzo-floss tools via
423
+ [GitHub Sponsors][🖇sponsor],
424
+ [Liberapay][⛳liberapay],
425
+ [PayPal][🖇paypal],
426
+ [Open Collective][🖇osc]
427
+ and [Tidelift][🏙️entsup-tidelift].
428
+
429
+ | 📍 NOTE |
430
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
431
+ | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
432
+
433
+ ### Open Collective for Individuals
434
+
435
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
436
+
437
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
438
+
439
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
440
+ No backers yet. Be the first!
441
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
442
+
443
+ ### Open Collective for Organizations
444
+
445
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/galtzo-floss#sponsor)]
446
+
447
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
448
+
449
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
450
+ No sponsors yet. Be the first!
451
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
452
+
453
+ [kettle-readme-backers]: https://github.com/galtzo-floss/yard-yaml/blob/main/exe/kettle-readme-backers
454
+
455
+ ### Another way to support open-source
456
+
457
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
458
+
459
+ If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
460
+
461
+ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
462
+
463
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
464
+
465
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![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 on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
466
+
467
+ ## 🔐 Security
468
+
469
+ See [SECURITY.md][🔐security].
470
+
471
+ ## 🤝 Contributing
472
+
473
+ If you need some ideas of where to help, you could work on adding more code coverage,
474
+ or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
475
+ or use the gem and think about how it could be better.
476
+
477
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
478
+
479
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
480
+
481
+ ### 🚀 Release Instructions
482
+
483
+ See [CONTRIBUTING.md][🤝contributing].
484
+
485
+ ### Code Coverage
486
+
487
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
488
+
489
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
490
+
491
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
492
+
493
+ ### 🪇 Code of Conduct
494
+
495
+ Everyone interacting with this project's codebases, issue trackers,
496
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
497
+
498
+ ## 🌈 Contributors
499
+
500
+ [![Contributors][🖐contributors-img]][🖐contributors]
501
+
502
+ Made with [contributors-img][🖐contrib-rocks].
503
+
504
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/yard-yaml/-/graphs/main][🚎contributors-gl]
505
+
506
+ <details>
507
+ <summary>⭐️ Star History</summary>
508
+
509
+ <a href="https://star-history.com/#galtzo-floss/yard-yaml&Date">
510
+ <picture>
511
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/yard-yaml&type=Date&theme=dark" />
512
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/yard-yaml&type=Date" />
513
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=galtzo-floss/yard-yaml&type=Date" />
514
+ </picture>
515
+ </a>
516
+
517
+ </details>
518
+
519
+ ## 📌 Versioning
520
+
521
+ This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
522
+ Violations of this scheme should be reported as bugs.
523
+ Specifically, if a minor or patch version is released that breaks backward compatibility,
524
+ a new version should be immediately released that restores compatibility.
525
+ Breaking changes to the public API will only be introduced with new major versions.
526
+
527
+ > dropping support for a platform is both obviously and objectively a breaking change <br/>
528
+ >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
529
+
530
+ I understand that policy doesn't work universally ("exceptions to every rule!"),
531
+ but it is the policy here.
532
+ As such, in many cases it is good to specify a dependency on this library using
533
+ the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
534
+
535
+ For example:
536
+
537
+ ```ruby
538
+ spec.add_dependency("yard-yaml", "~> 1.0")
539
+ ```
540
+
541
+ <details markdown="1">
542
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
543
+
544
+ SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
545
+ is a *breaking change* to an API, and for that reason the bike shedding is endless.
546
+
547
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
548
+ read this article from the creator of SemVer:
549
+
550
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
551
+
552
+ </details>
553
+
554
+ See [CHANGELOG.md][📌changelog] for a list of releases.
555
+
556
+ ## 📄 License
557
+
558
+ The gem is available as open source under the terms of
559
+ the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
560
+ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
561
+
562
+ ### © Copyright
563
+
564
+ <ul>
565
+ <li>
566
+ Copyright (c) 2025 Aboling0 & Peter H. Boling, of
567
+ <a href="https://discord.gg/3qme4XHNKN">
568
+ Galtzo.com
569
+ <picture>
570
+ <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
571
+ </picture>
572
+ </a>, and yard-yaml contributors.
573
+ </li>
574
+ </ul>
575
+
576
+ ## 🤑 A request for help
577
+
578
+ Maintainers have teeth and need to pay their dentists.
579
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
580
+ I began spending most of my time building open source tools.
581
+ I'm hoping to be able to pay for my kids' health insurance this month,
582
+ so if you value the work I am doing, I need your support.
583
+ Please consider sponsoring me or the project.
584
+
585
+ To join the community or get help 👇️ Join the Discord.
586
+
587
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
588
+
589
+ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
590
+
591
+ [![Sponsor galtzo-floss/yard-yaml on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
592
+
593
+ ### Please give the project a star ⭐ ♥.
594
+
595
+ Thanks for RTFM. ☺️
596
+
597
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
598
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
599
+ [⛳liberapay]: https://liberapay.com/pboling/donate
600
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
601
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
602
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
603
+ [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
604
+ [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
605
+ [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
606
+ [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
607
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
608
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
609
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
610
+ [🖇osc]: https://opencollective.com/galtzo-floss
611
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
612
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
613
+ [🖇sponsor]: https://github.com/sponsors/pboling
614
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
615
+ [🖇polar]: https://polar.sh/pboling
616
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
617
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
618
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
619
+ [🖇patreon]: https://patreon.com/galtzo
620
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
621
+ [🖇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
622
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
623
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
624
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
625
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
626
+ [🖇floss-funding.dev]: https://floss-funding.dev
627
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
628
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
629
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
630
+ [✉️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
631
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
632
+
633
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
634
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/yard-yaml
635
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Yard::Yaml-3C2D2D.svg?style=square&logo=ruby&logoColor=white
636
+ [⛳️gem-name]: https://bestgems.org/gems/yard-yaml
637
+ [⛳️name-img]: https://img.shields.io/badge/name-yard--yaml-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
638
+ [⛳️tag-img]: https://img.shields.io/github/tag/galtzo-floss/yard-yaml.svg
639
+ [⛳️tag]: http://github.com/galtzo-floss/yard-yaml/releases
640
+ [🚂maint-blog]: http://www.railsbling.com/tags/yard-yaml
641
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
642
+ [🚂maint-contact]: http://www.railsbling.com/contact
643
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
644
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
645
+ [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
646
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
647
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
648
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
649
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
650
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
651
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
652
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
653
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
654
+ [💖🌳linktree]: https://linktr.ee/galtzo
655
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
656
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
657
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
658
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
659
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
660
+ [💖🧊berg]: https://codeberg.org/pboling
661
+ [💖🐙hub]: https://github.org/pboling
662
+ [💖🛖hut]: https://sr.ht/~galtzo/
663
+ [💖🧪lab]: https://gitlab.com/pboling
664
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
665
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
666
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
667
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
668
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-yard-yaml?utm_source=rubygems-yard-yaml&utm_medium=referral&utm_campaign=readme
669
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
670
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
671
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
672
+ [🚂railsbling]: http://www.railsbling.com
673
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
674
+ [📜src-gl]: https://gitlab.com/galtzo-floss/yard-yaml/
675
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
676
+ [📜src-cb]: https://codeberg.org/galtzo-floss/yard-yaml
677
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
678
+ [📜src-gh]: https://github.com/galtzo-floss/yard-yaml
679
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
680
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
681
+ [📜gl-wiki]: https://gitlab.com/galtzo-floss/yard-yaml/-/wikis/home
682
+ [📜gh-wiki]: https://github.com/galtzo-floss/yard-yaml/wiki
683
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
684
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
685
+ [👽dl-rank]: https://bestgems.org/gems/yard-yaml
686
+ [👽dl-ranki]: https://img.shields.io/gem/rd/yard-yaml.svg
687
+ [👽oss-help]: https://www.codetriage.com/galtzo-floss/yard-yaml
688
+ [👽oss-helpi]: https://www.codetriage.com/galtzo-floss/yard-yaml/badges/users.svg
689
+ [👽version]: https://bestgems.org/gems/yard-yaml
690
+ [👽versioni]: https://img.shields.io/gem/v/yard-yaml.svg
691
+ [🏀qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml
692
+ [🏀qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml/maintainability.svg
693
+ [🏀qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml/metrics/code?sort=coverageRating
694
+ [🏀qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml/coverage.svg
695
+ [🏀codecov]: https://codecov.io/gh/galtzo-floss/yard-yaml
696
+ [🏀codecovi]: https://codecov.io/gh/galtzo-floss/yard-yaml/graph/badge.svg
697
+ [🏀coveralls]: https://coveralls.io/github/galtzo-floss/yard-yaml?branch=main
698
+ [🏀coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/yard-yaml/badge.svg?branch=main
699
+ [🖐codeQL]: https://github.com/galtzo-floss/yard-yaml/security/code-scanning
700
+ [🖐codeQL-img]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/codeql-analysis.yml/badge.svg
701
+ [🚎1-an-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/ancient.yml
702
+ [🚎1-an-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/ancient.yml/badge.svg
703
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/coverage.yml
704
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/coverage.yml/badge.svg
705
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/heads.yml
706
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/heads.yml/badge.svg
707
+ [🚎4-lg-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/legacy.yml
708
+ [🚎4-lg-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/legacy.yml/badge.svg
709
+ [🚎5-st-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/style.yml
710
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/style.yml/badge.svg
711
+ [🚎6-s-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/supported.yml
712
+ [🚎6-s-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/supported.yml/badge.svg
713
+ [🚎7-us-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unsupported.yml
714
+ [🚎7-us-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unsupported.yml/badge.svg
715
+ [🚎8-ho-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/hoary.yml
716
+ [🚎8-ho-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/hoary.yml/badge.svg
717
+ [🚎9-t-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/truffle.yml
718
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/truffle.yml/badge.svg
719
+ [🚎10-j-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/jruby.yml
720
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/jruby.yml/badge.svg
721
+ [🚎11-c-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/current.yml
722
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/current.yml/badge.svg
723
+ [🚎12-crh-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/dep-heads.yml
724
+ [🚎12-crh-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/dep-heads.yml/badge.svg
725
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/locked_deps.yml
726
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/locked_deps.yml/badge.svg
727
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unlocked_deps.yml
728
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unlocked_deps.yml/badge.svg
729
+ [🚎15-🪪-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/license-eye.yml
730
+ [🚎15-🪪-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/license-eye.yml/badge.svg
731
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
732
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
733
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
734
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
735
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
736
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
737
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
738
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
739
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
740
+ [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
741
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
742
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
743
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
744
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
745
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
746
+ [🤝gh-issues]: https://github.com/galtzo-floss/yard-yaml/issues
747
+ [🤝gh-pulls]: https://github.com/galtzo-floss/yard-yaml/pulls
748
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/yard-yaml/-/issues
749
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/yard-yaml/-/merge_requests
750
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/yard-yaml/issues
751
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/yard-yaml/pulls
752
+ [🤝cb-donate]: https://donate.codeberg.org/
753
+ [🤝contributing]: CONTRIBUTING.md
754
+ [🏀codecov-g]: https://codecov.io/gh/galtzo-floss/yard-yaml/graphs/tree.svg
755
+ [🖐contrib-rocks]: https://contrib.rocks
756
+ [🖐contributors]: https://github.com/galtzo-floss/yard-yaml/graphs/contributors
757
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/yard-yaml
758
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/yard-yaml/-/graphs/main
759
+ [🪇conduct]: CODE_OF_CONDUCT.md
760
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
761
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
762
+ [📌semver]: https://semver.org/spec/v2.0.0.html
763
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
764
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
765
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
766
+ [📌changelog]: CHANGELOG.md
767
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
768
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
769
+ [📌gitmoji]: https://gitmoji.dev
770
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
771
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
772
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.462-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
773
+ [🔐security]: SECURITY.md
774
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
775
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
776
+ [📄license]: LICENSE.txt
777
+ [📄license-ref]: https://opensource.org/licenses/MIT
778
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
779
+ [📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0
780
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
781
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
782
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
783
+ [🚎yard-current]: http://rubydoc.info/gems/yard-yaml
784
+ [🚎yard-head]: https://yard-yaml.galtzo.com
785
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
786
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/yard-yaml/-/tree/main/checksums
787
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
788
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
789
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
790
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
791
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
792
+
793
+
794
+
795
+ ## Quickstart — YARD YAML Plugin
796
+
797
+ Add the plugin and run YARD to integrate YAML into your documentation workflow.
798
+
799
+ ### 1. Install dependencies
800
+
801
+ ```bash
802
+ bundle install
803
+ ```
804
+
805
+ ### 2. Configure `.yardopts`
806
+
807
+ Minimal example (adjust globs/output for your project):
808
+
809
+ ```text
810
+ --plugin yaml
811
+ --markup markdown
812
+ --markup-provider kramdown
813
+ --output docs
814
+ --yard_yaml-include docs/**/*.y{a,}ml
815
+ --yard_yaml-exclude **/_*.y{a,}ml
816
+ --yard_yaml-out_dir yaml
817
+ --yard_yaml-index
818
+ ```
819
+
820
+ NOTE: This gem uses `--plugin fence -e yard/fence/hoist.rb` for its own documentation. `yaml-fence` hoists fenced blocks inside code object docstrings, so that they are transformed to UNICODE fences before YARD sees them, to avoid the `InvalidLink` warnings, but does not convert YAML fences.
821
+
822
+ ### 3. Generate API docs & collect YAML (discovery only)
823
+
824
+ Running `yard` loads the plugin but does not auto-emit standalone YAML pages. Discovery + conversion occur only when you explicitly activate and emit.
825
+
826
+ ```bash
827
+ bundle exec yard
828
+ ```
829
+
830
+ ### 4. Emit standalone YAML pages (manual step)
831
+
832
+ Invoke activation + emission in a separate Ruby process (pass the same flags you used in `.yardopts` so discovery matches):
833
+
834
+ ```bash
835
+ ruby -r yard/yaml -e 'Yard::Yaml::Plugin.activate(%w[--yard_yaml-include docs/**/*.y{a,}ml --yard_yaml-exclude **/_*.y{a,}ml --yard_yaml-out_dir yaml --yard_yaml-index]); Yard::Yaml::Emitter.emit!(pages: Yard::Yaml.pages, output_dir: "docs", config: Yard::Yaml.config)'
836
+ ```
837
+
838
+ Result:
839
+
840
+ - Pages written to `docs/yaml/<slug>.html`
841
+ - Index (if enabled) at `docs/yaml/index.html`
842
+ - Sidebar entries (via theme hooks) link to these pages
843
+
844
+ ### 5. Inline YAML in code object docstrings
845
+
846
+ Preferred: use tags.
847
+
848
+ ```ruby
849
+ # @yaml
850
+ # ---
851
+ # title: Inline Example
852
+ # description: Demonstrates inline conversion.
853
+ # ---
854
+ # a: 1
855
+ # b: 2
856
+ ```
857
+
858
+ ```ruby
859
+ # @yaml_file docs/config/app.yml
860
+ ```
861
+
862
+ Theme hooks insert converted HTML right after the main docstring. Strict mode governs failure behavior.
863
+
864
+ ### 6. YAML in Markdown (GFM) fenced blocks
865
+
866
+ Standalone Markdown pages (e.g. README sections) treat:
867
+
868
+ ````markdown
869
+ ```yaml
870
+ key: value
871
+ ```
872
+ ````
873
+
874
+ as a code block. This plugin does NOT yet auto-convert fenced YAML in arbitrary Markdown pages.
875
+
876
+ Workarounds:
877
+
878
+ - Link to emitted page: `[Full Config](./yaml/config.html)`
879
+ - Pre-convert & paste HTML:
880
+ ```bash
881
+ ruby -r yard/yaml -e 'print Yard::Yaml::Converter.from_string(File.read(ARGV[0]))[:html]' docs/config/app.yml > tmp.html
882
+ ```
883
+ Paste the resulting HTML (Kramdown allows raw HTML). Optionally wrap:
884
+ ```html
885
+ <div class="yyaml-inline">(converted YAML html here)</div>
886
+ ```
887
+
888
+ ### Front Matter Support
889
+
890
+ Example `docs/config/app.yml`:
891
+
892
+ ```yaml
893
+ ---
894
+ # Front matter fields consumed by yaml-converter
895
+ title: Application Configuration
896
+ nav_order: 10
897
+ description: Core settings
898
+ slug: app-config
899
+ ---
900
+ app:
901
+ name: demo
902
+ enabled: true
903
+ ```
904
+
905
+ Parsed fields:
906
+ - `title`, `description` for page heading & sidebar
907
+ - `nav_order` for ordering
908
+ - `slug` overrides derived slug
909
+
910
+ ### Strict Mode & Safety
911
+
912
+ - `--yard_yaml-strict=true`: raise `Yard::Yaml::Error` on missing file, conversion, or write errors.
913
+ - Default (non-strict): warn and skip.
914
+ - ERB disabled by default (`allow_erb=false`); enable only if you trust sources: `--yard_yaml-allow_erb=true`.
915
+
916
+ ### Converter Options
917
+
918
+ Customize yaml-converter behavior (example):
919
+
920
+ ```text
921
+ --yard_yaml-converter_options pretty:true,wrap:80
922
+ ```
923
+
924
+ Boolean/number coercion is handled automatically.
925
+
926
+ ### Why not `yaml-markdown`?
927
+
928
+ Unnecessary here. YARD already processes Markdown via `--markup markdown --markup-provider kramdown`. This plugin focuses on YAML discovery, conversion, tagging, and emission, leveraging the `yaml-converter` dependency.
929
+
930
+ ### Limitations & Roadmap
931
+
932
+ Current limitations:
933
+
934
+ - No automatic emission during `yard` run (manual step required)
935
+ - No automatic conversion of fenced YAML in standalone Markdown pages
936
+ - Minimal default HTML for emitted pages (simple inline styles)
937
+
938
+ Planned improvements (subject to change):
939
+
940
+ - Automatic emission hook in the generation pipeline
941
+ - Optional fenced YAML auto-conversion in Markdown
942
+ - Enhanced theming & TOC modes beyond `auto`
943
+ - Search integration across YAML content
944
+
945
+ ### Troubleshooting Quick Reference
946
+
947
+ | Symptom | Fix |
948
+ |----------------------------|----------------------------------------------------------|
949
+ | Sidebar links 404 | Run emission step (Step 4) |
950
+ | Missing expected YAML page | Verify include/exclude globs & rerun emission |
951
+ | Inline tag shows empty | Ensure YAML content is valid; check strict mode warnings |
952
+ | Fenced YAML not converted | Use tags or pre-convert & paste HTML |
953
+ | ERB ignored | Enable `--yard_yaml-allow_erb=true` (security trade-off) |
954
+ | Build fails in strict mode | Rerun without strict to inspect warnings |
955
+
956
+ ## 🦷 FLOSS Funding
957
+
958
+ While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
959
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
960
+
961
+ We welcome both individual and corporate sponsors! We also offer a
962
+ wide array of funding channels to account for your preferences
963
+ (although currently [Open Collective][🖇osc] is our preferred funding platform).
964
+
965
+ **If you're working in a company that's making significant use of galtzo-floss tools we'd
966
+ appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
967
+
968
+ You can support the development of galtzo-floss tools via
969
+ [GitHub Sponsors][🖇sponsor],
970
+ [Liberapay][⛳liberapay],
971
+ [PayPal][🖇paypal],
972
+ [Open Collective][🖇osc]
973
+ and [Tidelift][🏙️entsup-tidelift].
974
+
975
+ | 📍 NOTE |
976
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
977
+ | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
978
+
979
+ ### Open Collective for Individuals
980
+
981
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
982
+
983
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
984
+
985
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
986
+ No backers yet. Be the first!
987
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
988
+
989
+ ### Open Collective for Organizations
990
+
991
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/galtzo-floss#sponsor)]
992
+
993
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
994
+
995
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
996
+ No sponsors yet. Be the first!
997
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
998
+
999
+ [kettle-readme-backers]: https://github.com/galtzo-floss/yard-yaml/blob/main/exe/kettle-readme-backers
1000
+
1001
+ ### Another way to support open-source
1002
+
1003
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
1004
+
1005
+ If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
1006
+
1007
+ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
1008
+
1009
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
1010
+
1011
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![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 on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
1012
+
1013
+ ## 🔐 Security
1014
+
1015
+ See [SECURITY.md][🔐security].
1016
+
1017
+ ## 🤝 Contributing
1018
+
1019
+ If you need some ideas of where to help, you could work on adding more code coverage,
1020
+ or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
1021
+ or use the gem and think about how it could be better.
1022
+
1023
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
1024
+
1025
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
1026
+
1027
+ ### 🚀 Release Instructions
1028
+
1029
+ See [CONTRIBUTING.md][🤝contributing].
1030
+
1031
+ ### Code Coverage
1032
+
1033
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
1034
+
1035
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
1036
+
1037
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
1038
+
1039
+ ### 🪇 Code of Conduct
1040
+
1041
+ Everyone interacting with this project's codebases, issue trackers,
1042
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
1043
+
1044
+ ## 🌈 Contributors
1045
+
1046
+ [![Contributors][🖐contributors-img]][🖐contributors]
1047
+
1048
+ Made with [contributors-img][🖐contrib-rocks].
1049
+
1050
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/yard-yaml/-/graphs/main][🚎contributors-gl]
1051
+
1052
+ <details>
1053
+ <summary>⭐️ Star History</summary>
1054
+
1055
+ <a href="https://star-history.com/#galtzo-floss/yard-yaml&Date">
1056
+ <picture>
1057
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/yard-yaml&type=Date&theme=dark" />
1058
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/yard-yaml&type=Date" />
1059
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=galtzo-floss/yard-yaml&type=Date" />
1060
+ </picture>
1061
+ </a>
1062
+
1063
+ </details>
1064
+
1065
+ ## 📌 Versioning
1066
+
1067
+ This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
1068
+ Violations of this scheme should be reported as bugs.
1069
+ Specifically, if a minor or patch version is released that breaks backward compatibility,
1070
+ a new version should be immediately released that restores compatibility.
1071
+ Breaking changes to the public API will only be introduced with new major versions.
1072
+
1073
+ > dropping support for a platform is both obviously and objectively a breaking change <br/>
1074
+ >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
1075
+
1076
+ I understand that policy doesn't work universally ("exceptions to every rule!"),
1077
+ but it is the policy here.
1078
+ As such, in many cases it is good to specify a dependency on this library using
1079
+ the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
1080
+
1081
+ For example:
1082
+
1083
+ ```ruby
1084
+ spec.add_dependency("yard-yaml", "~> 1.0")
1085
+ ```
1086
+
1087
+ <details markdown="1">
1088
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
1089
+
1090
+ SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
1091
+ is a *breaking change* to an API, and for that reason the bike shedding is endless.
1092
+
1093
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
1094
+ read this article from the creator of SemVer:
1095
+
1096
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
1097
+
1098
+ </details>
1099
+
1100
+ See [CHANGELOG.md][📌changelog] for a list of releases.
1101
+
1102
+ ## 📄 License
1103
+
1104
+ The gem is available as open source under the terms of
1105
+ the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
1106
+ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
1107
+
1108
+ ### © Copyright
1109
+
1110
+ <ul>
1111
+ <li>
1112
+ Copyright (c) 2025 Aboling0 & Peter H. Boling, of
1113
+ <a href="https://discord.gg/3qme4XHNKN">
1114
+ Galtzo.com
1115
+ <picture>
1116
+ <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
1117
+ </picture>
1118
+ </a>, and yard-yaml contributors.
1119
+ </li>
1120
+ </ul>
1121
+
1122
+ ## 🤑 A request for help
1123
+
1124
+ Maintainers have teeth and need to pay their dentists.
1125
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
1126
+ I began spending most of my time building open source tools.
1127
+ I'm hoping to be able to pay for my kids' health insurance this month,
1128
+ so if you value the work I am doing, I need your support.
1129
+ Please consider sponsoring me or the project.
1130
+
1131
+ To join the community or get help 👇️ Join the Discord.
1132
+
1133
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
1134
+
1135
+ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
1136
+
1137
+ [![Sponsor galtzo-floss/yard-yaml on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
1138
+
1139
+ ### Please give the project a star ⭐ ♥.
1140
+
1141
+ Thanks for RTFM. ☺️
1142
+
1143
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
1144
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
1145
+ [⛳liberapay]: https://liberapay.com/pboling/donate
1146
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
1147
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
1148
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
1149
+ [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
1150
+ [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
1151
+ [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
1152
+ [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
1153
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
1154
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
1155
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
1156
+ [🖇osc]: https://opencollective.com/galtzo-floss
1157
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
1158
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
1159
+ [🖇sponsor]: https://github.com/sponsors/pboling
1160
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
1161
+ [🖇polar]: https://polar.sh/pboling
1162
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
1163
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
1164
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
1165
+ [🖇patreon]: https://patreon.com/galtzo
1166
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
1167
+ [🖇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
1168
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
1169
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
1170
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
1171
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
1172
+ [🖇floss-funding.dev]: https://floss-funding.dev
1173
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
1174
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
1175
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
1176
+ [✉️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
1177
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
1178
+
1179
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
1180
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/yard-yaml
1181
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Yard::Yaml-3C2D2D.svg?style=square&logo=ruby&logoColor=white
1182
+ [⛳️gem-name]: https://bestgems.org/gems/yard-yaml
1183
+ [⛳️name-img]: https://img.shields.io/badge/name-yard--yaml-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
1184
+ [⛳️tag-img]: https://img.shields.io/github/tag/galtzo-floss/yard-yaml.svg
1185
+ [⛳️tag]: http://github.com/galtzo-floss/yard-yaml/releases
1186
+ [🚂maint-blog]: http://www.railsbling.com/tags/yard-yaml
1187
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
1188
+ [🚂maint-contact]: http://www.railsbling.com/contact
1189
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
1190
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
1191
+ [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
1192
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
1193
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
1194
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
1195
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
1196
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
1197
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
1198
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
1199
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
1200
+ [💖🌳linktree]: https://linktr.ee/galtzo
1201
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
1202
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
1203
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
1204
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
1205
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
1206
+ [💖🧊berg]: https://codeberg.org/pboling
1207
+ [💖🐙hub]: https://github.org/pboling
1208
+ [💖🛖hut]: https://sr.ht/~galtzo/
1209
+ [💖🧪lab]: https://gitlab.com/pboling
1210
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
1211
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
1212
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
1213
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
1214
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-yard-yaml?utm_source=rubygems-yard-yaml&utm_medium=referral&utm_campaign=readme
1215
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
1216
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
1217
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
1218
+ [🚂railsbling]: http://www.railsbling.com
1219
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
1220
+ [📜src-gl]: https://gitlab.com/galtzo-floss/yard-yaml/
1221
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
1222
+ [📜src-cb]: https://codeberg.org/galtzo-floss/yard-yaml
1223
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
1224
+ [📜src-gh]: https://github.com/galtzo-floss/yard-yaml
1225
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
1226
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
1227
+ [📜gl-wiki]: https://gitlab.com/galtzo-floss/yard-yaml/-/wikis/home
1228
+ [📜gh-wiki]: https://github.com/galtzo-floss/yard-yaml/wiki
1229
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
1230
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
1231
+ [👽dl-rank]: https://bestgems.org/gems/yard-yaml
1232
+ [👽dl-ranki]: https://img.shields.io/gem/rd/yard-yaml.svg
1233
+ [👽oss-help]: https://www.codetriage.com/galtzo-floss/yard-yaml
1234
+ [👽oss-helpi]: https://www.codetriage.com/galtzo-floss/yard-yaml/badges/users.svg
1235
+ [👽version]: https://bestgems.org/gems/yard-yaml
1236
+ [👽versioni]: https://img.shields.io/gem/v/yard-yaml.svg
1237
+ [🏀qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml
1238
+ [🏀qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml/maintainability.svg
1239
+ [🏀qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml/metrics/code?sort=coverageRating
1240
+ [🏀qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/yard-yaml/coverage.svg
1241
+ [🏀codecov]: https://codecov.io/gh/galtzo-floss/yard-yaml
1242
+ [🏀codecovi]: https://codecov.io/gh/galtzo-floss/yard-yaml/graph/badge.svg
1243
+ [🏀coveralls]: https://coveralls.io/github/galtzo-floss/yard-yaml?branch=main
1244
+ [🏀coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/yard-yaml/badge.svg?branch=main
1245
+ [🖐codeQL]: https://github.com/galtzo-floss/yard-yaml/security/code-scanning
1246
+ [🖐codeQL-img]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/codeql-analysis.yml/badge.svg
1247
+ [🚎1-an-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/ancient.yml
1248
+ [🚎1-an-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/ancient.yml/badge.svg
1249
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/coverage.yml
1250
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/coverage.yml/badge.svg
1251
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/heads.yml
1252
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/heads.yml/badge.svg
1253
+ [🚎4-lg-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/legacy.yml
1254
+ [🚎4-lg-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/legacy.yml/badge.svg
1255
+ [🚎5-st-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/style.yml
1256
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/style.yml/badge.svg
1257
+ [🚎6-s-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/supported.yml
1258
+ [🚎6-s-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/supported.yml/badge.svg
1259
+ [🚎7-us-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unsupported.yml
1260
+ [🚎7-us-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unsupported.yml/badge.svg
1261
+ [🚎8-ho-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/hoary.yml
1262
+ [🚎8-ho-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/hoary.yml/badge.svg
1263
+ [🚎9-t-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/truffle.yml
1264
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/truffle.yml/badge.svg
1265
+ [🚎10-j-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/jruby.yml
1266
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/jruby.yml/badge.svg
1267
+ [🚎11-c-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/current.yml
1268
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/current.yml/badge.svg
1269
+ [🚎12-crh-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/dep-heads.yml
1270
+ [🚎12-crh-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/dep-heads.yml/badge.svg
1271
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/locked_deps.yml
1272
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/locked_deps.yml/badge.svg
1273
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unlocked_deps.yml
1274
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/unlocked_deps.yml/badge.svg
1275
+ [🚎15-🪪-wf]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/license-eye.yml
1276
+ [🚎15-🪪-wfi]: https://github.com/galtzo-floss/yard-yaml/actions/workflows/license-eye.yml/badge.svg
1277
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
1278
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
1279
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
1280
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
1281
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
1282
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
1283
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
1284
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
1285
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
1286
+ [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
1287
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
1288
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
1289
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
1290
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
1291
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
1292
+ [🤝gh-issues]: https://github.com/galtzo-floss/yard-yaml/issues
1293
+ [🤝gh-pulls]: https://github.com/galtzo-floss/yard-yaml/pulls
1294
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/yard-yaml/-/issues
1295
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/yard-yaml/-/merge_requests
1296
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/yard-yaml/issues
1297
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/yard-yaml/pulls
1298
+ [🤝cb-donate]: https://donate.codeberg.org/
1299
+ [🤝contributing]: CONTRIBUTING.md
1300
+ [🏀codecov-g]: https://codecov.io/gh/galtzo-floss/yard-yaml/graphs/tree.svg
1301
+ [🖐contrib-rocks]: https://contrib.rocks
1302
+ [🖐contributors]: https://github.com/galtzo-floss/yard-yaml/graphs/contributors
1303
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/yard-yaml
1304
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/yard-yaml/-/graphs/main
1305
+ [🪇conduct]: CODE_OF_CONDUCT.md
1306
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
1307
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
1308
+ [📌semver]: https://semver.org/spec/v2.0.0.html
1309
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
1310
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
1311
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
1312
+ [📌changelog]: CHANGELOG.md
1313
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
1314
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
1315
+ [📌gitmoji]: https://gitmoji.dev
1316
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1317
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1318
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.462-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1319
+ [🔐security]: SECURITY.md
1320
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1321
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
1322
+ [📄license]: LICENSE.txt
1323
+ [📄license-ref]: https://opensource.org/licenses/MIT
1324
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
1325
+ [📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0
1326
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
1327
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
1328
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
1329
+ [🚎yard-current]: http://rubydoc.info/gems/yard-yaml
1330
+ [🚎yard-head]: https://yard-yaml.galtzo.com
1331
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
1332
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/yard-yaml/-/tree/main/checksums
1333
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
1334
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
1335
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
1336
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
1337
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
1338
+
1339
+
1340
+