gitmoji-regex 1.0.2 → 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,151 +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 SAAS 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️⃣ | maintenance & linting | [![Maintainability][⛳cclim-maint-img♻️]][⛳cclim-maint] [![Helpers][🖇triage-help-img]][🖇triage-help] [![Depfu][🏘depfu-img♻️]][🏘depfu♻️] [![Contributors][🚎contributors-img]][🚎contributors] [![Style][🖐style-wf-img]][🖐style-wf] [![Kloc Roll][🧮kloc-img]][🧮kloc] |
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] |
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] |
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️⃣ maintenance & 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
- [🧮mac-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/macos.yml
110
- [🧮mac-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/macos.yml/badge.svg
111
- [📗win-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/windows.yml
112
- [📗win-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/windows.yml/badge.svg
113
-
114
- <!-- 5️⃣ coverage & security -->
115
- [⛳cclim-cov]: https://codeclimate.com/github/pboling/gitmoji-regex/test_coverage
116
- [⛳cclim-cov-img♻️]: https://api.codeclimate.com/v1/badges/f32e1d1148e8bad58197/test_coverage
117
- [🖇codecov-img♻️]: https://codecov.io/gh/pboling/gitmoji-regex/branch/main/graph/badge.svg?token=EJCOr0hsPq
118
- [🖇codecov]: https://codecov.io/gh/pboling/gitmoji-regex
119
- [🏘coveralls]: https://coveralls.io/github/pboling/gitmoji-regex?branch=main
120
- [🏘coveralls-img]: https://coveralls.io/repos/github/pboling/gitmoji-regex/badge.svg?branch=main
121
- [🚎sec-pol]: https://github.com/pboling/gitmoji-regex/blob/main/SECURITY.md
122
- [🚎sec-pol-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
123
- [🖐codeQL]: https://github.com/pboling/gitmoji-regex/security/code-scanning
124
- [🖐codeQL-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/codeql-analysis.yml/badge.svg
125
- [🧮cov-wf]: https://github.com/pboling/gitmoji-regex/actions/workflows/coverage.yml
126
- [🧮cov-wf-img]: https://github.com/pboling/gitmoji-regex/actions/workflows/coverage.yml/badge.svg
127
-
128
- <!-- 6️⃣ resources -->
129
- [⛳gh-discussions]: https://github.com/pboling/gitmoji-regex/discussions
130
- [⛳gh-discussions-img]: https://img.shields.io/github/discussions/pboling/gitmoji-regex
131
- [🖇codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
132
- [🖇codementor-img]: https://cdn.codementor.io/badges/get_help_github.svg
133
- [🏘chat]: https://gitter.im/pboling/gitmoji-regex
134
- [🏘chat-img]: https://img.shields.io/gitter/room/pboling/gitmoji-regex.svg
135
- [🚎blog]: http://www.railsbling.com/tags/gitmoji-regex/
136
- [🚎blog-img]: https://img.shields.io/badge/blog-railsbling-brightgreen.svg?style=flat
137
- [🖐wiki]: https://github.com/pboling/gitmoji-regex/wiki
138
- [🖐wiki-img]: https://img.shields.io/badge/wiki-examples-brightgreen.svg?style=flat
139
-
140
- <!-- 7️⃣ spread 💖 -->
141
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
142
- [⛳liberapay]: https://liberapay.com/pboling/donate
143
- [🖇sponsor-img]: https://img.shields.io/badge/sponsor-pboling.svg?style=social&logo=github
144
- [🖇sponsor]: https://github.com/sponsors/pboling
145
- [🏘tweet-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
146
- [🏘tweet]: http://twitter.com/galtzo
32
+ You can use this regular expression to validate commit messages
33
+ or extract leading gitmoji from strings.
34
+
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
+ ```
45
+
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] |
147
63
 
148
- ## Installation
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
149
102
 
150
103
  Install the gem and add to the application's Gemfile by executing:
151
104
 
@@ -155,97 +108,390 @@ If bundler is not being used to manage dependencies, install the gem by executin
155
108
 
156
109
  $ gem install gitmoji-regex
157
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
+
158
152
  ## Usage
159
153
 
160
154
  ```ruby
161
155
  "🔥" =~ Gitmoji::Regex::REGEX
162
156
  # => 0 # character at position 0 is a Gitmoji!
157
+
163
158
  "fire" =~ Gitmoji::Regex::REGEX
164
159
  # => nil
160
+
161
+ (Gitmoji::Regex::REGEX =~ "✨ Add feature")
162
+ # => 0
163
+
164
+ "✨ Fix bug 🐛".scan(Gitmoji::Regex::REGEX)
165
+ # => ["✨", "🐛"]
165
166
  ```
166
167
 
167
- ## 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).
168
173
 
169
- 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
170
175
 
171
- 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
172
178
 
173
- To update the cached `src/gitmojis.json` load the console with `bin/console`, and run:
174
- ```ruby
175
- Gitmoji::Regex::Reference.instance.write_json
176
- ```
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).
177
180
 
178
- ## 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`.
179
182
 
180
- 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.
181
184
 
182
- ## Contributors
185
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
183
186
 
184
- [![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]
185
188
 
186
- Made with [contributors-img](https://contrib.rocks).
189
+ ## 🔐 Security
187
190
 
188
- ## License
191
+ See [SECURITY.md][🔐security].
189
192
 
190
- The gem is available as open source under the terms of
191
- the [MIT License][license] [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)][license-ref].
192
- See [LICENSE][license] for the official [Copyright Notice][copyright-notice-explainer].
193
+ ## 🤝 Contributing
194
+
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.
198
+
199
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
200
+
201
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
202
+
203
+ ### 🚀 Release Instructions
204
+
205
+ See [CONTRIBUTING.md][🤝contributing].
206
+
207
+ ### Code Coverage
208
+
209
+ [![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
210
+
211
+ [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
212
+
213
+ [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov]
214
+
215
+ ### 🪇 Code of Conduct
216
+
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].
219
+
220
+ ## 🌈 Contributors
221
+
222
+ [![Contributors][🖐contributors-img]][🖐contributors]
193
223
 
194
- * Copyright (c) 2022 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
224
+ Made with [contributors-img][🖐contrib-rocks].
195
225
 
196
- 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.
226
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/gitmoji-regex/-/graphs/main][🚎contributors-gl]
197
227
 
198
- ## Code of Conduct
228
+ <details>
229
+ <summary>⭐️ Star History</summary>
199
230
 
200
- Everyone interacting in the Gitmoji::Regex project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct][conduct].
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>
201
238
 
202
- ## Versioning
239
+ </details>
203
240
 
204
- This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations of this scheme should be reported as
205
- bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, a new version should be
206
- immediately released that restores compatibility. Breaking changes to the public API will only be introduced with new
207
- major versions.
241
+ ## 📌 Versioning
208
242
 
209
- As a result of this policy, you can (and should) specify a dependency on this gem using
210
- the [Pessimistic Version Constraint][pvc] with two digits of precision.
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
+
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]
251
+
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.
211
256
 
212
257
  For example:
213
258
 
214
259
  ```ruby
215
- spec.add_dependency "gitmoji-regex", "~> 1.0"
260
+ spec.add_dependency("gitmoji-regex", "~> 1.0")
216
261
  ```
217
262
 
218
- ## Security
219
-
220
- See [SECURITY.md][security].
221
-
222
- [aboutme]: https://about.me/peter.boling
223
- [actions]: https://github.com/pboling/gitmoji-regex/actions
224
- [angelme]: https://angel.co/peter-boling
225
- [blogpage]: http://www.railsbling.com/tags/gitmoji-regex/
226
- [codecov_coverage]: https://codecov.io/gh/pboling/gitmoji-regex
227
- [code_triage]: https://www.codetriage.com/pboling/gitmoji-regex
228
- [chat]: https://gitter.im/pboling/gitmoji-regex?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
229
- [climate_coverage]: https://codeclimate.com/github/pboling/gitmoji-regex/test_coverage
230
- [climate_maintainability]: https://codeclimate.com/github/pboling/gitmoji-regex/maintainability
231
- [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
232
- [conduct]: https://gitlab.com/pboling/gitmoji-regex/-/blob/main/CODE_OF_CONDUCT.md
233
- [contributing]: https://gitlab.com/pboling/gitmoji-regex/-/blob/main/CONTRIBUTING.md
234
- [devto]: https://dev.to/galtzo
235
- [documentation]: https://rubydoc.info/github/pboling/gitmoji-regex/main
236
- [followme]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
237
- [gh_discussions]: https://github.com/pboling/gitmoji-regex/discussions
238
- [gh_sponsors]: https://github.com/sponsors/pboling
239
- [issues]: https://github.com/pboling/gitmoji-regex/issues
240
- [liberapay_donate]: https://liberapay.com/pboling/donate
241
- [license]: LICENSE.txt
242
- [license-ref]: https://opensource.org/licenses/MIT
243
- [license-img]: https://img.shields.io/badge/License-MIT-green.svg
244
- [peterboling]: http://www.peterboling.com
245
- [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
246
- [railsbling]: http://www.railsbling.com
247
- [rubygems]: https://rubygems.org/gems/gitmoji-regex
248
- [security]: https://github.com/pboling/gitmoji-regex/blob/main/SECURITY.md
249
- [semver]: http://semver.org/
250
- [source]: https://github.com/pboling/gitmoji-regex/
251
- [tweetme]: http://twitter.com/galtzo
263
+ <details>
264
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
265
+
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.
269
+
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:
272
+
273
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
274
+
275
+ </details>
276
+
277
+ See [CHANGELOG.md][📌changelog] for a list of releases.
278
+
279
+ ## 📄 License
280
+
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].
284
+
285
+ ### © Copyright
286
+
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>
299
+
300
+ ## 🤑 A request for help
301
+
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.
308
+
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]
310
+
311
+ To say "thanks for maintaining such a great tool" 👇️ Join the Discord or ☝️ send money.
312
+
313
+ To join the community or get help 👇️ Join the Discord.
314
+
315
+ [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
316
+
317
+ Thanks for RTFM. ☺️
318
+
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/