gitmoji-regex 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,160 +1,104 @@
1
- <p align="center">
2
- <a href="https://gitmoji.dev/" target="_blank" rel="noopener">
3
- <img width="120px" src="https://github.com/pboling/gitmoji-regex/raw/main/docs/images/logo/gitmoji-logo-120px.png?raw=true" alt="Gotmoji Logo Copyright (c) 2016-2022 Carlos Cuesta, MIT License">
4
- </a>
5
- <a href="https://rubular.com/" target="_blank" rel="noopener">
6
- <img width="120px" src="https://github.com/pboling/gitmoji-regex/raw/main/docs/images/logo/regex-logo-120px.png?raw=true" alt="Regular Expression OOjs UI Icon by GOJU, MIT License via Wikimedia Commons">
7
- </a>
8
- <a href="https://www.ruby-lang.org/" target="_blank" rel="noopener">
9
- <img width="120px" src="https://github.com/pboling/gitmoji-regex/raw/main/docs/images/logo/ruby-logo-198px.svg?raw=true" alt="Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5">
10
- </a>
11
- </p>
12
-
13
- # Gitmoji::Regex
1
+ [![The Gitmoji Logo by Carlos Cuesta, MIT][🖼️gitmoji-i]][🖼️gitmoji] [![The Regular Expression OOjs UI Icon by GOJU, MIT via Wikimedia Commons][🖼️regex-i]][🖼️regex] [![gitmoji-regex Logo by Aboling0, CC BY-SA 4.0][🖼️gitmoji-regex-i]][🖼️gitmoji-regex] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord]
2
+
3
+
4
+
5
+ [🖼️regex-i]: https://logos.galtzo.com/assets/images/regex/avatar-120px.png
6
+ [🖼️regex]: https://rubular.com/
7
+ [🖼️gitmoji-i]: https://logos.galtzo.com/assets/images/gitmoji/avatar-120px.png
8
+ [🖼️gitmoji]: https://github.com/carloscuesta/gitmoji
9
+ [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg
10
+ [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
11
+ [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg
12
+ [🖼️ruby-lang]: https://www.ruby-lang.org/
13
+ [🖼️gitmoji-regex-i]: https://logos.galtzo.com/assets/images/galtzo-floss/gitmoji-regex/avatar-192px.svg
14
+ [🖼️gitmoji-regex]: https://github.com/galtzo-floss/gitmoji-regex
15
+
16
+ # 😜 Gitmoji::Regex
17
+
18
+ [![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-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 Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
19
+
20
+ If ☝️ `ci_badges.map(&:color).detect { it != "green" }` [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
21
+
22
+ ---
23
+
24
+ OTOH, if `ci_badges.map(&:color).all? { it == "green" }` 👇️ send money so I can do more of this. FLOSS is now my full-time job.
25
+
26
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
27
+
28
+ ## 🌻 Synopsis
14
29
 
15
30
  This gem provides a regex that allows Ruby code to test a string for a [Gitmoji](https://github.com/carloscuesta/gitmoji) character. Gitmoji is a [subset](https://raw.githubusercontent.com/carloscuesta/gitmoji/master/src/data/gitmojis.json) of the Unicode Emoji character set. This gem is _not_ a fork of, but was **inspired** by, the wonderful [emoji_regex](https://github.com/ticky/ruby-emoji-regex) gem.
16
31
 
17
- <!--
18
- Numbering rows and badges in each row as a visual "database" lookup,
19
- as the table is extremely dense, and it can be very difficult to find anything
20
- Putting one on each row here, to document the emoji that should be used, and for ease of copy/paste.
21
-
22
- row #s:
23
- 1️⃣
24
- 2️⃣
25
- 3️⃣
26
- 4️⃣
27
- 5️⃣
28
- 6️⃣
29
- 7️⃣
30
-
31
- badge #s:
32
- ⛳️
33
- 🖇
34
- 🏘
35
- 🚎
36
- 🖐
37
- 🧮
38
- 📗
39
-
40
- appended indicators:
41
- ♻️ - URL needs to be updated from SASS integration. Find / Replace is insufficient.
42
- -->
43
-
44
- | | Project | bundle add gitmoji-regex |
45
- |:----|--------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
46
- | 1️⃣ | name, license, docs, standards | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] <!--[![FOSSA][🏘fossa-img]][🏘fossa]--> [![RubyDoc.info][🚎yard-img]][🚎yard] [![GitMoji][🖐gitmoji-img]][🖐gitmoji] [![SemVer 2.0.0][🧮semver-img]][semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] |
47
- | 2️⃣ | version & activity | [![Gem Version][⛳️version-img]][⛳️gem] [![Total Downloads][🖇DL-total-img]][⛳️gem] [![Download Rank][🏘DL-rank-img]][⛳️gem] [![Source Code][🚎src-home-img]][🚎src-home] [![Open PRs][🖐prs-o-img]][🖐prs-o] [![Closed PRs][🧮prs-c-img]][🧮prs-c] <!--[![Next Version][📗next-img]][📗next]--> |
48
- | 3️⃣ | maintanence & 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] |
49
- | 4️⃣ | testing | [![Open Issues][⛳iss-o-img]][⛳iss-o] [![Closed Issues][🖇iss-c-img]][🖇iss-c] [![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]--> |
50
- | 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] |
51
- | 6️⃣ | resources | [![Discussion][⛳gh-discussions-img]][⛳gh-discussions] [![Get help on Codementor][🖇codementor-img]][🖇codementor] [![Chat][🏘chat-img]][🏘chat] [![Blog][🚎blog-img]][🚎blog] [![Wiki][🖐wiki-img]][🖐wiki] |
52
- | 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] |
53
-
54
- <!--
55
- The link tokens in the following sections should be kept ordered by the row and badge numbering scheme
56
- -->
57
-
58
- <!-- 1️⃣ name, license, docs -->
59
- [⛳️gem]: https://rubygems.org/gems/gitmoji-regex
60
- [⛳️name-img]: https://img.shields.io/badge/name-gitmoji--regex-brightgreen.svg?style=flat
61
- [🖇src-license]: https://opensource.org/licenses/MIT
62
- [🖇src-license-img]: https://img.shields.io/badge/License-MIT-green.svg
63
- [🏘fossa]: https://app.fossa.io/projects/git%2Bgithub.com%2Fpboling%2Fgitmoji-regex?ref=badge_shield
64
- [🏘fossa-img]: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpboling%2Fgitmoji-regex.svg?type=shield
65
- [🚎yard]: https://www.rubydoc.info/github/pboling/gitmoji-regex
66
- [🚎yard-img]: https://img.shields.io/badge/documentation-rubydoc-brightgreen.svg?style=flat
67
- [🖐gitmoji]: https://gitmoji.dev
68
- [🖐gitmoji-img]: https://img.shields.io/badge/gitmoji-3.9.0-FFDD67.svg?style=flat
69
- [🧮semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
70
- [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
71
- [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
72
-
73
- <!-- 2️⃣ version & activity -->
74
- [⛳️version-img]: http://img.shields.io/gem/v/gitmoji-regex.svg
75
- [🖇DL-total-img]: https://img.shields.io/gem/dt/gitmoji-regex.svg
76
- [🏘DL-rank-img]: https://img.shields.io/gem/rt/gitmoji-regex.svg
77
- [🚎src-home]: https://github.com/pboling/gitmoji-regex
78
- [🚎src-home-img]: https://img.shields.io/badge/source-github-brightgreen.svg?style=flat
79
- [🖐prs-o]: https://github.com/pboling/gitmoji-regex/pulls
80
- [🖐prs-o-img]: https://img.shields.io/github/issues-pr/pboling/gitmoji-regex
81
- [🧮prs-c]: https://github.com/pboling/gitmoji-regex/pulls?q=is%3Apr+is%3Aclosed
82
- [🧮prs-c-img]: https://img.shields.io/github/issues-pr-closed/pboling/gitmoji-regex
83
- [📗next]: https://github.com/pboling/gitmoji-regex/milestone/1
84
- [📗next-img]: https://img.shields.io/github/milestones/progress/pboling/gitmoji-regex/1?label=Next%20Version
85
-
86
- <!-- 3️⃣ maintanence & linting -->
87
- [⛳cclim-maint]: https://codeclimate.com/github/pboling/gitmoji-regex/maintainability
88
- [⛳cclim-maint-img♻️]: https://api.codeclimate.com/v1/badges/f32e1d1148e8bad58197/maintainability
89
- [🖇triage-help]: https://www.codetriage.com/pboling/gitmoji-regex
90
- [🖇triage-help-img]: https://www.codetriage.com/pboling/gitmoji-regex/badges/users.svg
91
- [🏘depfu♻️]: https://depfu.com/github/pboling/gitmoji-regex?project_id=34924
92
- [🏘depfu-img♻️]: https://badges.depfu.com/badges/300630ab4b7c2efea20806d13d1ef41f/count.svg
93
- [🚎contributors]: https://github.com/pboling/gitmoji-regex/graphs/contributors
94
- [🚎contributors-img]: https://img.shields.io/github/contributors-anon/pboling/gitmoji-regex
95
- [🖐style-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/style.yml
96
- [🖐style-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/style.yml/badge.svg
97
- [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
98
- [🧮kloc-img]: https://img.shields.io/tokei/lines/github.com/pboling/gitmoji-regex
99
-
100
- <!-- 4️⃣ testing -->
101
- [⛳iss-o]: https://github.com/pboling/gitmoji-regex/issues
102
- [⛳iss-o-img]: https://img.shields.io/github/issues-raw/pboling/gitmoji-regex
103
- [🖇iss-c]: https://github.com/pboling/gitmoji-regex/issues?q=is%3Aissue+is%3Aclosed
104
- [🖇iss-c-img]: https://img.shields.io/github/issues-closed-raw/pboling/gitmoji-regex
105
- [🏘sup-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/supported.yml
106
- [🏘sup-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/supported.yml/badge.svg
107
- [🚎heads-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/heads.yml
108
- [🚎heads-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/heads.yml/badge.svg
109
- [🖐uns-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/unsupported.yml
110
- [🖐uns-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/unsupported.yml/badge.svg
111
- [🧮mac-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/macos.yml
112
- [🧮mac-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/macos.yml/badge.svg
113
- [📗win-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/windows.yml
114
- [📗win-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/windows.yml/badge.svg
115
-
116
- <!-- 5️⃣ coverage & security -->
117
- [⛳cclim-cov]: https://codeclimate.com/github/pboling/gitmoji-regex/test_coverage
118
- [⛳cclim-cov-img♻️]: https://api.codeclimate.com/v1/badges/f32e1d1148e8bad58197/test_coverage
119
- [🖇codecov-img♻️]: https://codecov.io/gh/pboling/gitmoji-regex/branch/main/graph/badge.svg?token=EJCOr0hsPq
120
- [🖇codecov]: https://codecov.io/gh/pboling/gitmoji-regex
121
- [🏘coveralls]: https://coveralls.io/github/pboling/gitmoji-regex?branch=main
122
- [🏘coveralls-img]: https://coveralls.io/repos/github/pboling/gitmoji-regex/badge.svg?branch=main
123
- [🚎sec-pol]: https://github.com/pboling/gitmoji-regex/blob/main/SECURITY.md
124
- [🚎sec-pol-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
125
- [🖐codeQL]: https://github.com/pboling/gitmoji-regex/security/code-scanning
126
- [🖐codeQL-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/codeql-analysis.yml/badge.svg
127
- [🧮cov-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/coverage.yml
128
- [🧮cov-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/coverage.yml/badge.svg
129
-
130
- <!-- 6️⃣ resources -->
131
- [⛳gh-discussions]: https://github.com/pboling/gitmoji-regex/discussions
132
- [⛳gh-discussions-img]: https://img.shields.io/github/discussions/pboling/gitmoji-regex
133
- [🖇codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
134
- [🖇codementor-img]: https://cdn.codementor.io/badges/get_help_github.svg
135
- [🏘chat]: https://gitter.im/pboling/gitmoji-regex
136
- [🏘chat-img]: https://img.shields.io/gitter/room/pboling/gitmoji-regex.svg
137
- [🚎blog]: http://www.railsbling.com/tags/gitmoji-regex/
138
- [🚎blog-img]: https://img.shields.io/badge/blog-railsbling-brightgreen.svg?style=flat
139
- [🖐wiki]: https://github.com/pboling/gitmoji-regex/wiki
140
- [🖐wiki-img]: https://img.shields.io/badge/wiki-examples-brightgreen.svg?style=flat
141
-
142
- <!-- 7️⃣ spread 💖 -->
143
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
144
- [⛳liberapay]: https://liberapay.com/pboling/donate
145
- [🖇sponsor-img]: https://img.shields.io/badge/sponsor-pboling.svg?style=social&logo=github
146
- [🖇sponsor]: https://github.com/sponsors/pboling
147
- [🏘tweet-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
148
- [🏘tweet]: http://twitter.com/galtzo
32
+ You can use this regular expression to validate commit messages
33
+ or extract leading gitmoji from strings.
149
34
 
150
- <!-- Maintainer Contact Links -->
151
- [railsbling]: http://www.railsbling.com
152
- [peterboling]: http://www.peterboling.com
153
- [aboutme]: https://about.me/peter.boling
154
- [angelme]: https://angel.co/peter-boling
155
- [coderme]:http://coderwall.com/pboling
35
+ ```ruby
36
+ # character at position 0 is a Gitmoji!
37
+ "🔥" =~ Gitmoji::Regex::REGEX # => 0
38
+
39
+ # (0 is the index of the match, so it means valid!)
40
+ (Gitmoji::Regex::REGEX =~ "✨ Add feature").zero? #=> true
41
+
42
+ # Scan for Gitmoji
43
+ "✨ Fix bug 🐛".scan(Gitmoji::Regex::REGEX) #=> ["✨", "🐛"]
44
+ ```
156
45
 
157
- ## Installation
46
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 |
47
+ |------------------------------------------------|-------------------------------------------------------------------------------------|
48
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
49
+
50
+ ## 💡 Info you can shake a stick at
51
+
52
+ ### Federated DVCS
53
+
54
+ <details>
55
+ <summary>Find this repo on other forges (Coming soon!)</summary>
56
+
57
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
58
+ |-------------------------------------------------------|-------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
59
+ | 🧪 [galtzo-floss/gitmoji-regex on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
60
+ | 🧊 [galtzo-floss/gitmoji-regex on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
61
+ | 🐙 [galtzo-floss/gitmoji-regex on GitHub][📜src-gh] | A Dirty Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] |
62
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
63
+
64
+ </details>
65
+
66
+ [gh-discussions]: https://github.com/galtzo-floss/gitmoji-regex/discussions
67
+
68
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/gitmoji-regex)](https://tidelift.com/subscription/pkg/rubygems-gitmoji-regex?utm_source=rubygems-gitmoji-regex&utm_medium=referral&utm_campaign=readme)
69
+
70
+ <details>
71
+ <summary>Need enterprise-level guarantees?</summary>
72
+
73
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
74
+
75
+ - 💡Subscribe for support guarantees covering _all_ FLOSS dependencies
76
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
77
+ - 💡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
78
+
79
+ Alternatively:
80
+
81
+ - [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
82
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
83
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
84
+
85
+ </details>
86
+
87
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
88
+ |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
89
+ | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] <br/> [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎10-j-wf] [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
90
+ | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] <br/> [![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] |
91
+ | 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] |
92
+ | Works with MRI Ruby 2 | [![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] |
93
+ | 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] |
94
+ | 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] [![Wiki][📜wiki-img]][📜wiki] |
95
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
96
+ | 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] |
97
+ | Support | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
98
+ | 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] |
99
+ | `...` 💖 | [![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] |
100
+
101
+ ## ✨ Installation
158
102
 
159
103
  Install the gem and add to the application's Gemfile by executing:
160
104
 
@@ -164,128 +108,390 @@ If bundler is not being used to manage dependencies, install the gem by executin
164
108
 
165
109
  $ gem install gitmoji-regex
166
110
 
111
+ ### 🔒 Secure Installation
112
+
113
+ <details>
114
+ <summary>For Medium or High Security Installations</summary>
115
+
116
+ This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
117
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
118
+ by following the instructions below.
119
+
120
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
121
+
122
+ ```console
123
+ gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
124
+ ```
125
+
126
+ You only need to do that once. Then proceed to install with:
127
+
128
+ ```console
129
+ gem install gitmoji-regex -P HighSecurity
130
+ ```
131
+
132
+ The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
133
+
134
+ If you want to up your security game full-time:
135
+
136
+ ```console
137
+ bundle config set --global trust-policy MediumSecurity
138
+ ```
139
+
140
+ `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
141
+
142
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
143
+
144
+ </details>
145
+
146
+ ## ⚙️ Configuration
147
+
148
+ Not needed.
149
+
150
+ ## 🔧 Basic Usage
151
+
167
152
  ## Usage
168
153
 
169
154
  ```ruby
170
155
  "🔥" =~ Gitmoji::Regex::REGEX
171
156
  # => 0 # character at position 0 is a Gitmoji!
157
+
172
158
  "fire" =~ Gitmoji::Regex::REGEX
173
159
  # => nil
160
+
161
+ (Gitmoji::Regex::REGEX =~ "✨ Add feature")
162
+ # => 0
163
+
164
+ "✨ Fix bug 🐛".scan(Gitmoji::Regex::REGEX)
165
+ # => ["✨", "🐛"]
174
166
  ```
175
167
 
176
- ## Development
168
+ I use this gem to validate gitmoji at the first character of each commit message in a git pre-commit-hook.
169
+ I blogged about the [pattern I follow](https://railsbling.com/posts/blog-setup/my-git-commit-hooks/).
170
+ Although that post was before I adopted Gitmoji for commits, it should be obvious how to integrate it.
171
+ I'll write a new blog post soon with my current commit hooks.
172
+ If you can't wait, you can find what I currently use in this repo: [.git-hooks](.git-hooks).
177
173
 
178
- 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.
174
+ ## 🦷 FLOSS Funding
179
175
 
180
- 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).
176
+ > How wonderful it is that nobody need wait a single moment before starting to improve the world.<br/>
177
+ >—Anne Frank
181
178
 
182
- To update the cached `src/gitmojis.json` load the console with `bin/console`, and run:
183
- ```ruby
184
- Gitmoji::Regex::Reference.instance.write_json
185
- ```
179
+ 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 — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me. 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).
186
180
 
187
- ## Contributing
181
+ 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`.
188
182
 
189
- See [CONTRIBUTING.md][contributing]
183
+ 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.
190
184
 
191
- ## Contributors
185
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
192
186
 
193
- [![Contributors](https://contrib.rocks/image?repo=pboling/gitmoji-regex)]("https://github.com/pboling/gitmoji-regex/graphs/contributors")
187
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
194
188
 
195
- Made with [contributors-img](https://contrib.rocks).
189
+ ## 🔐 Security
196
190
 
197
- ## License
191
+ See [SECURITY.md][🔐security].
198
192
 
199
- The gem is available as open source under the terms of
200
- the [MIT License][license] [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)][license-ref].
201
- See [LICENSE][license] for the official [Copyright Notice][copyright-notice-explainer].
193
+ ## 🤝 Contributing
202
194
 
203
- * Copyright (c) 2022 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
195
+ If you need some ideas of where to help, you could work on adding more code coverage,
196
+ or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
197
+ or use the gem and think about how it could be better.
204
198
 
205
- NOTE: the [gitmoji project](https://github.com/carloscuesta/gitmoji) is also [MIT Licensed](https://github.com/carloscuesta/gitmoji/blob/master/LICENSE), and the file `src/gitmojis.json` comes from that project.
199
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
206
200
 
207
- ## Code of Conduct
201
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
208
202
 
209
- Everyone interacting in the Gitmoji::Regex project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/pboling/gitmoji-regex/blob/main/CODE_OF_CONDUCT.md).
203
+ ### 🚀 Release Instructions
210
204
 
211
- ## Versioning
205
+ See [CONTRIBUTING.md][🤝contributing].
212
206
 
213
- This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations of this scheme should be reported as
214
- bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, a new version should be
215
- immediately released that restores compatibility. Breaking changes to the public API will only be introduced with new
216
- major versions.
207
+ ### Code Coverage
217
208
 
218
- As a result of this policy, you can (and should) specify a dependency on this gem using
219
- the [Pessimistic Version Constraint][pvc] with two digits of precision.
209
+ [![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
220
210
 
221
- For example:
211
+ [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
222
212
 
223
- ```ruby
224
- spec.add_dependency "gitmoji-regex", "~> 1.0"
225
- ```
213
+ [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov]
226
214
 
227
- ## Security
215
+ ### 🪇 Code of Conduct
228
216
 
229
- See [SECURITY.md](https://github.com/pboling/gitmoji-regex/blob/main/SECURITY.md).
217
+ Everyone interacting with this project's codebases, issue trackers,
218
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
230
219
 
231
- [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
220
+ ## 🌈 Contributors
232
221
 
233
- [gh_discussions]: https://github.com/pboling/gitmoji-regex/discussions
222
+ [![Contributors][🖐contributors-img]][🖐contributors]
234
223
 
235
- [conduct]: https://github.com/pboling/gitmoji-regex/blob/main/CODE_OF_CONDUCT.md
224
+ Made with [contributors-img][🖐contrib-rocks].
236
225
 
237
- [contributing]: https://github.com/pboling/gitmoji-regex/blob/main/CONTRIBUTING.md
226
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/gitmoji-regex/-/graphs/main][🚎contributors-gl]
238
227
 
239
- [security]: https://github.com/pboling/gitmoji-regex/blob/main/SECURITY.md
228
+ <details>
229
+ <summary>⭐️ Star History</summary>
240
230
 
241
- [license]: https://github.com/pboling/gitmoji-regex/blob/main/LICENSE.txt
231
+ <a href="https://star-history.com/#galtzo-floss/gitmoji-regex&Date">
232
+ <picture>
233
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/gitmoji-regex&type=Date&theme=dark" />
234
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/gitmoji-regex&type=Date" />
235
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=galtzo-floss/gitmoji-regex&type=Date" />
236
+ </picture>
237
+ </a>
242
238
 
243
- [license-ref]: https://opensource.org/licenses/MIT
239
+ </details>
244
240
 
245
- [semver]: http://semver.org/
241
+ ## 📌 Versioning
246
242
 
247
- [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
243
+ This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
244
+ Violations of this scheme should be reported as bugs.
245
+ Specifically, if a minor or patch version is released that breaks backward compatibility,
246
+ a new version should be immediately released that restores compatibility.
247
+ Breaking changes to the public API will only be introduced with new major versions.
248
248
 
249
- [railsbling]: http://www.railsbling.com
249
+ > dropping support for a platform is both obviously and objectively a breaking change <br/>
250
+ >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
250
251
 
251
- [peterboling]: http://www.peterboling.com
252
+ I understand that policy doesn't work universally ("exceptions to every rule!"),
253
+ but it is the policy here.
254
+ As such, in many cases it is good to specify a dependency on this library using
255
+ the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
252
256
 
253
- [aboutme]: https://about.me/peter.boling
257
+ For example:
254
258
 
255
- [angelme]: https://angel.co/peter-boling
259
+ ```ruby
260
+ spec.add_dependency("gitmoji-regex", "~> 1.0")
261
+ ```
256
262
 
257
- [coderme]:http://coderwall.com/pboling
263
+ <details>
264
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
258
265
 
259
- [followme-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
266
+ SemVer should, but doesn't explicitly, say that dropping support for specific Platforms
267
+ is a *breaking change* to an API.
268
+ It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
260
269
 
261
- [tweetme]: http://twitter.com/galtzo
270
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
271
+ read this article from the creator of SemVer:
262
272
 
263
- [politicme]: https://nationalprogressiveparty.org
273
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
264
274
 
265
- [documentation]: https://rubydoc.info/github/pboling/gitmoji-regex/main
275
+ </details>
266
276
 
267
- [source]: https://github.com/pboling/gitmoji-regex/
277
+ See [CHANGELOG.md][📌changelog] for a list of releases.
268
278
 
269
- [actions]: https://github.com/pboling/gitmoji-regex/actions
279
+ ## 📄 License
270
280
 
271
- [issues]: https://github.com/pboling/gitmoji-regex/issues
281
+ The gem is available as open source under the terms of
282
+ the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
283
+ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
272
284
 
273
- [climate_maintainability]: https://codeclimate.com/github/pboling/gitmoji-regex/maintainability
285
+ ### © Copyright
274
286
 
275
- [climate_coverage]: https://codeclimate.com/github/pboling/gitmoji-regex/test_coverage
287
+ <ul>
288
+ <li>
289
+ Copyright (c) 2025 Peter H. Boling, of
290
+ <a href="https://discord.gg/3qme4XHNKN">
291
+ Galtzo.com
292
+ <picture>
293
+ <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
294
+ </picture>
295
+ </a>, and gitmoji-regex contributors.
296
+ </li>
297
+ <li>Copyright (c) 2014-2017 Zach Taylor & Avant</li>
298
+ </ul>
276
299
 
277
- [codecov_coverage]: https://codecov.io/gh/pboling/gitmoji-regex
300
+ ## 🤑 A request for help
278
301
 
279
- [code_triage]: https://www.codetriage.com/pboling/gitmoji-regex
302
+ Maintainers have teeth, and need to pay their dentists.
303
+ After getting laid off in an RIF in March, and filled with many dozens of rejections,
304
+ I'm now spending ~80 hours a week building open source tools.
305
+ I'm hoping to be able to pay for my kids' health insurance this month,
306
+ so if you value the work I am doing, please help.
307
+ I need your support. Please consider sponsoring me.
280
308
 
281
- [blogpage]: http://www.railsbling.com/tags/gitmoji-regex/
309
+ [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
282
310
 
283
- [rubygems]: https://rubygems.org/gems/gitmoji-regex
311
+ To say "thanks for maintaining such a great tool" 👇️ Join the Discord or ☝️ send money.
284
312
 
285
- [chat]: https://gitter.im/pboling/gitmoji-regex?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
313
+ To join the community or get help 👇️ Join the Discord.
286
314
 
287
- [maintenancee_policy]: https://guides.rubyonrails.org/maintenance_policy.html#security-issues
315
+ [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
288
316
 
289
- [liberapay_donate]: https://liberapay.com/pboling/donate
317
+ Thanks for RTFM. ☺️
290
318
 
291
- [gh_sponsors]: https://github.com/sponsors/pboling
319
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611
320
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
321
+ [⛳liberapay]: https://liberapay.com/pboling/donate
322
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
323
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
324
+ [🖇sponsor]: https://github.com/sponsors/pboling
325
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg
326
+ [🖇polar]: https://polar.sh/pboling
327
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg
328
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
329
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg
330
+ [🖇patreon]: https://patreon.com/galtzo
331
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-a51611.svg?style=flat
332
+ [🖇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
333
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
334
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
335
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
336
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
337
+ [🖇floss-funding.dev]: https://floss-funding.dev
338
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
339
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
340
+ [✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
341
+
342
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
343
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/gitmoji-regex
344
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Timecop%3A%3ARspec-3C2D2D.svg?style=square&logo=ruby&logoColor=white
345
+ [⛳️gem-name]: https://rubygems.org/gems/gitmoji-regex
346
+ [⛳️name-img]: https://img.shields.io/badge/name-timecop--rspec-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
347
+ [🚂maint-blog]: http://www.railsbling.com/tags/gitmoji-regex
348
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
349
+ [🚂maint-contact]: http://www.railsbling.com/contact
350
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
351
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
352
+ [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
353
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling/u/peter-boling
354
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
355
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
356
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
357
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
358
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
359
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
360
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
361
+ [💖🌳linktree]: https://linktr.ee/galtzo
362
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
363
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
364
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
365
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
366
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
367
+ [💖🧊berg]: https://codeberg.org/pboling
368
+ [💖🐙hub]: https://github.org/pboling
369
+ [💖🛖hut]: https://sr.ht/~galtzo/
370
+ [💖🧪lab]: https://gitlab.com/pboling
371
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
372
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
373
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
374
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
375
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription
376
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
377
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
378
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
379
+ [🚂railsbling]: http://www.railsbling.com
380
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
381
+ [📜src-gl]: https://gitlab.com/galtzo-floss/gitmoji-regex/
382
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
383
+ [📜src-cb]: https://codeberg.org/galtzo-floss/gitmoji-regex
384
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
385
+ [📜src-gh]: https://github.com/galtzo-floss/gitmoji-regex
386
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
387
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
388
+ [📜wiki]: https://gitlab.com/galtzo-floss/gitmoji-regex/-/wikis/home
389
+ [📜wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=Wiki&logoColor=white
390
+ [👽dl-rank]: https://rubygems.org/gems/gitmoji-regex
391
+ [👽dl-ranki]: https://img.shields.io/gem/rd/gitmoji-regex.svg
392
+ [👽oss-help]: https://www.codetriage.com/galtzo-floss/gitmoji-regex
393
+ [👽oss-helpi]: https://www.codetriage.com/galtzo-floss/gitmoji-regex/badges/users.svg
394
+ [👽version]: https://rubygems.org/gems/gitmoji-regex
395
+ [👽versioni]: https://img.shields.io/gem/v/gitmoji-regex.svg
396
+ [🔑qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/gitmoji-regex
397
+ [🔑qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/gitmoji-regex/maintainability.svg
398
+ [🔑qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/gitmoji-regex/metrics/code?sort=coverageRating
399
+ [🔑qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/gitmoji-regex/coverage.svg
400
+ [🔑codecov]: https://codecov.io/gh/galtzo-floss/gitmoji-regex
401
+ [🔑codecovi♻️]: https://codecov.io/gh/galtzo-floss/gitmoji-regex/graph/badge.svg?token=EJCOr0hsPq
402
+ [🔑coveralls]: https://coveralls.io/github/galtzo-floss/gitmoji-regex?branch=main
403
+ [🔑coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/gitmoji-regex/badge.svg?branch=main
404
+ [🖐codeQL]: https://github.com/galtzo-floss/gitmoji-regex/security/code-scanning
405
+ [🖐codeQL-img]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/codeql-analysis.yml/badge.svg
406
+ [🚎1-an-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/ancient.yml
407
+ [🚎1-an-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/ancient.yml/badge.svg
408
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/coverage.yml
409
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/coverage.yml/badge.svg
410
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/heads.yml
411
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/heads.yml/badge.svg
412
+ [🚎4-lg-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/legacy.yml
413
+ [🚎4-lg-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/legacy.yml/badge.svg
414
+ [🚎5-st-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/style.yml
415
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/style.yml/badge.svg
416
+ [🚎6-s-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/supported.yml
417
+ [🚎6-s-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/supported.yml/badge.svg
418
+ [🚎7-us-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/unsupported.yml
419
+ [🚎7-us-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/unsupported.yml/badge.svg
420
+ [🚎8-ho-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/hoary.yml
421
+ [🚎8-ho-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/hoary.yml/badge.svg
422
+ [🚎9-t-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/truffle.yml
423
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/truffle.yml/badge.svg
424
+ [🚎10-j-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/jruby.yml
425
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/jruby.yml/badge.svg
426
+ [🚎11-c-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/current.yml
427
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/current.yml/badge.svg
428
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/deps_locked.yml
429
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/deps_locked.yml/badge.svg
430
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/deps_unlocked.yml
431
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/gitmoji-regex/actions/workflows/deps_unlocked.yml/badge.svg
432
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
433
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
434
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
435
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
436
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
437
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
438
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
439
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
440
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
441
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
442
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
443
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
444
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
445
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
446
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
447
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
448
+ [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
449
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
450
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
451
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
452
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
453
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
454
+ [🤝gh-issues]: https://github.com/galtzo-floss/gitmoji-regex/issues
455
+ [🤝gh-pulls]: https://github.com/galtzo-floss/gitmoji-regex/pulls
456
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/gitmoji-regex/-/issues
457
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/gitmoji-regex/-/merge_requests
458
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/gitmoji-regex/issues
459
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/gitmoji-regex/pulls
460
+ [🤝cb-donate]: https://donate.codeberg.org/
461
+ [🤝contributing]: CONTRIBUTING.md
462
+ [🔑codecov-g♻️]: https://codecov.io/gh/galtzo-floss/gitmoji-regex/graphs/tree.svg?token=EJCOr0hsPq
463
+ [🖐contrib-rocks]: https://contrib.rocks
464
+ [🖐contributors]: https://github.com/galtzo-floss/gitmoji-regex/graphs/contributors
465
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/gitmoji-regex
466
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/gitmoji-regex/-/graphs/main
467
+ [🪇conduct]: CODE_OF_CONDUCT.md
468
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
469
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
470
+ [📌semver]: https://semver.org/spec/v2.0.0.html
471
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
472
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
473
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
474
+ [📌changelog]: CHANGELOG.md
475
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
476
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
477
+ [📌gitmoji]:https://gitmoji.dev
478
+ [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
479
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
480
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.057-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
481
+ [🔐security]: SECURITY.md
482
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
483
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
484
+ [📄license]: LICENSE.txt
485
+ [📄license-ref]: https://opensource.org/licenses/MIT
486
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
487
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
488
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
489
+ [🚎yard-current]: http://rubydoc.info/gems/gitmoji-regex
490
+ [🚎yard-head]: https://rspec-stubbed-env.galtzo.com
491
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
492
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/gitmoji-regex/-/tree/main/checksums
493
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
494
+ [💎rlts-img]: https://img.shields.io/badge/code_style_%26_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
495
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
496
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
497
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/