version_gem 1.1.4 → 1.1.6

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 CHANGED
@@ -1,11 +1,46 @@
1
1
  # VersionGem
2
2
 
3
+ [![Version][👽versioni]][👽version]
4
+ [![License: MIT][📄license-img]][📄license-ref]
5
+ [![Downloads Rank][👽dl-ranki]][👽dl-rank]
6
+ [![Open Source Helpers][👽oss-helpi]][👽oss-help]
7
+ [![Depfu][🔑depfui♻️]][🔑depfu]
8
+ [![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov]
9
+ [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
10
+ [![CodeClimate Test Coverage][🔑cc-covi♻️]][🔑cc-cov]
11
+ [![Maintainability][🔑cc-mnti♻️]][🔑cc-mnt]
12
+ [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf]
13
+ [![CI Current][🚎11-c-wfi]][🚎11-c-wf]
14
+ [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf]
15
+ [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf]
16
+ [![CI Supported][🚎6-s-wfi]][🚎6-s-wf]
17
+ [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf]
18
+ [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf]
19
+ [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf]
20
+ [![CI Hoary][🚎8-ho-wfi]][🚎8-ho-wf]
21
+ [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf]
22
+ [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
23
+
24
+ ---
25
+
26
+ [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
27
+ [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
28
+ [![Buy me a coffee][🖇buyme-small-img]][🖇buyme]
29
+ [![Polar Shield][🖇polar-img]][🖇polar]
30
+ [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
31
+ [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
32
+
3
33
  ## Alternatives
4
34
 
5
35
  This gem has a very niche purpose, which is:
6
36
 
7
- 1. providing introspection of a `Version` module based on a `Version::VERSION` constant string,
8
- 2. while not interfering with `gemspec` parsing where the `VERSION` string is traditionally used.
37
+ 1. providing introspection of a `Version` module based on a `VERSION` constant string within it,
38
+ 2. while not interfering with `gemspec` parsing where the `VERSION` string is traditionally used,
39
+ 3. allowing 100% test coverage of Ruby code, including the `Version` module.
40
+
41
+ As proof in the pudding, this gem achieves 100% test coverage for lines and branches,
42
+ all 77 and 2 of them, respectively; coverage enabled in part by patterns from this library.
43
+ You can make it happen for your library too!
9
44
 
10
45
  If this isn't **precisely** your use case you may be better off looking at
11
46
  _[versionaire](https://www.alchemists.io/projects/versionaire)_, a wonderful, performant, well-maintained,
@@ -13,26 +48,6 @@ gem from the Alchemists, or _[version_sorter](https://rubygems.org/gems/version_
13
48
 
14
49
  For more discussion about this [see issue #2](https://gitlab.com/oauth-xx/version_gem/-/issues/2)
15
50
 
16
- -----
17
-
18
- <div id="badges">
19
-
20
- [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
21
- [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
22
- <span class="badge-buymeacoffee">
23
- <a href="https://ko-fi.com/O5O86SNP4" target='_blank' title="Donate to my FLOSS or refugee efforts at ko-fi.com"><img src="https://img.shields.io/badge/buy%20me%20coffee-donate-yellow.svg" alt="Buy me coffee donation button" /></a>
24
- </span>
25
- <span class="badge-patreon">
26
- <a href="https://patreon.com/galtzo" title="Donate to my FLOSS or refugee efforts using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a>
27
- </span>
28
-
29
- </div>
30
-
31
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
32
- [⛳liberapay]: https://liberapay.com/pboling/donate
33
- [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
34
- [🖇sponsor]: https://github.com/sponsors/pboling
35
-
36
51
  ## Still here?
37
52
 
38
53
  Give your next library an introspectable `Version` module without breaking your Gemspec.
@@ -51,134 +66,21 @@ This library was extracted from the gem _[oauth2](https://gitlab.com/oauth-xx/oa
51
66
 
52
67
  This gem has no runtime dependencies.
53
68
 
54
- <!--
55
- Numbering rows and badges in each row as a visual "database" lookup,
56
- as the table is extremely dense, and it can be very difficult to find anything
57
- Putting one on each row here, to document the emoji that should be used, and for ease of copy/paste.
58
-
59
- row #s:
60
- 1️⃣
61
- 2️⃣
62
- 3️⃣
63
- 4️⃣
64
- 5️⃣
65
- 6️⃣
66
- 7️⃣
67
-
68
- badge #s:
69
- ⛳️
70
- 🖇
71
- 🏘
72
- 🚎
73
- 🖐
74
- 🧮
75
- 📗
76
-
77
- appended indicators:
78
- ♻️ - URL needs to be updated from SAAS integration. Find / Replace is insufficient.
79
- -->
80
-
81
- | | Project | bundle add version_gem |
82
- |:----|--------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
83
- | 1️⃣ | name, license, docs, standards | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] [![RubyDoc.info][🚎yard-img]][🚎yard] [![SemVer 2.0.0][🧮semver-img]][🧮semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] |
84
- | 2️⃣ | version & activity | [![Gem Version][⛳️version-img]][⛳️gem] [![Total Downloads][🖇DL-total-img]][⛳️gem] [![Download Rank][🏘DL-rank-img]][⛳️gem] [![Source Code][🚎src-main-img]][🚎src-main] [![Open PRs][🖐prs-o-img]][🖐prs-o] [![Closed PRs][🧮prs-c-img]][🧮prs-c] |
85
- | 3️⃣ | maintenance & linting | [![Maintainability][⛳cclim-maint-img♻️]][⛳cclim-maint] [![Helpers][🖇triage-help-img]][🖇triage-help] [![Depfu][🏘depfu-img♻️]][🏘depfu♻️] [![Contributors][🚎contributors-img]][🚎contributors] [![Style][🖐style-wf-img]][🖐style-wf] [![Kloc Roll][🧮kloc-img]][🧮kloc] |
86
- | 4️⃣ | testing | [![Supported][🏘sup-wf-img]][🏘sup-wf] [![Heads][🚎heads-wf-img]][🚎heads-wf] [![Unofficial Support][🖐uns-wf-img]][🖐uns-wf] <!--[![MacOS][🧮mac-wf-img]][🧮mac-wf] [![Windows][📗win-wf-img]][📗win-wf]--> |
87
- | 5️⃣ | coverage & security | [![CodeClimate][⛳cclim-cov-img♻️]][⛳cclim-cov] [![CodeCov][🖇codecov-img♻️]][🖇codecov] [![Coveralls][🏘coveralls-img]][🏘coveralls] [![Security Policy][🚎sec-pol-img]][🚎sec-pol] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Code Coverage][🧮cov-wf-img]][🧮cov-wf] |
88
- | 6️⃣ | resources | [![Get help on Codementor][🖇codementor-img]][🖇codementor] [![Chat][🏘chat-img]][🏘chat] [![Blog][🚎blog-img]][🚎blog] [![Wiki][🖐wiki-img]][🖐wiki] |
89
- | 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] |
90
-
91
- <!--
92
- The link tokens in the following sections should be kept ordered by the row and badge numbering scheme
93
- -->
94
-
95
- <!-- 1️⃣ name, license, docs -->
96
- [⛳️gem]: https://rubygems.org/gems/version_gem
97
- [⛳️name-img]: https://img.shields.io/badge/name-version_gem-brightgreen.svg?style=flat
98
- [🖇src-license]: https://opensource.org/licenses/MIT
99
- [🖇src-license-img]: https://img.shields.io/badge/License-MIT-green.svg
100
- [🚎yard]: https://www.rubydoc.info/gems/version_gem
101
- [🚎yard-img]: https://img.shields.io/badge/documentation-rubydoc-brightgreen.svg?style=flat
102
- [🧮semver]: http://semver.org/
103
- [🧮semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
104
- [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
105
- [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
106
-
107
- <!-- 2️⃣ version & activity -->
108
- [⛳️version-img]: http://img.shields.io/gem/v/version_gem.svg
109
- [🖇DL-total-img]: https://img.shields.io/gem/dt/version_gem.svg
110
- [🏘DL-rank-img]: https://img.shields.io/gem/rt/version_gem.svg
111
- [🚎src-main]: https://gitlab.com/oauth-xx/version_gem
112
- [🚎src-main-img]: https://img.shields.io/badge/source-gitlab-brightgreen.svg?style=flat
113
- [🖐prs-o]: https://gitlab.com/oauth-xx/version_gem/-/merge_requests
114
- [🖐prs-o-img]: https://img.shields.io/github/issues-pr/pboling/version_gem
115
- [🧮prs-c]: https://github.com/pboling/version_gem/pulls?q=is%3Apr+is%3Aclosed
116
- [🧮prs-c-img]: https://img.shields.io/github/issues-pr-closed/pboling/version_gem
117
-
118
- <!-- 3️⃣ maintenance & linting -->
119
- [⛳cclim-maint]: https://codeclimate.com/github/pboling/version_gem/maintainability
120
- [⛳cclim-maint-img♻️]: https://api.codeclimate.com/v1/badges/b504d61c4ed1d46aec02/maintainability
121
- [🖇triage-help]: https://www.codetriage.com/pboling/version_gem
122
- [🖇triage-help-img]: https://www.codetriage.com/pboling/version_gem/badges/users.svg
123
- [🏘depfu♻️]: https://depfu.com/github/pboling/version_gem?project_id=35803
124
- [🏘depfu-img♻️]: https://badges.depfu.com/badges/5d8943de6cfdf1ee048ad6d907f3e35b/count.svg
125
- [🚎contributors]: https://gitlab.com/oauth-xx/version_gem/-/graphs/main
126
- [🚎contributors-img]: https://img.shields.io/github/contributors-anon/pboling/version_gem
127
- [🖐style-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/style.yml
128
- [🖐style-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/style.yml/badge.svg
129
- [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
130
- [🧮kloc-img]: https://img.shields.io/tokei/lines/github.com/pboling/version_gem
131
-
132
- <!-- 4️⃣ testing -->
133
- [🏘sup-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/supported.yml
134
- [🏘sup-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/supported.yml/badge.svg
135
- [🚎heads-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/heads.yml
136
- [🚎heads-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/heads.yml/badge.svg
137
- [🖐uns-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/unsupported.yml
138
- [🖐uns-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/unsupported.yml/badge.svg
139
- [🧮mac-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/macos.yml
140
- [🧮mac-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/macos.yml/badge.svg
141
- [📗win-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/windows.yml
142
- [📗win-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/windows.yml/badge.svg
143
-
144
- <!-- 5️⃣ coverage & security -->
145
- [⛳cclim-cov]: https://codeclimate.com/github/pboling/version_gem/test_coverage
146
- [⛳cclim-cov-img♻️]: https://api.codeclimate.com/v1/badges/b504d61c4ed1d46aec02/test_coverage
147
- [🖇codecov-img♻️]: https://codecov.io/gh/pboling/version_gem/branch/main/graph/badge.svg?token=79c3X4vtfO
148
- [🖇codecov]: https://codecov.io/gh/pboling/version_gem
149
- [🏘coveralls]: https://coveralls.io/github/pboling/version_gem?branch=main
150
- [🏘coveralls-img]: https://coveralls.io/repos/github/pboling/version_gem/badge.svg?branch=main
151
- [🚎sec-pol]: https://gitlab.com/oauth-xx/version_gem/-/blob/main/SECURITY.md
152
- [🚎sec-pol-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
153
- [🖐codeQL]: https://github.com/pboling/version_gem/security/code-scanning
154
- [🖐codeQL-img]: https://github.com/oauth-xx/version_gem/actions/workflows/codeql-analysis.yml/badge.svg
155
- [🧮cov-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/coverage.yml
156
- [🧮cov-wf-img]: https://github.com/oauth-xx/version_gem/actions/workflows/coverage.yml/badge.svg
157
-
158
- <!-- 6️⃣ resources -->
159
- [🖇codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
160
- [🖇codementor-img]: https://cdn.codementor.io/badges/get_help_github.svg
161
- [🏘chat]: https://gitter.im/oauth-xx/version_gem
162
- [🏘chat-img]: https://img.shields.io/gitter/room/oauth-xx/version_gem.svg
163
- [🚎blog]: http://www.railsbling.com/tags/version_gem/
164
- [🚎blog-img]: https://img.shields.io/badge/blog-railsbling-brightgreen.svg?style=flat
165
- [🖐wiki]: https://gitlab.com/oauth-xx/version_gem/-/wikis/home
166
- [🖐wiki-img]: https://img.shields.io/badge/wiki-examples-brightgreen.svg?style=flat
167
-
168
- <!-- 7️⃣ spread 💖 -->
169
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
170
- [⛳liberapay]: https://liberapay.com/pboling/donate
171
- [🖇sponsor-img]: https://img.shields.io/badge/sponsor-pboling.svg?style=social&logo=github
172
- [🖇sponsor]: https://github.com/sponsors/pboling
173
- [🏘tweet-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
174
- [🏘tweet]: http://twitter.com/galtzo
175
-
176
- <!-- Maintainer Contact Links -->
177
- [railsbling]: http://www.railsbling.com
178
- [peterboling]: http://www.peterboling.com
179
- [aboutme]: https://about.me/peter.boling
180
- [angelme]: https://angel.co/peter-boling
181
- [coderme]:http://coderwall.com/pboling
69
+ ## Info you can shake a stick at
70
+
71
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
72
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
73
+ | Works with JRuby | [![JRuby 9.1 Compat][💎jruby-9.1i]][🚎10-j-wf] [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎10-j-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎10-j-wf] [![JRuby 9.4 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
74
+ | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎9-t-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎9-t-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf] |
75
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![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] |
76
+ | Works with MRI Ruby 2 | [![Ruby 2.2 Compat][💎ruby-2.2i]][🚎8-ho-wf] [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
77
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
78
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![HEAD on RubyDoc.info][📜docs-head-rd-img]][🚎yard-head] [![BDFL Blog][🚂bdfl-blog-img]][🚂bdfl-blog] [![Wiki][📜wiki-img]][📜wiki] |
79
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] |
80
+ | Expert 1:1 Support | [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] `or` [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
81
+ | Enterprise Support | [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]<br/>💡Subscribe for support guarantees covering _all_ FLOSS dependencies!<br/>💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]!<br/>💡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! |
82
+ | Comrade BDFL 🎖️ | [![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 BDFL][🚂bdfl-contact-img]][🚂bdfl-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
83
+ | `...` 💖 | [![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] |
182
84
 
183
85
  ## Installation
184
86
 
@@ -237,14 +139,33 @@ MyLib::Version.to_a # => [0, 1, 0]
237
139
  MyLib::Version.to_h # => { major: 0, minor: 1, patch: 0, pre: "" }
238
140
  ```
239
141
 
240
- ### Side benefit
142
+ ### Side benefit #1
143
+
144
+ You can reference the version from your gemspec, keeping the version string DRY,
145
+ *and* still get accurate code coverage!
146
+
147
+ ```ruby
148
+ # Get the GEMFILE_VERSION without *require* "my_gem/version", for code coverage accuracy
149
+ # See: https://github.com/simplecov-ruby/simplecov/issues/557#issuecomment-2630782358
150
+ # Kernel.load because load is overloaded in RubyGems during gemspec evaluation
151
+ Kernel.load("lib/my_gem/version.rb")
152
+ gem_version = MyGem::Version::VERSION
153
+ MyGem::Version.send(:remove_const, :VERSION)
154
+
155
+ Gem::Specification.new do |spec|
156
+ # ...
157
+ spec.version = gem_version
158
+ end
159
+ ```
160
+
161
+ ### Side benefit #2
241
162
 
242
163
  Your `version.rb` file now abides the Ruby convention of directory / path matching the namespace / class!
243
164
 
244
165
  ### Zietwerk
245
166
 
246
167
  The pattern of `version.rb` breaking the ruby convention of directory / path matching the namespace / class
247
- is so entrenched that the `zeitwerk` library has a special carve-out for it.
168
+ is so entrenched that the `zeitwerk` library has a special carve-out for it. 🥺
248
169
  RubyGems using this "bad is actually good" pattern are encouraged to use `Zeitwerk.for_gem`.
249
170
 
250
171
  **Do not do that ^** if you use this gem.
@@ -283,8 +204,9 @@ end
283
204
 
284
205
  #### Complex Zeitwerk Example
285
206
 
207
+ Maybe you would like to contribute one?
286
208
 
287
- #### Query Ruby Version (as of version 1.2.0)
209
+ #### Query Ruby Version (as of version 1.1.2)
288
210
 
289
211
  In Continuous Integration environments for libraries that run against many versions of Ruby,
290
212
  I often need to configure things discretely per Ruby version, and doing so forced me to repeat
@@ -330,7 +252,7 @@ RSpec.describe(MyLib::Version) do
330
252
  it_behaves_like "a Version module", described_class
331
253
  end
332
254
 
333
- # Or, if you want to write your own, here is the a la carte menu:
255
+ # Or, if you want to write your own, here is the á la carte menu:
334
256
  RSpec.describe(MyLib::Version) do
335
257
  it "is a Version module" do
336
258
  expect(described_class).is_a?(Module)
@@ -347,43 +269,75 @@ RSpec.describe(MyLib::Version) do
347
269
  end
348
270
  ```
349
271
 
350
- ## Development
272
+ ## 🔐 Security
351
273
 
352
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
274
+ See [SECURITY.md][🔐security].
353
275
 
354
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
276
+ ## 🤝 Contributing
355
277
 
356
- ## Contributing
278
+ If you need some ideas of where to help, you could work on adding more code coverage,
279
+ or if it is already 💯 (see [below](#code-coverage)) then check [issues][🤝issues], or [PRs][🤝pulls],
280
+ or use the gem and think about how it could be better.
357
281
 
358
- See [CONTRIBUTING.md][contributing]
282
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
359
283
 
360
- ## Contributors
284
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
361
285
 
362
- [![Contributors](https://contrib.rocks/image?repo=pboling/version_gem)]("https://gitlab.com/oauth-xx/version_gem/-/graphs/main")
286
+ ### Code Coverage
363
287
 
364
- Made with [contributors-img](https://contrib.rocks).
288
+ [![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
365
289
 
366
- ## License
290
+ ### 🪇 Code of Conduct
367
291
 
368
- The gem is available as open source under the terms of
369
- the [MIT License][license] [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)][license-ref].
370
- See [LICENSE][license] for the official [Copyright Notice][copyright-notice-explainer].
292
+ Everyone interacting in this project's codebases, issue trackers,
293
+ chat rooms and mailing lists is expected to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
294
+
295
+ ## 🌈 Contributors
296
+
297
+ [![Contributors][🖐contributors-img]][🖐contributors]
298
+
299
+ Made with [contributors-img][🖐contrib-rocks].
300
+
301
+ Also see GitLab Contributors: [https://gitlab.com/oauth-xx/version_gem/-/graphs/main][🚎contributors-gl]
302
+
303
+ ## ⭐️ Star History
371
304
 
372
- * Copyright (c) 2022 - 2023 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
305
+ <a href="https://star-history.com/#oauth-xx/version_gem&Date">
306
+ <picture>
307
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oauth-xx/version_gem&type=Date&theme=dark" />
308
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oauth-xx/version_gem&type=Date" />
309
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oauth-xx/version_gem&type=Date" />
310
+ </picture>
311
+ </a>
373
312
 
374
- ## Code of Conduct
313
+ ## 📌 Versioning
375
314
 
376
- Everyone interacting in the VersionGem project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://gitlab.com/oauth-xx/version_gem/-/blob/main/CODE_OF_CONDUCT.md).
315
+ This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
316
+ Violations of this scheme should be reported as bugs.
317
+ Specifically, if a minor or patch version is released that breaks backward compatibility,
318
+ a new version should be immediately released that restores compatibility.
319
+ Breaking changes to the public API will only be introduced with new major versions.
377
320
 
378
- ## Versioning
321
+ ### 📌 Is "Platform Support" part of the public API?
379
322
 
380
- This library aims to adhere to [Semantic Versioning 2.0.0][🧮semver]. Violations of this scheme should be reported as
381
- bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, a new version should be
382
- immediately released that restores compatibility. Breaking changes to the public API will only be introduced with new
383
- major versions.
323
+ Yes. But I'm obligated to include notes...
384
324
 
385
- As a result of this policy, you can (and should) specify a dependency on this gem using
386
- the [Pessimistic Version Constraint][pvc] with two digits of precision.
325
+ SemVer should, but doesn't explicitly, say that dropping support for specific Platforms
326
+ is a *breaking change* to an API.
327
+ It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
328
+
329
+ > dropping support for a platform is both obviously and objectively a breaking change
330
+
331
+ - Jordan Harband (@ljharb) [in SemVer issue 716][📌semver-breaking]
332
+
333
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
334
+ read this article from the creator of SemVer:
335
+
336
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
337
+
338
+ As a result of this policy, and the interpretive lens used by the maintainer,
339
+ you can (and should) specify a dependency on these libraries using
340
+ the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
387
341
 
388
342
  For example:
389
343
 
@@ -391,36 +345,183 @@ For example:
391
345
  spec.add_dependency("version_gem", "~> 1.1")
392
346
  ```
393
347
 
394
- ## Security
395
-
396
- See [SECURITY.md](https://gitlab.com/oauth-xx/version_gem/-/blob/main/SECURITY.md).
397
-
398
- [aboutme]: https://about.me/peter.boling
399
- [actions]: https://github.com/oauth-xx/version_gem/actions
400
- [angelme]: https://angel.co/peter-boling
401
- [blogpage]: http://www.railsbling.com/tags/version_gem/
402
- [codecov_coverage]: https://codecov.io/gh/oauth-xx/version_gem
403
- [code_triage]: https://www.codetriage.com/oauth-xx/version_gem
404
- [chat]: https://gitter.im/oauth-xx/version_gem?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
405
- [climate_coverage]: https://codeclimate.com/github/oauth-xx/version_gem/test_coverage
406
- [climate_maintainability]: https://codeclimate.com/github/oauth-xx/version_gem/maintainability
407
- [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
408
- [conduct]: https://gitlab.com/oauth-xx/version_gem/-/blob/main/CODE_OF_CONDUCT.md
409
- [contributing]: https://gitlab.com/oauth-xx/version_gem/-/blob/main/CONTRIBUTING.md
410
- [devto]: https://dev.to/galtzo
411
- [documentation]: https://rubydoc.info/github/oauth-xx/version_gem/main
412
- [followme]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
413
- [gh_sponsors]: https://github.com/sponsors/pboling
414
- [issues]: https://github.com/oauth-xx/version_gem/issues
415
- [liberapay_donate]: https://liberapay.com/pboling/donate
416
- [license]: LICENSE.txt
417
- [license-ref]: https://opensource.org/licenses/MIT
418
- [license-img]: https://img.shields.io/badge/License-MIT-green.svg
419
- [peterboling]: http://www.peterboling.com
420
- [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
421
- [railsbling]: http://www.railsbling.com
422
- [rubygems]: https://rubygems.org/gems/version_gem
423
- [security]: https://gitlab.com/oauth-xx/version_gem/-/blob/main/SECURITY.md
424
- [semver]: http://semver.org/
425
- [source]: https://gitlab.com/oauth-xx/version_gem
426
- [tweetme]: http://twitter.com/galtzo
348
+ See [CHANGELOG.md][📌changelog] for list of releases.
349
+
350
+ ## 📄 License
351
+
352
+ The gem is available as open source under the terms of
353
+ the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
354
+ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
355
+
356
+ ### © Copyright
357
+
358
+ <p>
359
+ Copyright (c) 2022 - 2025 Peter H. Boling,
360
+ <a href="https://railsbling.com">
361
+ RailsBling.com
362
+ <picture>
363
+ <img alt="Rails Bling" height="20" src="https://railsbling.com/images/logos/RailsBling-TrainLogo.svg" />
364
+ </picture>
365
+ </a>
366
+ </p>
367
+
368
+ ## 🤑 One more thing
369
+
370
+ You made it to the bottom of the page,
371
+ so perhaps you'll indulge me for another 20 seconds.
372
+ I maintain many dozens of gems, including this one,
373
+ because I want Ruby to be a great place for people to solve problems, big and small.
374
+ Please consider supporting my efforts via the giant yellow link below,
375
+ or one of the others at the head of this README.
376
+
377
+ [![Buy me a latte][🖇buyme-img]][🖇buyme]
378
+
379
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
380
+ [🏘chat]: https://gitter.im/oauth-xx/version_gem
381
+ [🏘chat-img]: https://img.shields.io/gitter/room/oauth-xx/version_gem.svg
382
+ [⛳️gem-namespace]: https://github.com/oauth-xx/version_gem/blob/main/lib/version_gem.rb
383
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-VersionGem-brightgreen.svg?style=flat&logo=ruby&logoColor=white
384
+ [⛳️gem-name]: https://rubygems.org/gems/version_gem
385
+ [⛳️name-img]: https://img.shields.io/badge/name-version__gem-brightgreen.svg?style=flat&logo=rubygems&logoColor=red
386
+ [🚂bdfl-blog]: http://www.railsbling.com/tags/version_gem
387
+ [🚂bdfl-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
388
+ [🚂bdfl-contact]: http://www.railsbling.com/contact
389
+ [🚂bdfl-contact-img]: https://img.shields.io/badge/Contact-BDFL-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
390
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
391
+ [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
392
+ [💖✌️wellfound]: https://angel.co/u/peter-boling
393
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
394
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
395
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
396
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
397
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
398
+ [💖🦋bluesky]: https://galtzo.bsky.social
399
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.bsky.social-0285FF?style=flat&logo=bluesky&logoColor=white
400
+ [💖🌳linktree]: https://linktr.ee/galtzo
401
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
402
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
403
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
404
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
405
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
406
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
407
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
408
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
409
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
410
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription
411
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
412
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
413
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
414
+ [🚂railsbling]: http://www.railsbling.com
415
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
416
+ [📜src-gl]: https://gitlab.com/oauth-xx/version_gem/
417
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
418
+ [📜src-gh]: https://github.com/oauth-xx/version_gem
419
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
420
+ [📜docs-head-rd-img]: https://img.shields.io/badge/RubyDoc-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
421
+ [📜wiki]: https://gitlab.com/oauth-xx/version_gem/-/wikis/home
422
+ [📜wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=Wiki&logoColor=white
423
+ [👽dl-rank]: https://rubygems.org/gems/version_gem
424
+ [👽dl-ranki]: https://img.shields.io/gem/rd/version_gem.svg
425
+ [👽oss-help]: https://www.codetriage.com/oauth-xx/version_gem
426
+ [👽oss-helpi]: https://www.codetriage.com/oauth-xx/version_gem/badges/users.svg
427
+ [👽version]: https://rubygems.org/gems/version_gem
428
+ [👽versioni]: https://img.shields.io/gem/v/version_gem.svg
429
+ [🔑cc-mnt]: https://codeclimate.com/github/oauth-xx/version_gem/maintainability
430
+ [🔑cc-mnti♻️]: https://api.codeclimate.com/v1/badges/e26c543320ca0d14e871/maintainability
431
+ [🔑cc-cov]: https://codeclimate.com/github/oauth-xx/version_gem/test_coverage
432
+ [🔑cc-covi♻️]: https://api.codeclimate.com/v1/badges/e26c543320ca0d14e871/test_coverage
433
+ [🔑codecov]: https://codecov.io/gh/oauth-xx/version_gem
434
+ [🔑codecovi♻️]: https://codecov.io/gh/oauth-xx/version_gem/branch/main/graph/badge.svg?token=cc6UdZCpAL
435
+ [🔑coveralls]: https://coveralls.io/github/oauth-xx/version_gem?branch=main
436
+ [🔑coveralls-img]: https://coveralls.io/repos/github/oauth-xx/version_gem/badge.svg?branch=main
437
+ [🔑depfu]: https://depfu.com/github/oauth-xx/version_gem
438
+ [🔑depfui♻️]: https://badges.depfu.com/badges/6c9b45362951b872127f9e46d39bed76/count.svg
439
+ [🖐codeQL]: https://github.com/oauth-xx/version_gem/security/code-scanning
440
+ [🖐codeQL-img]: https://github.com/oauth-xx/version_gem/actions/workflows/codeql-analysis.yml/badge.svg
441
+ [🚎1-an-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/ancient.yml
442
+ [🚎1-an-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/ancient.yml/badge.svg
443
+ [🚎2-cov-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/coverage.yml
444
+ [🚎2-cov-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/coverage.yml/badge.svg
445
+ [🚎3-hd-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/heads.yml
446
+ [🚎3-hd-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/heads.yml/badge.svg
447
+ [🚎4-lg-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/legacy.yml
448
+ [🚎4-lg-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/legacy.yml/badge.svg
449
+ [🚎5-st-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/style.yml
450
+ [🚎5-st-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/style.yml/badge.svg
451
+ [🚎6-s-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/supported.yml
452
+ [🚎6-s-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/supported.yml/badge.svg
453
+ [🚎7-us-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/unsupported.yml
454
+ [🚎7-us-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/unsupported.yml/badge.svg
455
+ [🚎8-ho-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/hoary.yml
456
+ [🚎8-ho-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/hoary.yml/badge.svg
457
+ [🚎9-t-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/truffle.yml
458
+ [🚎9-t-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/truffle.yml/badge.svg
459
+ [🚎10-j-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/jruby.yml
460
+ [🚎10-j-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/jruby.yml/badge.svg
461
+ [🚎11-c-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/current.yml
462
+ [🚎11-c-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/current.yml/badge.svg
463
+ [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
464
+ [⛳liberapay]: https://liberapay.com/pboling/donate
465
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
466
+ [🖇sponsor]: https://github.com/sponsors/pboling
467
+ [🖇polar-img]: https://polar.sh/embed/seeks-funding-shield.svg?org=pboling
468
+ [🖇polar]: https://polar.sh/pboling
469
+ [🖇kofi-img]: https://img.shields.io/badge/buy_me_coffee-donate-yellow.svg
470
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
471
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
472
+ [🖇patreon]: https://patreon.com/galtzo
473
+ [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
474
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
475
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
476
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
477
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
478
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
479
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
480
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
481
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
482
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
483
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
484
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
485
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
486
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
487
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
488
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
489
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
490
+ [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1-FBE742?style=for-the-badge&logo=ruby&logoColor=red
491
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
492
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
493
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
494
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
495
+ [🤝issues]: https://github.com/oauth-xx/version_gem/issues
496
+ [🤝pulls]: https://github.com/oauth-xx/version_gem/pulls
497
+ [🤝contributing]: CONTRIBUTING.md
498
+ [🔑codecov-g♻️]: https://codecov.io/gh/oauth-xx/version_gem/graphs/tree.svg?token=cc6UdZCpAL
499
+ [🖐contrib-rocks]: https://contrib.rocks
500
+ [🖐contributors]: https://github.com/oauth-xx/version_gem/graphs/contributors
501
+ [🖐contributors-img]: https://contrib.rocks/image?repo=oauth-xx/version_gem
502
+ [🚎contributors-gl]: https://gitlab.com/oauth-xx/version_gem/-/graphs/main
503
+ [🪇conduct]: CODE_OF_CONDUCT.md
504
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-4baaaa.svg
505
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
506
+ [📌semver]: https://semver.org/spec/v2.0.0.html
507
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
508
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
509
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
510
+ [📌changelog]: CHANGELOG.md
511
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
512
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
513
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
514
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.077-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
515
+ [🔐security]: SECURITY.md
516
+ [🔐security-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
517
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
518
+ [📄license]: LICENSE.txt
519
+ [📄license-ref]: https://opensource.org/licenses/MIT
520
+ [📄license-img]: https://img.shields.io/badge/License-MIT-green.svg
521
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
522
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-brightgreen.svg?style=flat
523
+ [🚎yard-current]: http://rubydoc.info/gems/version_gem
524
+ [🚎yard-head]: https://rubydoc.info/github/oauth-xx/version_gem/main
525
+ [🖇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
526
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
527
+ [🖇buyme-small-img]: https://img.shields.io/badge/Buy--Me--A--Coffee-✓-brightgreen.svg?style=flat