month-serializer 1.0.0 → 1.0.2

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,51 +1,146 @@
1
- # Month::Serializer
1
+ <a href="https://github.com/galtzo-floss"><img alt="galtzo-floss Logo by GitHub" src="https://github.com/galtzo-floss.png?size=192" width="14%" align="right"/></a>
2
+
3
+ # 🗓️ Month::Serializer
4
+
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Total downloads][👽dl-ranki]][👽dl-rank] [![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] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
6
+
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
+
9
+ ---
10
+
11
+ `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
+
13
+ [![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 at ko-fi.com][🖇kofi-img]][🖇kofi]
14
+
15
+ <details markdown="1">
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
2
23
 
3
24
  **Integer Serialization Plugin for [Month Gem](https://github.com/timcraft/month)**
4
25
 
5
26
  Allows you to convert [`Month` objects](https://github.com/timcraft/month/blob/master/lib/month.rb) to `Integer`, and vice versa. This is useful for serializing Months into other data structures, like `String`, or to pass values in `JSON`, or send as parameters to Resque / Sidekiq jobs (which parameters are [only compatible with simple JSON data types](https://github.com/mperham/sidekiq/wiki/The-Basics#client). Neither `Date` or `Month` can serialize properly to Resque/Sidekiq jobs.
6
27
 
7
- | Project | Month::Serializer |
8
- |------------------------ | ----------------------- |
9
- | gem name | [month-serializer](https://rubygems.org/gems/month-serializer) |
10
- | license | [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) |
11
- | download rank | [![Downloads Today](https://img.shields.io/gem/rd/month-serializer.svg)](https://github.com/pboling/month-serializer) |
12
- | version | [![Version](https://img.shields.io/gem/v/month-serializer.svg)](https://rubygems.org/gems/month-serializer) |
13
- | dependencies | [![Depfu](https://badges.depfu.com/badges/9b99dea566c438afe054a94d464e98ea/count.svg)](https://depfu.com/github/pboling/month-serializer?project_id=6003) |
14
- | continuous integration | [![Build Status](https://travis-ci.org/pboling/month-serializer.svg?branch=master)](https://travis-ci.org/pboling/month-serializer) |
15
- | test coverage | [![Test Coverage](https://api.codeclimate.com/v1/badges/50241bf0d9c78bcce69e/test_coverage)](https://codeclimate.com/github/pboling/month-serializer/test_coverage) |
16
- | maintainability | [![Maintainability](https://api.codeclimate.com/v1/badges/50241bf0d9c78bcce69e/maintainability)](https://codeclimate.com/github/pboling/month-serializer/maintainability) |
17
- | code triage | [![Open Source Helpers](https://www.codetriage.com/pboling/month-serializer/badges/users.svg)](https://www.codetriage.com/pboling/month-serializer) |
18
- | homepage | [on Github.com][homepage], [on Railsbling.com][blogpage] |
19
- | documentation | [on RDoc.info][documentation] |
20
- | Spread ~♡ⓛⓞⓥⓔ♡~ | [🌍 🌎 🌏][peterboling], [🍚][refugees], [➕][gplus], [👼][angellist], [🐛][topcoder], [:shipit:][coderwall], [![Tweet Peter](https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow)][twitter] |
28
+ Compatible with 🗓️ [month gem][month-gem] v1 and v2.
29
+ Compatible with Ruby v1.9.3+ and JRuby v9.1+, and tested on all minor versions of Ruby, thanks to [🔍️appraisal2][appraisal2-gem].
30
+
31
+ [month-gem]: https://github.com/readysteady/month
32
+ [appraisal2-gem]: https://github.com/appraisal-rb/appraisal2
21
33
 
22
34
  ### Why use Month instead of Date or Time?
23
35
 
24
- - Month is lighter weight.
36
+ - 🗓️ [Month][month-gem] objects are lighter weight.
25
37
  - There are many situations where having Months incrementable by 1 is useful
26
- - e.g. Directly mappable to iteration index
38
+ - e.g., directly mappable to iteration index
27
39
  - It facilitates month-based math.
28
- - Adding a day when a day is not relevant, such as for data with a 1 month resolution, can result in very overcomplicated systems that try to work around or ignore the stray days.
40
+ - Adding a day when a day is not relevant, such as for data with a 1-month resolution, can result in very overcomplicated systems that try to work around or ignore the stray days.
29
41
 
30
- ## Installation
42
+ ## 💡 Info you can shake a stick at
31
43
 
32
- Add this line to your application's Gemfile:
44
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
45
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
46
+ | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
47
+ | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
48
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
49
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
50
+ | Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i] ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
51
+ | Works with MRI Ruby 1 | ![Ruby 1.9 Compat][💎ruby-1.9i]|
52
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
53
+ | 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] |
54
+ | 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] |
55
+ | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄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] |
56
+ | 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] |
57
+ | 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] |
58
+ | `...` 💖 | [![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] |
33
59
 
34
- ```ruby
35
- gem 'month-serializer'
36
- ```
60
+ ### Compatibility
61
+
62
+ Compatible with MRI Ruby 1.9.3+, and concordant releases of JRuby, and TruffleRuby.
63
+ CI workflows and Appraisals are generated for MRI Ruby 2.4+.
64
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
65
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
66
+ not practical for the current toolchain.
67
+
68
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
69
+
70
+ The _amazing_ test matrix is powered by the kettle-dev stack.
71
+
72
+ <details markdown="1">
73
+ <summary>How kettle-dev manages complexity in tests</summary>
37
74
 
38
- And then execute:
75
+ | Gem | Source | Role | Total downloads |
76
+ |-----|--------|------|---------------------|
77
+ | [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Total downloads for appraisal2](https://img.shields.io/gem/dt/appraisal2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2) |
78
+ | [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Total downloads for appraisal2-rubocop](https://img.shields.io/gem/dt/appraisal2-rubocop.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
79
+ | [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Total downloads for kettle-dev](https://img.shields.io/gem/dt/kettle-dev.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
80
+ | [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Total downloads for kettle-jem](https://img.shields.io/gem/dt/kettle-jem.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
81
+ | [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Total downloads for kettle-soup-cover](https://img.shields.io/gem/dt/kettle-soup-cover.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
82
+ | [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Total downloads for kettle-test](https://img.shields.io/gem/dt/kettle-test.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-test) |
83
+ | [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Total downloads for rubocop-lts](https://img.shields.io/gem/dt/rubocop-lts.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
84
+ | [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Total downloads for turbo_tests2](https://img.shields.io/gem/dt/turbo_tests2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
39
85
 
40
- $ bundle
86
+ </details>
41
87
 
42
- Or install it yourself as:
88
+ ### Federated DVCS
43
89
 
44
- $ gem install month-serializer
90
+ <details markdown="1">
91
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
45
92
 
46
- ## Usage
93
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
94
+ |-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
95
+ | 🧪 [galtzo-floss/month-serializer on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
96
+ | 🧊 [galtzo-floss/month-serializer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
97
+ | 🐙 [galtzo-floss/month-serializer on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
47
98
 
48
- Add this to the bootstrapping process of your app, somewhere after the [`month` gem](https://github.com/timcraft/month) is loaded.
99
+ </details>
100
+
101
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/month-serializer)](https://tidelift.com/subscription/pkg/rubygems-month-serializer?utm_source=rubygems-month-serializer&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
+ - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
119
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
120
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
121
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
122
+
123
+ </details>
124
+
125
+ ## ✨ Installation
126
+
127
+ Install the gem and add to the application's Gemfile by executing:
128
+
129
+ ```console
130
+ bundle add month-serializer
131
+ ```
132
+
133
+ If bundler is not being used to manage dependencies, install the gem by executing:
134
+
135
+ ```console
136
+ gem install month-serializer
137
+ ```
138
+
139
+ ## ⚙️ Configuration
140
+
141
+ ## 🔧 Basic Usage
142
+
143
+ Add this to the bootstrapping process of your app, somewhere after the [`month` gem][month-gem] is loaded.
49
144
  In Rails, `config/initializers/month-serializer.rb` would be perfect, but Rails is not required.
50
145
 
51
146
  ````ruby
@@ -53,103 +148,441 @@ Month.send(:include, Month::Serializer)
53
148
  ````
54
149
 
55
150
  This spec below, copied from the actual test suite, makes usage pretty clear. Note how the serialized Months as integer increment by one. If you think about counting time by months this makes sense. We often speak this way about babies, an 18 month old, or 24 month old.
56
-
151
+
57
152
  How old is the Common Era right now? About 24.2k months! Is a millenimonth, millimes, or kilomonth, a thing? The Common Era is roughly 24 kilomonths old. 😆 And Neanderthal man went extinct about 471 kilomonths ago.
58
153
 
59
154
  ```ruby
60
- {
61
- -471359 => Month.new(-39280, 1), # hist: Extinction of Neanderthal
62
- 24201 => Month.new(2016, 9),
63
- 24202 => Month.new(2016, 10),
64
- # ...
65
- 24214 => Month.new(2017, 10),
66
- 24215 => Month.new(2017, 11),
67
- # ...
68
- 24227 => Month.new(2018, 11),
69
- 24228 => Month.new(2018, 12)
70
- }.each do |k, v|
71
- context "#{k} => #{v}" do
72
- it "Month converts to #{k}" do
73
- expect(v.to_i).to eq(k) # to_i is added by this gem!
74
- end
75
- context 'round trip' do
76
- it "can load #{k} to #{v}" do
77
- expect(Month.load(k)).to eq(v) # load is added by this gem!
78
- end
79
- it "can dump #{v} to #{k}" do
80
- expect(Month.dump(v)).to eq(k) # dump is added by this gem!
81
- end
82
- end
83
- end
84
- end
155
+ {
156
+ -471359 => Month.new(-39280, 1), # hist: Extinction of Neanderthal
157
+ 24201 => Month.new(2016, 9),
158
+ 24202 => Month.new(2016, 10),
159
+ # ...
160
+ 24214 => Month.new(2017, 10),
161
+ 24215 => Month.new(2017, 11),
162
+ # ...
163
+ 24227 => Month.new(2018, 11),
164
+ 24228 => Month.new(2018, 12),
165
+ }.each do |k, v|
166
+ context "#{k} => #{v}" do
167
+ it "Month converts to #{k}" do
168
+ expect(v.to_i).to(eq(k)) # to_i is added by this gem!
169
+ end
170
+ context "round trip" do
171
+ it "can load #{k} to #{v}" do
172
+ expect(Month.load(k)).to(eq(v)) # load is added by this gem!
173
+ end
174
+ it "can dump #{v} to #{k}" do
175
+ expect(Month.dump(v)).to(eq(k)) # dump is added by this gem!
176
+ end
177
+ end
178
+ end
179
+ end
85
180
  ```
86
181
 
87
- ## Development
182
+ ## 🦷 FLOSS Funding
183
+
184
+ While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
185
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
186
+
187
+ We welcome both individual and corporate sponsors! We also offer a
188
+ wide array of funding channels to account for your preferences.
189
+ Currently, [Open Collective][🖇osc] is our preferred funding platform.
190
+
191
+ **If you're working in a company that's making significant use of galtzo-floss tools we'd
192
+ appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
193
+
194
+ You can support the development of galtzo-floss tools via
195
+ [GitHub Sponsors][🖇sponsor],
196
+ [Liberapay][⛳liberapay],
197
+ [PayPal][🖇paypal],
198
+ [Open Collective][🖇osc]
199
+ and [Tidelift][🏙️entsup-tidelift].
200
+
201
+ | 📍 NOTE |
202
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
203
+ | 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. |
204
+
205
+ ### Open Collective for Individuals
206
+
207
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
208
+
209
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
210
+
211
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
212
+ No backers yet. Be the first!
213
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
214
+
215
+ ### Open Collective for Organizations
216
+
217
+ 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)]
218
+
219
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
88
220
 
89
- 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.
221
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
222
+ No sponsors yet. Be the first!
223
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
90
224
 
91
- 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 tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
225
+ [kettle-readme-backers]: https://github.com/galtzo-floss/month-serializer/blob/main/bin/kettle-readme-backers
92
226
 
93
- ## Authors
227
+ ### Another way to support open-source
94
228
 
95
- [Peter H. Boling][peterboling] of [Rails Bling][railsbling] is the author.
229
+ 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).
96
230
 
97
- ## Contributors
231
+ 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`.
98
232
 
99
- See the [Network View](https://github.com/pboling/month-serializer/network) and the [CHANGELOG](https://github.com/pboling/month-serializer/blob/master/CHANGELOG.md)
233
+ 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.
100
234
 
101
- ## Contributing
235
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
102
236
 
103
- 1. Fork it
104
- 2. Create your feature branch (`git checkout -b my-new-feature`)
105
- 3. Commit your changes (`git commit -am 'Added some feature'`)
106
- 4. Push to the branch (`git push origin my-new-feature`)
107
- 5. Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
108
- 6. Create new Pull Request
237
+ [![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 to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
109
238
 
110
- Bug reports and pull requests are welcome on GitHub at https://github.com/pboling/anonymous_active_record. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
239
+ ## 🔐 Security
111
240
 
112
- ## Code of Conduct
241
+ See [SECURITY.md][🔐security].
113
242
 
114
- Everyone interacting in the AnonymousActiveRecord project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/pboling/anonymous_active_record/blob/master/CODE_OF_CONDUCT.md).
243
+ ## 🤝 Contributing
115
244
 
116
- ## Versioning
245
+ If you need some ideas of where to help, you could work on adding more code coverage,
246
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
247
+ or use the gem and think about how it could be better.
117
248
 
118
- This library aims to adhere to [Semantic Versioning 2.0.0][semver].
119
- Violations of this scheme should be reported as bugs. Specifically,
120
- if a minor or patch version is released that breaks backward
121
- compatibility, a new version should be immediately released that
122
- restores compatibility. Breaking changes to the public API will
123
- only be introduced with new major versions.
249
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
124
250
 
125
- As a result of this policy, you can (and should) specify a
126
- dependency on this gem using the [Pessimistic Version Constraint][pvc] with two digits of precision.
251
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
127
252
 
128
- For example in a `Gemfile`:
253
+ ### 🚀 Release Instructions
129
254
 
130
- gem 'month-serializer', '~> 1.0', group: :test
255
+ See [CONTRIBUTING.md][🤝contributing].
131
256
 
132
- or in a `gemspec`
257
+ ### Code Coverage
133
258
 
134
- spec.add_development_dependency 'month-serializer', '~> 1.0'
259
+ <details markdown="1">
260
+ <summary>Coverage service badges</summary>
135
261
 
136
- ## Legal
262
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
137
263
 
138
- * MIT License - See [LICENSE][license] file in this project [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
264
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
139
265
 
140
- * Copyright (c) 2018 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
266
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
267
+
268
+ </details>
269
+
270
+ ### 🪇 Code of Conduct
271
+
272
+ Everyone interacting with this project's codebases, issue trackers,
273
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
274
+
275
+ ## 🌈 Contributors
276
+
277
+ [![Contributors][🖐contributors-img]][🖐contributors]
278
+
279
+ Made with [contributors-img][🖐contrib-rocks].
280
+
281
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/month-serializer/-/graphs/main][🚎contributors-gl]
282
+
283
+ <details markdown="1">
284
+ <summary>⭐️ Star History</summary>
285
+
286
+ <a href="https://star-history.com/galtzo-floss/month-serializer&Date">
287
+ <picture>
288
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/month-serializer&type=Date&theme=dark" />
289
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/month-serializer&type=Date" />
290
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=galtzo-floss/month-serializer&type=Date" />
291
+ </picture>
292
+ </a>
293
+
294
+ </details>
295
+
296
+ ## 📌 Versioning
297
+
298
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
299
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
300
+
301
+ For example:
302
+
303
+ ```ruby
304
+ spec.add_dependency("month-serializer", "~> 1.0")
305
+ ```
141
306
 
142
- [semver]: http://semver.org/
143
- [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
144
- [documentation]: http://rdoc.info/github/pboling/month-serializer/frames
145
- [homepage]: https://github.com/pboling/month-serializer
146
- [blogpage]: http://www.railsbling.com/tags/month-serializer/
147
- [license]: LICENSE
148
- [railsbling]: http://www.railsbling.com
149
- [peterboling]: https://about.me/peter.boling
150
- [refugees]: https://www.crowdrise.com/helprefugeeswithhopefortomorrowliberia/fundraiser/peterboling
151
- [gplus]: https://plus.google.com/+PeterBoling/posts
152
- [topcoder]: https://www.topcoder.com/members/pboling/
153
- [angellist]: https://angel.co/peter-boling
154
- [coderwall]: http://coderwall.com/pboling
155
- [twitter]: http://twitter.com/galtzo
307
+ <details markdown="1">
308
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
309
+
310
+ Dropping support for a platform can be a breaking change for affected users.
311
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
312
+
313
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
314
+ read this article from the creator of SemVer:
315
+
316
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
317
+
318
+ </details>
319
+
320
+ See [CHANGELOG.md][📌changelog] for a list of releases.
321
+
322
+ ## 📄 License
323
+
324
+ The gem is available as open source under the terms of
325
+ the [MIT](https://github.com/galtzo-floss/month-serializer/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
326
+
327
+ ### © Copyright
328
+
329
+ See [LICENSE.md][📄license] for the official copyright notice.
330
+
331
+ <details markdown="1">
332
+ <summary>Copyright holders</summary>
333
+
334
+ - Copyright (c) 2018, 2025-2026 Peter H. Boling
335
+ - Copyright (c) 2025 Aboling0
336
+
337
+ </details>
338
+
339
+ ## 🤑 A request for help
340
+
341
+ Maintainers have teeth and need to pay their dentists.
342
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
343
+ I began spending most of my time building open source tools.
344
+ I'm hoping to be able to pay for my kids' health insurance this month,
345
+ so if you value the work I am doing, I need your support.
346
+ Please consider sponsoring me or the project.
347
+
348
+ To join the community or get help, use the RubyForum or Discord.
349
+
350
+ [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
351
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
352
+
353
+ To say "thanks!" ☝️ Join the community or 👇️ send money.
354
+
355
+ [![Sponsor galtzo-floss/month-serializer 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]
356
+
357
+ ### Please give the project a star ⭐ ♥.
358
+
359
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
360
+
361
+ Thanks for RTFM. ☺️
362
+
363
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
364
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
365
+ [⛳liberapay]: https://liberapay.com/pboling/donate
366
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
367
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
368
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
369
+ [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
370
+ [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
371
+ [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
372
+ [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
373
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
374
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
375
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
376
+ [🖇osc]: https://opencollective.com/galtzo-floss
377
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
378
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
379
+ [🖇sponsor]: https://github.com/sponsors/pboling
380
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
381
+ [🖇kofi]: https://ko-fi.com/pboling
382
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
383
+ [🖇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
384
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
385
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
386
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
387
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
388
+ [🖇floss-funding.dev]: https://floss-funding.dev
389
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
390
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
391
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
392
+ [✉️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
393
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
394
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
395
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
396
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/galtzo-floss
397
+
398
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
399
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/month-serializer
400
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Month::Serializer-3C2D2D.svg?style=square&logo=ruby&logoColor=white
401
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/month-serializer
402
+ [⛳️name-img]: https://img.shields.io/badge/name-month--serializer-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
403
+ [⛳️tag-img]: https://img.shields.io/github/tag/galtzo-floss/month-serializer.svg
404
+ [⛳️tag]: https://github.com/galtzo-floss/month-serializer/releases
405
+ [🚂maint-blog]: http://www.railsbling.com/tags/month-serializer
406
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
407
+ [🚂maint-contact]: http://www.railsbling.com/contact
408
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
409
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
410
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
411
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
412
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
413
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
414
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
415
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
416
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
417
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
418
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
419
+ [💖🌳linktree]: https://linktr.ee/galtzo
420
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
421
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
422
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
423
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
424
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
425
+ [💖🧊berg]: https://codeberg.org/pboling
426
+ [💖🐙hub]: https://github.org/pboling
427
+ [💖🛖hut]: https://sr.ht/~galtzo/
428
+ [💖🧪lab]: https://gitlab.com/pboling
429
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
430
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
431
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
432
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
433
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-month-serializer?utm_source=rubygems-month-serializer&utm_medium=referral&utm_campaign=readme
434
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
435
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
436
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
437
+ [🚂railsbling]: http://www.railsbling.com
438
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
439
+ [📜src-gl]: https://gitlab.com/galtzo-floss/month-serializer
440
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
441
+ [📜src-cb]: https://codeberg.org/galtzo-floss/month-serializer
442
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
443
+ [📜src-gh]: https://github.com/galtzo-floss/month-serializer
444
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
445
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
446
+ [📜gl-wiki]: https://gitlab.com/galtzo-floss/month-serializer/-/wikis/home
447
+ [📜gh-wiki]: https://github.com/galtzo-floss/month-serializer/wiki
448
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
449
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
450
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/month-serializer
451
+ [👽dl-ranki]: https://img.shields.io/gem/dt/month-serializer.svg
452
+ [👽version]: https://clickgems.clickhouse.com/dashboard/month-serializer
453
+ [👽versioni]: https://img.shields.io/gem/v/month-serializer.svg
454
+ [🏀qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/month-serializer
455
+ [🏀qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/month-serializer/maintainability.svg
456
+ [🏀qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/month-serializer/metrics/code?sort=coverageRating
457
+ [🏀qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/month-serializer/coverage.svg
458
+ [🏀codecov]: https://codecov.io/gh/galtzo-floss/month-serializer
459
+ [🏀codecovi]: https://codecov.io/gh/galtzo-floss/month-serializer/graph/badge.svg
460
+ [🏀coveralls]: https://coveralls.io/github/galtzo-floss/month-serializer?branch=main
461
+ [🏀coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/month-serializer/badge.svg?branch=main
462
+ [🚎ruby-2.4-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-2.4.yml
463
+ [🚎ruby-2.5-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-2.5.yml
464
+ [🚎ruby-2.6-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-2.6.yml
465
+ [🚎ruby-2.7-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-2.7.yml
466
+ [🚎ruby-3.0-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-3.0.yml
467
+ [🚎ruby-3.1-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-3.1.yml
468
+ [🚎ruby-3.2-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-3.2.yml
469
+ [🚎ruby-3.3-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-3.3.yml
470
+ [🚎ruby-3.4-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/ruby-3.4.yml
471
+ [🚎jruby-9.2-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/jruby-9.2.yml
472
+ [🚎jruby-9.3-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/jruby-9.3.yml
473
+ [🚎jruby-9.4-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/jruby-9.4.yml
474
+ [🚎jruby-10.0-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/jruby-10.0.yml
475
+ [🚎truby-22.3-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffleruby-22.3.yml
476
+ [🚎truby-23.0-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffleruby-23.0.yml
477
+ [🚎truby-23.1-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffleruby-23.1.yml
478
+ [🚎truby-24.2-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffleruby-24.2.yml
479
+ [🚎truby-25.0-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffleruby-25.0.yml
480
+ [🚎truby-33.0-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffleruby-33.0.yml
481
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/coverage.yml
482
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/coverage.yml/badge.svg
483
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/heads.yml
484
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/heads.yml/badge.svg
485
+ [🚎5-st-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/style.yml
486
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/style.yml/badge.svg
487
+ [🚎9-t-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffle.yml
488
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/truffle.yml/badge.svg
489
+ [🚎10-j-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/jruby.yml
490
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/jruby.yml/badge.svg
491
+ [🚎11-c-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/current.yml
492
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/current.yml/badge.svg
493
+ [🚎12-crh-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/dep-heads.yml
494
+ [🚎12-crh-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/dep-heads.yml/badge.svg
495
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/locked_deps.yml
496
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/locked_deps.yml/badge.svg
497
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/unlocked_deps.yml
498
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/unlocked_deps.yml/badge.svg
499
+ [🚎15-🪪-wf]: https://github.com/galtzo-floss/month-serializer/actions/workflows/license-eye.yml
500
+ [🚎15-🪪-wfi]: https://github.com/galtzo-floss/month-serializer/actions/workflows/license-eye.yml/badge.svg
501
+ [💎ruby-1.9i]: https://img.shields.io/badge/Ruby-1.9_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
502
+ [💎ruby-2.0i]: https://img.shields.io/badge/Ruby-2.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
503
+ [💎ruby-2.1i]: https://img.shields.io/badge/Ruby-2.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
504
+ [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
505
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
506
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
507
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
508
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
509
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
510
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
511
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
512
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
513
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
514
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
515
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
516
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
517
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
518
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
519
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
520
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
521
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
522
+ [💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
523
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
524
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
525
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
526
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
527
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
528
+ [💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
529
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
530
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
531
+ [🤝gh-issues]: https://github.com/galtzo-floss/month-serializer/issues
532
+ [🤝gh-pulls]: https://github.com/galtzo-floss/month-serializer/pulls
533
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/month-serializer/-/issues
534
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/month-serializer/-/merge_requests
535
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/month-serializer/issues
536
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/month-serializer/pulls
537
+ [🤝cb-donate]: https://donate.codeberg.org/
538
+ [🤝contributing]: https://github.com/galtzo-floss/month-serializer/blob/main/CONTRIBUTING.md
539
+ [🏀codecov-g]: https://codecov.io/gh/galtzo-floss/month-serializer/graph/badge.svg
540
+ [🖐contrib-rocks]: https://contrib.rocks
541
+ [🖐contributors]: https://github.com/galtzo-floss/month-serializer/graphs/contributors
542
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/month-serializer
543
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/month-serializer/-/graphs/main
544
+ [🪇conduct]: https://github.com/galtzo-floss/month-serializer/blob/main/CODE_OF_CONDUCT.md
545
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
546
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
547
+ [📌semver]: https://semver.org/spec/v2.0.0.html
548
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
549
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
550
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
551
+ [📌changelog]: https://github.com/galtzo-floss/month-serializer/blob/main/CHANGELOG.md
552
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
553
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
554
+ [📌gitmoji]: https://gitmoji.dev
555
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
556
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
557
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.040-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
558
+ [🔐security]: https://github.com/galtzo-floss/month-serializer/blob/main/SECURITY.md
559
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
560
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
561
+ [📄license]: LICENSE.md
562
+ [📄license-ref]: https://github.com/galtzo-floss/month-serializer/blob/main/MIT.md
563
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
564
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
565
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
566
+
567
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
568
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
569
+ [🚎yard-current]: http://rubydoc.info/gems/month-serializer
570
+ [🚎yard-head]: https://month-serializer.galtzo.com
571
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
572
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/month-serializer/-/tree/main/checksums
573
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
574
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
575
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
576
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
577
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
578
+
579
+ <!-- kettle-jem:metadata:start -->
580
+ | Field | Value |
581
+ |---|---|
582
+ | Package | month-serializer |
583
+ | Description | 🗓️ Serialize Month objects to Integer |
584
+ | Homepage | https://github.com/galtzo-floss/month-serializer |
585
+ | Source | https://github.com/galtzo-floss/month-serializer |
586
+ | License | `MIT` |
587
+ | Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/galtzo-floss, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/month-serializer, https://www.buymeacoffee.com/pboling |
588
+ <!-- kettle-jem:metadata:end -->