sanitize_email 2.0.11 → 2.0.13
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +46 -1
- data/CITATION.cff +2 -2
- data/CONTRIBUTING.md +24 -5
- data/FUNDING.md +14 -7
- data/LICENSE.md +13 -13
- data/MIT.md +21 -0
- data/README.md +83 -39
- data/SECURITY.md +1 -1
- data/lib/sanitize_email/config.rb +2 -2
- data/lib/sanitize_email/mail_header_tools.rb +2 -2
- data/lib/sanitize_email/overridden_addresses.rb +7 -8
- data/lib/sanitize_email/version.rb +1 -1
- data/lib/sanitize_email.rb +17 -7
- data.tar.gz.sig +0 -0
- metadata +66 -22
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e428d45c83d29ee8b27c9752d85bb8b53518bd3ea1ababeab6829719e6422c7a
|
|
4
|
+
data.tar.gz: 87522e8f3cb045b99c8a1d3ee16253182c76a673542d3de812f3650c609ca74a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3af8f96025e00cbcdb2a6e76e661e0a312db260ee564d1312aad841e19c6ac26b61cbd29ca61fd42ad74fecc7dcf5f91191d03743d2e2f6ebadd0f8b6401b5c1
|
|
7
|
+
data.tar.gz: cdd89499132bb6ac8845678113eb857aac44db01214062207d8e18c921fef04091c05b0950fe0b0338390dfd759f4e4cd1692200894e1a161138a872acdfd81e
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,47 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [2.0.13] - 2026-07-02
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.0.13][2.0.13t]
|
|
36
|
+
- COVERAGE: 83.12% -- 320/385 lines in 13 files
|
|
37
|
+
- BRANCH COVERAGE: 76.07% -- 89/117 branches in 13 files
|
|
38
|
+
- 51.14% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- Added support for JRuby 10.1 and TruffleRuby 34.0.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Retemplated project metadata and CI/development automation with `kettle-jem` v7.0.0.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- Root development bundle now includes the default Rails 7.2 test stack so
|
|
51
|
+
`bundle exec kettle-test` can load `rails_helper` and Combustion.
|
|
52
|
+
- Package configured license files in gem release file lists.
|
|
53
|
+
|
|
54
|
+
## [2.0.12] - 2026-06-14
|
|
55
|
+
|
|
56
|
+
- TAG: [v2.0.12][2.0.12t]
|
|
57
|
+
- COVERAGE: 94.87% -- 259/273 lines in 7 files
|
|
58
|
+
- BRANCH COVERAGE: 81.19% -- 82/101 branches in 7 files
|
|
59
|
+
- 51.14% documented
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- Refreshed generated project metadata, support documentation and README
|
|
64
|
+
badges, funding metadata, documentation URLs, CI workflow pins and matrices,
|
|
65
|
+
`docs/CNAME`, and development dependency floors from the latest `kettle-jem`
|
|
66
|
+
template.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- Honored explicit per-call `activation_proc` and `engage` options in `SanitizeEmail.sanitary`, and restored temporary sanitization state when a delivery raises.
|
|
71
|
+
- Preserved the Rails environment activation override in sanitizer specs so
|
|
72
|
+
test setup matches configured activation behavior.
|
|
73
|
+
|
|
33
74
|
## [2.0.11] - 2026-05-28
|
|
34
75
|
|
|
35
76
|
- TAG: [v2.0.11][2.0.11t]
|
|
@@ -441,7 +482,11 @@ Old version?
|
|
|
441
482
|
* Fixed require paths
|
|
442
483
|
* added about.yml and this CHANGELOG
|
|
443
484
|
|
|
444
|
-
[Unreleased]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.
|
|
485
|
+
[Unreleased]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.13...HEAD
|
|
486
|
+
[2.0.13]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.12...v2.0.13
|
|
487
|
+
[2.0.13t]: https://github.com/galtzo-floss/sanitize_email/releases/tag/v2.0.13
|
|
488
|
+
[2.0.12]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.11...v2.0.12
|
|
489
|
+
[2.0.12t]: https://github.com/galtzo-floss/sanitize_email/releases/tag/v2.0.12
|
|
445
490
|
[2.0.11]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.10...v2.0.11
|
|
446
491
|
[2.0.11t]: https://github.com/galtzo-floss/sanitize_email/releases/tag/v2.0.11
|
|
447
492
|
[2.0.10]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.9...v2.0.10
|
data/CITATION.cff
CHANGED
|
@@ -12,9 +12,9 @@ authors:
|
|
|
12
12
|
orcid: 'https://orcid.org/0009-0008-8519-441X'
|
|
13
13
|
identifiers:
|
|
14
14
|
- type: url
|
|
15
|
-
value: 'https://github.com/galtzo-floss/sanitize_email
|
|
15
|
+
value: 'https://github.com/galtzo-floss/sanitize_email'
|
|
16
16
|
description: "sanitize_email"
|
|
17
|
-
repository-code: 'https://github.com/galtzo-floss/sanitize_email
|
|
17
|
+
repository-code: 'https://github.com/galtzo-floss/sanitize_email'
|
|
18
18
|
abstract: >-
|
|
19
19
|
sanitize_email
|
|
20
20
|
license: See license file
|
data/CONTRIBUTING.md
CHANGED
|
@@ -102,22 +102,41 @@ Git hooks and commit message helpers (exe/kettle-commit-msg)
|
|
|
102
102
|
- GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
|
|
103
103
|
- GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
|
|
104
104
|
|
|
105
|
+
Git diff driver setup
|
|
106
|
+
- Local setup writes repository `.gitattributes` entries and local Git `diff.smorg-*` command config so this checkout uses StructuredMerge semantic diffs.
|
|
107
|
+
- Global setup registers `diff.smorg-*` commands once in the user Git config; use it when you work across several StructuredMerge-enabled repositories.
|
|
108
|
+
- Include-file setup writes `.git/smorg/config` and includes it from local Git config, keeping command registrations out of the repository files.
|
|
109
|
+
- Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
|
|
110
|
+
|
|
111
|
+
```console
|
|
112
|
+
K_JEM_TEMPLATING=true kettle-jem install
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Troubleshooting Git diffs
|
|
116
|
+
- Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
|
|
117
|
+
- Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
|
|
118
|
+
- If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
|
|
119
|
+
- To remove managed local entries, run `K_JEM_TEMPLATING=true kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
|
|
120
|
+
|
|
105
121
|
For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
|
|
106
122
|
|
|
107
123
|
## Appraisals
|
|
108
124
|
|
|
109
125
|
From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
|
|
110
126
|
Generated appraisal and CI workflow floors are controlled by `ruby.test_minimum`
|
|
111
|
-
in `.kettle-jem.yml`; this project was templated with `ruby.test_minimum: 2.4`.
|
|
127
|
+
in `.structuredmerge/kettle-jem.yml`; this project was templated with `ruby.test_minimum: 2.4`.
|
|
112
128
|
That value describes the lowest Ruby version expected to run the test/development
|
|
113
129
|
toolchain, and it may be higher than the gemspec runtime floor.
|
|
114
130
|
|
|
115
131
|
They are created and updated with the commands:
|
|
116
132
|
|
|
117
133
|
```console
|
|
118
|
-
bin/rake appraisal:
|
|
134
|
+
bin/rake appraisal:generate
|
|
119
135
|
```
|
|
120
136
|
|
|
137
|
+
Use `bin/rake appraisal:update` when you intentionally need to resolve fresh
|
|
138
|
+
appraisal locks.
|
|
139
|
+
|
|
121
140
|
If you need to reset all gemfiles/*.gemfile.lock files:
|
|
122
141
|
|
|
123
142
|
```console
|
|
@@ -233,9 +252,9 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th
|
|
|
233
252
|
14. Run `bundle exec rake release` which will create a git tag for the version,
|
|
234
253
|
push git commits and tags, and push the `.gem` file to the gem host configured in the gemspec.
|
|
235
254
|
|
|
236
|
-
[📜src-gl]: https://gitlab.com/galtzo-floss/sanitize_email
|
|
237
|
-
[📜src-cb]: https://codeberg.org/galtzo-floss/sanitize_email
|
|
238
|
-
[📜src-gh]: https://github.com/galtzo-floss/sanitize_email
|
|
255
|
+
[📜src-gl]: https://gitlab.com/galtzo-floss/sanitize_email
|
|
256
|
+
[📜src-cb]: https://codeberg.org/galtzo-floss/sanitize_email
|
|
257
|
+
[📜src-gh]: https://github.com/galtzo-floss/sanitize_email
|
|
239
258
|
[🧪build]: https://github.com/galtzo-floss/sanitize_email/actions
|
|
240
259
|
[🤝conduct]: https://github.com/galtzo-floss/sanitize_email/blob/main/CODE_OF_CONDUCT.md
|
|
241
260
|
[🖐contrib-rocks]: https://contrib.rocks
|
data/FUNDING.md
CHANGED
|
@@ -4,20 +4,20 @@ Official Discord 👉️ [![Live Chat on Discord][✉️discord-invite-img]][✉
|
|
|
4
4
|
|
|
5
5
|
Many paths lead to being a sponsor or a backer of this project. Are you on such a path?
|
|
6
6
|
|
|
7
|
-
[![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal]
|
|
7
|
+
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal]
|
|
8
8
|
|
|
9
|
-
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate
|
|
9
|
+
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
10
10
|
|
|
11
11
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
12
12
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
|
13
|
+
[🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
|
|
14
|
+
[🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
|
|
15
|
+
[🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
|
|
16
|
+
[🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
|
|
13
17
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
|
14
18
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
|
15
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
16
|
-
[🖇polar]: https://polar.sh/pboling
|
|
17
19
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
18
20
|
[🖇kofi]: https://ko-fi.com/pboling
|
|
19
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
20
|
-
[🖇patreon]: https://patreon.com/galtzo
|
|
21
21
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
22
22
|
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
|
23
23
|
[🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
|
|
@@ -42,7 +42,7 @@ To join the community or get help 👇️ Join the Discord.
|
|
|
42
42
|
|
|
43
43
|
To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
44
44
|
|
|
45
|
-
[![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
45
|
+
[![Sponsor galtzo-floss/sanitize_email on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
46
46
|
|
|
47
47
|
# Another Way to Support Open Source Software
|
|
48
48
|
|
|
@@ -55,6 +55,13 @@ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed
|
|
|
55
55
|
**[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
|
|
56
56
|
|
|
57
57
|
[⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
|
|
58
|
+
[🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
|
|
59
|
+
[🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
|
|
60
|
+
[🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
|
|
61
|
+
[🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
|
|
62
|
+
[🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
|
|
63
|
+
[🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
|
|
64
|
+
[🖇osc]: https://opencollective.com/galtzo-floss
|
|
58
65
|
[🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
|
|
59
66
|
[🖇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
|
|
60
67
|
[🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
|
data/LICENSE.md
CHANGED
|
@@ -7,16 +7,16 @@ Choose the option that best fits your use case:
|
|
|
7
7
|
|
|
8
8
|
## Copyright Notice
|
|
9
9
|
|
|
10
|
-
Copyright (c) 2008 Peter Boling
|
|
11
|
-
Copyright (c) 2009 John Trupiano
|
|
12
|
-
Copyright (c) 2009-2010 pboling
|
|
13
|
-
Copyright (c) 2009 Peter H. Boling
|
|
14
|
-
Copyright (c) 2012 David Morton
|
|
15
|
-
Copyright (c) 2012 Harry Lascelles
|
|
16
|
-
Copyright (c) 2012-2018, 2022, 2024, 2026 Peter H. Boling
|
|
17
|
-
Copyright (c) 2013 Adrien Siami
|
|
18
|
-
Copyright (c) 2013 Chris Altman
|
|
19
|
-
Copyright (c) 2014 Scott Rocher
|
|
20
|
-
Copyright (c) 2017 Marcus Ilgner
|
|
21
|
-
Copyright (c) 2018 Bernardo Galindo
|
|
22
|
-
Copyright (c) 2024-2025 joeyparis
|
|
10
|
+
- Copyright (c) 2008 Peter Boling
|
|
11
|
+
- Copyright (c) 2009 John Trupiano
|
|
12
|
+
- Copyright (c) 2009-2010 pboling
|
|
13
|
+
- Copyright (c) 2009 Peter H. Boling
|
|
14
|
+
- Copyright (c) 2012 David Morton
|
|
15
|
+
- Copyright (c) 2012 Harry Lascelles
|
|
16
|
+
- Copyright (c) 2012-2018, 2022, 2024, 2026 Peter H. Boling
|
|
17
|
+
- Copyright (c) 2013 Adrien Siami
|
|
18
|
+
- Copyright (c) 2013 Chris Altman
|
|
19
|
+
- Copyright (c) 2014 Scott Rocher
|
|
20
|
+
- Copyright (c) 2017 Marcus Ilgner
|
|
21
|
+
- Copyright (c) 2018 Bernardo Galindo
|
|
22
|
+
- Copyright (c) 2024-2025 joeyparis
|
data/MIT.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
See [LICENSE.md](LICENSE.md) for the copyright notice.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[🖼️galtzo-floss-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
|
|
4
|
-
[🖼️galtzo-floss]: https://discord.gg/3qme4XHNKN
|
|
5
|
-
[🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
|
|
6
|
-
[🖼️ruby-lang]: https://www.ruby-lang.org/
|
|
1
|
+
<a href="https://github.com/galtzo-floss"><img alt="galtzo-floss Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="12%" align="right"/></a> <a href="https://github.com/galtzo-floss/sanitize_email"><img alt="sanitize_email Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/sanitize_email/avatar-128px.svg" width="12%" align="right"/></a>
|
|
7
2
|
|
|
8
3
|
# 📧 SanitizeEmail
|
|
9
4
|
|
|
10
5
|
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
|
|
11
6
|
|
|
12
|
-
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][
|
|
7
|
+
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
|
|
13
8
|
|
|
14
9
|
---
|
|
15
10
|
|
|
16
11
|
`if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
|
|
17
12
|
|
|
18
|
-
[![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate
|
|
13
|
+
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
19
14
|
|
|
20
|
-
<details>
|
|
15
|
+
<details markdown="1">
|
|
21
16
|
<summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
|
|
22
17
|
|
|
23
18
|
I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
|
|
24
19
|
|
|
25
20
|
</details>
|
|
26
21
|
|
|
27
|
-
## 🌻 Synopsis
|
|
22
|
+
## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
|
|
28
23
|
|
|
29
24
|
It's particularly helpful when you want to prevent the delivery of email (e.g. in development/test environments) or alter the to/cc/bcc (e.g. in staging or demo environments) of all email generated from your application.
|
|
30
25
|
|
|
@@ -41,11 +36,11 @@ It's particularly helpful when you want to prevent the delivery of email (e.g. i
|
|
|
41
36
|
|
|
42
37
|
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
43
38
|
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
44
|
-
| Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
45
|
-
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
|
|
46
|
-
| Works with MRI Ruby 4 | [![Ruby
|
|
39
|
+
| Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
40
|
+
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
|
|
41
|
+
| Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
47
42
|
| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
|
|
48
|
-
| Works with MRI Ruby 2 | [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
|
|
43
|
+
| Works with MRI Ruby 2 | ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
|
|
49
44
|
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
|
50
45
|
| 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] |
|
|
51
46
|
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
|
|
@@ -62,11 +57,25 @@ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
|
62
57
|
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
63
58
|
not practical for the current toolchain.
|
|
64
59
|
|
|
65
|
-
|
|
66
|
-
|------------------------------------------------|--------------------------------------------------------|
|
|
67
|
-
| 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
|
|
60
|
+
<a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
|
|
68
61
|
|
|
62
|
+
The _amazing_ test matrix is powered by the kettle-dev stack.
|
|
63
|
+
|
|
64
|
+
<details markdown="1">
|
|
65
|
+
<summary>How kettle-dev manages complexity in tests</summary>
|
|
66
|
+
|
|
67
|
+
| Gem | Source | Role | Daily download rank |
|
|
68
|
+
|-----|--------|------|---------------------|
|
|
69
|
+
| [appraisal2](https://bestgems.org/gems/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [](https://bestgems.org/gems/appraisal2) |
|
|
70
|
+
| [appraisal2-rubocop](https://bestgems.org/gems/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [](https://bestgems.org/gems/appraisal2-rubocop) |
|
|
71
|
+
| [kettle-dev](https://bestgems.org/gems/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [](https://bestgems.org/gems/kettle-dev) |
|
|
72
|
+
| [kettle-jem](https://bestgems.org/gems/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [](https://bestgems.org/gems/kettle-jem) |
|
|
73
|
+
| [kettle-soup-cover](https://bestgems.org/gems/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [](https://bestgems.org/gems/kettle-soup-cover) |
|
|
74
|
+
| [kettle-test](https://bestgems.org/gems/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [](https://bestgems.org/gems/kettle-test) |
|
|
75
|
+
| [rubocop-lts](https://bestgems.org/gems/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [](https://bestgems.org/gems/rubocop-lts) |
|
|
76
|
+
| [turbo_tests2](https://bestgems.org/gems/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [](https://bestgems.org/gems/turbo_tests2) |
|
|
69
77
|
|
|
78
|
+
</details>
|
|
70
79
|
|
|
71
80
|
### Federated DVCS
|
|
72
81
|
|
|
@@ -142,29 +151,50 @@ This happens in a few different ways, and two of them are in the config below (`
|
|
|
142
151
|
|
|
143
152
|
## 🔧 Basic Usage
|
|
144
153
|
|
|
145
|
-
|
|
146
154
|
## 🦷 FLOSS Funding
|
|
147
155
|
|
|
148
|
-
While
|
|
156
|
+
While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
|
|
149
157
|
Raising a monthly budget of... "dollars" would make the project more sustainable.
|
|
150
158
|
|
|
151
159
|
We welcome both individual and corporate sponsors! We also offer a
|
|
152
160
|
wide array of funding channels to account for your preferences.
|
|
153
|
-
Currently, [
|
|
161
|
+
Currently, [Open Collective][🖇osc] is our preferred funding platform.
|
|
154
162
|
|
|
155
|
-
**If you're working in a company that's making significant use of
|
|
156
|
-
appreciate it if you suggest to your company to become a
|
|
163
|
+
**If you're working in a company that's making significant use of galtzo-floss tools we'd
|
|
164
|
+
appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
|
|
157
165
|
|
|
158
|
-
You can support the development of
|
|
166
|
+
You can support the development of galtzo-floss tools via
|
|
159
167
|
[GitHub Sponsors][🖇sponsor],
|
|
160
168
|
[Liberapay][⛳liberapay],
|
|
161
169
|
[PayPal][🖇paypal],
|
|
170
|
+
[Open Collective][🖇osc]
|
|
162
171
|
and [Tidelift][🏙️entsup-tidelift].
|
|
163
172
|
|
|
164
173
|
| 📍 NOTE |
|
|
165
174
|
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
166
175
|
| If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
|
|
167
176
|
|
|
177
|
+
### Open Collective for Individuals
|
|
178
|
+
|
|
179
|
+
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
|
|
180
|
+
|
|
181
|
+
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
182
|
+
|
|
183
|
+
<!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
|
|
184
|
+
No backers yet. Be the first!
|
|
185
|
+
<!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
|
|
186
|
+
|
|
187
|
+
### Open Collective for Organizations
|
|
188
|
+
|
|
189
|
+
Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/galtzo-floss#sponsor)]
|
|
190
|
+
|
|
191
|
+
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
192
|
+
|
|
193
|
+
<!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
|
|
194
|
+
No sponsors yet. Be the first!
|
|
195
|
+
<!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
|
|
196
|
+
|
|
197
|
+
[kettle-readme-backers]: https://github.com/galtzo-floss/sanitize_email/blob/main/bin/kettle-readme-backers
|
|
168
198
|
|
|
169
199
|
### Another way to support open-source
|
|
170
200
|
|
|
@@ -176,7 +206,7 @@ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed
|
|
|
176
206
|
|
|
177
207
|
**[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
|
|
178
208
|
|
|
179
|
-
[![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate
|
|
209
|
+
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
180
210
|
|
|
181
211
|
## 🔐 Security
|
|
182
212
|
|
|
@@ -222,7 +252,7 @@ Made with [contributors-img][🖐contrib-rocks].
|
|
|
222
252
|
|
|
223
253
|
Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/sanitize_email/-/graphs/main][🚎contributors-gl]
|
|
224
254
|
|
|
225
|
-
<details>
|
|
255
|
+
<details markdown="1">
|
|
226
256
|
<summary>⭐️ Star History</summary>
|
|
227
257
|
|
|
228
258
|
<a href="https://star-history.com/galtzo-floss/sanitize_email&Date">
|
|
@@ -304,24 +334,33 @@ To join the community or get help 👇️ Join the Discord.
|
|
|
304
334
|
|
|
305
335
|
To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
306
336
|
|
|
307
|
-
[![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
337
|
+
[![Sponsor galtzo-floss/sanitize_email on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
308
338
|
|
|
309
339
|
### Please give the project a star ⭐ ♥.
|
|
310
340
|
|
|
341
|
+
Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
|
|
342
|
+
|
|
311
343
|
Thanks for RTFM. ☺️
|
|
312
344
|
|
|
313
345
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
314
346
|
[⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
|
|
315
347
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
|
348
|
+
[🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
|
|
349
|
+
[🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
|
|
350
|
+
[🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
|
|
351
|
+
[🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
|
|
352
|
+
[🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
|
|
353
|
+
[🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
|
|
354
|
+
[🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
|
|
355
|
+
[🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
|
|
356
|
+
[🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
|
|
357
|
+
[🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
|
|
358
|
+
[🖇osc]: https://opencollective.com/galtzo-floss
|
|
316
359
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
|
317
360
|
[🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
|
|
318
361
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
|
319
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
320
|
-
[🖇polar]: https://polar.sh/pboling
|
|
321
362
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
322
363
|
[🖇kofi]: https://ko-fi.com/pboling
|
|
323
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
324
|
-
[🖇patreon]: https://patreon.com/galtzo
|
|
325
364
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
326
365
|
[🖇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
|
|
327
366
|
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
|
@@ -336,7 +375,7 @@ Thanks for RTFM. ☺️
|
|
|
336
375
|
[✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
|
|
337
376
|
|
|
338
377
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
|
339
|
-
[⛳️gem-namespace]: https://github.com/galtzo-floss/sanitize_email
|
|
378
|
+
[⛳️gem-namespace]: https://github.com/galtzo-floss/sanitize_email
|
|
340
379
|
[⛳️namespace-img]: https://img.shields.io/badge/namespace-SanitizeEmail-3C2D2D.svg?style=square&logo=ruby&logoColor=white
|
|
341
380
|
[⛳️gem-name]: https://bestgems.org/gems/sanitize_email
|
|
342
381
|
[⛳️name-img]: https://img.shields.io/badge/name-sanitize__email-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
|
|
@@ -376,11 +415,11 @@ Thanks for RTFM. ☺️
|
|
|
376
415
|
[💁🏼♂️peterboling]: http://www.peterboling.com
|
|
377
416
|
[🚂railsbling]: http://www.railsbling.com
|
|
378
417
|
[📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
|
|
379
|
-
[📜src-gl]: https://gitlab.com/galtzo-floss/sanitize_email
|
|
418
|
+
[📜src-gl]: https://gitlab.com/galtzo-floss/sanitize_email
|
|
380
419
|
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
|
381
|
-
[📜src-cb]: https://codeberg.org/galtzo-floss/sanitize_email
|
|
420
|
+
[📜src-cb]: https://codeberg.org/galtzo-floss/sanitize_email
|
|
382
421
|
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
|
|
383
|
-
[📜src-gh]: https://github.com/galtzo-floss/sanitize_email
|
|
422
|
+
[📜src-gh]: https://github.com/galtzo-floss/sanitize_email
|
|
384
423
|
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
385
424
|
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
386
425
|
[📜gl-wiki]: https://gitlab.com/galtzo-floss/sanitize_email/-/wikis/home
|
|
@@ -411,11 +450,13 @@ Thanks for RTFM. ☺️
|
|
|
411
450
|
[🚎jruby-9.2-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-9.2.yml
|
|
412
451
|
[🚎jruby-9.3-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-9.3.yml
|
|
413
452
|
[🚎jruby-9.4-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-9.4.yml
|
|
453
|
+
[🚎jruby-10.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-10.0.yml
|
|
414
454
|
[🚎truby-22.3-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-22.3.yml
|
|
415
455
|
[🚎truby-23.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-23.0.yml
|
|
416
456
|
[🚎truby-23.1-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-23.1.yml
|
|
417
457
|
[🚎truby-24.2-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-24.2.yml
|
|
418
458
|
[🚎truby-25.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-25.0.yml
|
|
459
|
+
[🚎truby-33.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-33.0.yml
|
|
419
460
|
[🚎2-cov-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/coverage.yml
|
|
420
461
|
[🚎2-cov-wfi]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/coverage.yml/badge.svg
|
|
421
462
|
[🚎3-hd-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/heads.yml
|
|
@@ -436,6 +477,7 @@ Thanks for RTFM. ☺️
|
|
|
436
477
|
[🚎14-🔓️-wfi]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/unlocked_deps.yml/badge.svg
|
|
437
478
|
[🚎15-🪪-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/license-eye.yml
|
|
438
479
|
[🚎15-🪪-wfi]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/license-eye.yml/badge.svg
|
|
480
|
+
[💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
439
481
|
[💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
440
482
|
[💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
441
483
|
[💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
@@ -445,7 +487,6 @@ Thanks for RTFM. ☺️
|
|
|
445
487
|
[💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
446
488
|
[💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
447
489
|
[💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
448
|
-
[💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
449
490
|
[💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
|
|
450
491
|
[💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
|
|
451
492
|
[💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
@@ -453,10 +494,13 @@ Thanks for RTFM. ☺️
|
|
|
453
494
|
[💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
454
495
|
[💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
455
496
|
[💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
497
|
+
[💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
456
498
|
[💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
|
|
499
|
+
[💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
|
|
457
500
|
[💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
458
501
|
[💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
459
502
|
[💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
503
|
+
[💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
460
504
|
[💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
|
|
461
505
|
[💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
|
|
462
506
|
[🤝gh-issues]: https://github.com/galtzo-floss/sanitize_email/issues
|
|
@@ -485,7 +529,7 @@ Thanks for RTFM. ☺️
|
|
|
485
529
|
[📌gitmoji]: https://gitmoji.dev
|
|
486
530
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
487
531
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
488
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
532
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.385-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
489
533
|
[🔐security]: https://github.com/galtzo-floss/sanitize_email/blob/main/SECURITY.md
|
|
490
534
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
491
535
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -493,7 +537,7 @@ Thanks for RTFM. ☺️
|
|
|
493
537
|
[📄license-ref]: MIT.md
|
|
494
538
|
[📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
|
|
495
539
|
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
|
|
496
|
-
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A
|
|
540
|
+
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
|
|
497
541
|
|
|
498
542
|
[📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
|
|
499
543
|
[📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
|
|
@@ -513,7 +557,7 @@ Thanks for RTFM. ☺️
|
|
|
513
557
|
| Package | sanitize_email |
|
|
514
558
|
| Description | Email Condom for your Ruby Server.<br>In Rails, Sinatra, et al, or simply the mail gem: Aids in development, testing, qa, and production troubleshooting of email issues without worrying that emails will get sent to actual live addresses. |
|
|
515
559
|
| Homepage | https://github.com/galtzo-floss/sanitize_email |
|
|
516
|
-
| Source | https://github.com/galtzo-floss/sanitize_email
|
|
560
|
+
| Source | https://github.com/galtzo-floss/sanitize_email |
|
|
517
561
|
| License | `MIT` |
|
|
518
|
-
| Funding | https://github.com/sponsors/pboling, https://
|
|
562
|
+
| Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/galtzo-floss, https://thanks.dev/gh/pboling, https://tidelift.com/funding/github/rubygems/sanitize_email, https://www.buymeacoffee.com/pboling |
|
|
519
563
|
<!-- kettle-jem:metadata:end -->
|
data/SECURITY.md
CHANGED
|
@@ -55,7 +55,7 @@ module SanitizeEmail
|
|
|
55
55
|
# while nil ignores this setting and checks activation_proc
|
|
56
56
|
engage: nil,
|
|
57
57
|
|
|
58
|
-
activation_proc: proc { false }
|
|
58
|
+
activation_proc: proc { false }
|
|
59
59
|
}.freeze
|
|
60
60
|
|
|
61
61
|
INIT_KEYS = [:sanitized_to, :sanitized_cc, :sanitized_bcc, :good_list, :bad_list].freeze
|
|
@@ -100,7 +100,7 @@ module SanitizeEmail
|
|
|
100
100
|
return if force_sanitize.nil?
|
|
101
101
|
|
|
102
102
|
deprecation_warning_message(
|
|
103
|
-
<<-DEPRECATION
|
|
103
|
+
<<-DEPRECATION
|
|
104
104
|
SanitizeEmail::Config.config[:force_sanitize] is deprecated.
|
|
105
105
|
Please use SanitizeEmail.force_sanitize or SanitizeEmail.sanitary instead.
|
|
106
106
|
Refer to https://github.com/galtzo-floss/sanitize_email/wiki for examples.
|
|
@@ -50,7 +50,7 @@ module SanitizeEmail
|
|
|
50
50
|
{
|
|
51
51
|
# can be an arrays, so casting it as arrays
|
|
52
52
|
"X-Sanitize-Email-To" => to_decoded,
|
|
53
|
-
"X-Sanitize-Email-Cc" => cc_decoded
|
|
53
|
+
"X-Sanitize-Email-Cc" => cc_decoded
|
|
54
54
|
# Don't write out the BCC, as those addresses should not be visible
|
|
55
55
|
# in message headers for obvious reasons
|
|
56
56
|
}.each do |header_key, header_value|
|
|
@@ -58,7 +58,7 @@ module SanitizeEmail
|
|
|
58
58
|
SanitizeEmail::MailHeaderTools.update_header(
|
|
59
59
|
header_key,
|
|
60
60
|
header_value,
|
|
61
|
-
message
|
|
61
|
+
message
|
|
62
62
|
)
|
|
63
63
|
end
|
|
64
64
|
end
|
|
@@ -99,7 +99,7 @@ module SanitizeEmail
|
|
|
99
99
|
end,
|
|
100
100
|
bcc: actual_personalization[:bcc]&.map do |bcc|
|
|
101
101
|
bcc.merge(email: override_email(:bcc, bcc[:email]).join(","))
|
|
102
|
-
end
|
|
102
|
+
end
|
|
103
103
|
)
|
|
104
104
|
end
|
|
105
105
|
end
|
|
@@ -133,20 +133,19 @@ module SanitizeEmail
|
|
|
133
133
|
# then just return the default sanitized recipients
|
|
134
134
|
return sanitized_addresses unless SanitizeEmail.use_actual_email_as_sanitized_user_name
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
inject_user_names(real_addresses, sanitized_addresses)
|
|
137
137
|
# puts "real_addresses 2: #{real_addresses}"
|
|
138
138
|
# puts "override_email 6: #{type} - #{with_user_names}"
|
|
139
139
|
# Otherwise inject the email as the "user name"
|
|
140
|
-
with_user_names
|
|
141
140
|
end
|
|
142
141
|
|
|
143
142
|
def address_list_filter(list_type, address)
|
|
144
143
|
# TODO: How does this handle email addresses with user names like "Foo Example <foo@example.org>"
|
|
145
144
|
has_address = send(list_type).include?(address)
|
|
146
145
|
case list_type
|
|
147
|
-
when :good_list
|
|
146
|
+
when :good_list
|
|
148
147
|
has_address ? address : nil
|
|
149
|
-
when :bad_list
|
|
148
|
+
when :bad_list
|
|
150
149
|
has_address ? nil : address
|
|
151
150
|
else
|
|
152
151
|
raise ArgumentError, "address_list_filter got unknown list_type: #{list_type}"
|
|
@@ -175,11 +174,11 @@ module SanitizeEmail
|
|
|
175
174
|
|
|
176
175
|
def sanitize_addresses(type)
|
|
177
176
|
case type
|
|
178
|
-
when :to
|
|
177
|
+
when :to
|
|
179
178
|
Array(sanitized_to)
|
|
180
|
-
when :cc
|
|
179
|
+
when :cc
|
|
181
180
|
Array(sanitized_cc)
|
|
182
|
-
when :bcc
|
|
181
|
+
when :bcc
|
|
183
182
|
Array(sanitized_bcc)
|
|
184
183
|
else
|
|
185
184
|
raise UnknownOverride, "unknown email override"
|
data/lib/sanitize_email.rb
CHANGED
|
@@ -24,7 +24,7 @@ module SanitizeEmail
|
|
|
24
24
|
# This gem must be loaded **after** Rails in order for the Engine/Railtie to register itself automatically.
|
|
25
25
|
# Otherwise, you'd have to manually require what you need from below.
|
|
26
26
|
# Allow non-rails implementations to use this gem
|
|
27
|
-
# :
|
|
27
|
+
# simplecov:disable
|
|
28
28
|
if defined?(::Rails::VERSION)
|
|
29
29
|
if defined?(::Rails::Engine)
|
|
30
30
|
if ::Rails::VERSION::MAJOR >= 6
|
|
@@ -53,7 +53,7 @@ module SanitizeEmail
|
|
|
53
53
|
warn "SanitizeEmail was unable to detect a compatible Mail class to register an interceptor on."
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
|
-
# :
|
|
56
|
+
# simplecov:enable
|
|
57
57
|
|
|
58
58
|
class << self
|
|
59
59
|
extend SanitizeEmail::Deprecation
|
|
@@ -80,7 +80,7 @@ module SanitizeEmail
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def respond_to_missing?(method_name, include_private = false)
|
|
83
|
-
method_name
|
|
83
|
+
method_name || super
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
# NOTE: Deprecated method
|
|
@@ -117,11 +117,20 @@ module SanitizeEmail
|
|
|
117
117
|
#
|
|
118
118
|
def sanitary(config_options = {})
|
|
119
119
|
raise MissingBlockParameter, "SanitizeEmail.sanitary must be called with a block" unless block_given?
|
|
120
|
-
|
|
120
|
+
forcing =
|
|
121
|
+
if config_options.key?(:activation_proc) || config_options.key?(:engage)
|
|
122
|
+
nil
|
|
123
|
+
else
|
|
124
|
+
true
|
|
125
|
+
end
|
|
126
|
+
janitor(forcing: forcing) do
|
|
121
127
|
original = SanitizeEmail::Config.config.dup
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
begin
|
|
129
|
+
SanitizeEmail::Config.config.merge!(config_options)
|
|
130
|
+
yield
|
|
131
|
+
ensure
|
|
132
|
+
SanitizeEmail::Config.config = original
|
|
133
|
+
end
|
|
125
134
|
end
|
|
126
135
|
end
|
|
127
136
|
|
|
@@ -149,6 +158,7 @@ module SanitizeEmail
|
|
|
149
158
|
original = SanitizeEmail.force_sanitize
|
|
150
159
|
SanitizeEmail.force_sanitize = options[:forcing]
|
|
151
160
|
yield
|
|
161
|
+
ensure
|
|
152
162
|
SanitizeEmail.force_sanitize = original
|
|
153
163
|
end
|
|
154
164
|
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sanitize_email
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.13
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Boling
|
|
8
8
|
- John Trupiano
|
|
9
|
-
-
|
|
9
|
+
- pboling
|
|
10
|
+
- Peter H. Boling
|
|
11
|
+
- David Morton
|
|
12
|
+
- Harry Lascelles
|
|
13
|
+
- Adrien Siami
|
|
14
|
+
- Chris Altman
|
|
15
|
+
- Scott Rocher
|
|
16
|
+
- Marcus Ilgner
|
|
17
|
+
- Bernardo Galindo
|
|
18
|
+
- joeyparis
|
|
10
19
|
bindir: exe
|
|
11
20
|
cert_chain:
|
|
12
21
|
- |
|
|
@@ -62,7 +71,7 @@ dependencies:
|
|
|
62
71
|
version: '1.1'
|
|
63
72
|
- - ">="
|
|
64
73
|
- !ruby/object:Gem::Version
|
|
65
|
-
version: 1.1.
|
|
74
|
+
version: 1.1.13
|
|
66
75
|
type: :runtime
|
|
67
76
|
prerelease: false
|
|
68
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -72,27 +81,27 @@ dependencies:
|
|
|
72
81
|
version: '1.1'
|
|
73
82
|
- - ">="
|
|
74
83
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.1.
|
|
84
|
+
version: 1.1.13
|
|
76
85
|
- !ruby/object:Gem::Dependency
|
|
77
86
|
name: kettle-dev
|
|
78
87
|
requirement: !ruby/object:Gem::Requirement
|
|
79
88
|
requirements:
|
|
80
89
|
- - "~>"
|
|
81
90
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '2.
|
|
91
|
+
version: '2.3'
|
|
83
92
|
- - ">="
|
|
84
93
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: 2.0
|
|
94
|
+
version: 2.3.0
|
|
86
95
|
type: :development
|
|
87
96
|
prerelease: false
|
|
88
97
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
98
|
requirements:
|
|
90
99
|
- - "~>"
|
|
91
100
|
- !ruby/object:Gem::Version
|
|
92
|
-
version: '2.
|
|
101
|
+
version: '2.3'
|
|
93
102
|
- - ">="
|
|
94
103
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 2.0
|
|
104
|
+
version: 2.3.0
|
|
96
105
|
- !ruby/object:Gem::Dependency
|
|
97
106
|
name: bundler-audit
|
|
98
107
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -147,20 +156,20 @@ dependencies:
|
|
|
147
156
|
requirements:
|
|
148
157
|
- - "~>"
|
|
149
158
|
- !ruby/object:Gem::Version
|
|
150
|
-
version: '3.
|
|
159
|
+
version: '3.1'
|
|
151
160
|
- - ">="
|
|
152
161
|
- !ruby/object:Gem::Version
|
|
153
|
-
version: 3.
|
|
162
|
+
version: 3.1.4
|
|
154
163
|
type: :development
|
|
155
164
|
prerelease: false
|
|
156
165
|
version_requirements: !ruby/object:Gem::Requirement
|
|
157
166
|
requirements:
|
|
158
167
|
- - "~>"
|
|
159
168
|
- !ruby/object:Gem::Version
|
|
160
|
-
version: '3.
|
|
169
|
+
version: '3.1'
|
|
161
170
|
- - ">="
|
|
162
171
|
- !ruby/object:Gem::Version
|
|
163
|
-
version: 3.
|
|
172
|
+
version: 3.1.4
|
|
164
173
|
- !ruby/object:Gem::Dependency
|
|
165
174
|
name: kettle-test
|
|
166
175
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -170,7 +179,7 @@ dependencies:
|
|
|
170
179
|
version: '2.0'
|
|
171
180
|
- - ">="
|
|
172
181
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: 2.0.
|
|
182
|
+
version: 2.0.9
|
|
174
183
|
type: :development
|
|
175
184
|
prerelease: false
|
|
176
185
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -180,7 +189,27 @@ dependencies:
|
|
|
180
189
|
version: '2.0'
|
|
181
190
|
- - ">="
|
|
182
191
|
- !ruby/object:Gem::Version
|
|
183
|
-
version: 2.0.
|
|
192
|
+
version: 2.0.9
|
|
193
|
+
- !ruby/object:Gem::Dependency
|
|
194
|
+
name: turbo_tests2
|
|
195
|
+
requirement: !ruby/object:Gem::Requirement
|
|
196
|
+
requirements:
|
|
197
|
+
- - "~>"
|
|
198
|
+
- !ruby/object:Gem::Version
|
|
199
|
+
version: '3.1'
|
|
200
|
+
- - ">="
|
|
201
|
+
- !ruby/object:Gem::Version
|
|
202
|
+
version: 3.1.6
|
|
203
|
+
type: :development
|
|
204
|
+
prerelease: false
|
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
206
|
+
requirements:
|
|
207
|
+
- - "~>"
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: '3.1'
|
|
210
|
+
- - ">="
|
|
211
|
+
- !ruby/object:Gem::Version
|
|
212
|
+
version: 3.1.6
|
|
184
213
|
- !ruby/object:Gem::Dependency
|
|
185
214
|
name: ruby-progressbar
|
|
186
215
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -204,7 +233,7 @@ dependencies:
|
|
|
204
233
|
version: '1.0'
|
|
205
234
|
- - ">="
|
|
206
235
|
- !ruby/object:Gem::Version
|
|
207
|
-
version: 1.0.
|
|
236
|
+
version: 1.0.4
|
|
208
237
|
type: :development
|
|
209
238
|
prerelease: false
|
|
210
239
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -214,7 +243,7 @@ dependencies:
|
|
|
214
243
|
version: '1.0'
|
|
215
244
|
- - ">="
|
|
216
245
|
- !ruby/object:Gem::Version
|
|
217
|
-
version: 1.0.
|
|
246
|
+
version: 1.0.4
|
|
218
247
|
- !ruby/object:Gem::Dependency
|
|
219
248
|
name: gitmoji-regex
|
|
220
249
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -224,7 +253,7 @@ dependencies:
|
|
|
224
253
|
version: '2.0'
|
|
225
254
|
- - ">="
|
|
226
255
|
- !ruby/object:Gem::Version
|
|
227
|
-
version: 2.0.
|
|
256
|
+
version: 2.0.4
|
|
228
257
|
type: :development
|
|
229
258
|
prerelease: false
|
|
230
259
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -234,7 +263,7 @@ dependencies:
|
|
|
234
263
|
version: '2.0'
|
|
235
264
|
- - ">="
|
|
236
265
|
- !ruby/object:Gem::Version
|
|
237
|
-
version: 2.0.
|
|
266
|
+
version: 2.0.4
|
|
238
267
|
- !ruby/object:Gem::Dependency
|
|
239
268
|
name: appraisal
|
|
240
269
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -249,6 +278,20 @@ dependencies:
|
|
|
249
278
|
- - "~>"
|
|
250
279
|
- !ruby/object:Gem::Version
|
|
251
280
|
version: '2.5'
|
|
281
|
+
- !ruby/object:Gem::Dependency
|
|
282
|
+
name: psych
|
|
283
|
+
requirement: !ruby/object:Gem::Requirement
|
|
284
|
+
requirements:
|
|
285
|
+
- - "<"
|
|
286
|
+
- !ruby/object:Gem::Version
|
|
287
|
+
version: '5.3'
|
|
288
|
+
type: :development
|
|
289
|
+
prerelease: false
|
|
290
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
291
|
+
requirements:
|
|
292
|
+
- - "<"
|
|
293
|
+
- !ruby/object:Gem::Version
|
|
294
|
+
version: '5.3'
|
|
252
295
|
- !ruby/object:Gem::Dependency
|
|
253
296
|
name: rdoc
|
|
254
297
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -321,7 +364,7 @@ description: |2
|
|
|
321
364
|
Email Condom for your Ruby Server.
|
|
322
365
|
In Rails, Sinatra, et al, or simply the mail gem: Aids in development, testing, qa, and production troubleshooting of email issues without worrying that emails will get sent to actual live addresses.
|
|
323
366
|
email:
|
|
324
|
-
-
|
|
367
|
+
- floss@galtzo.com
|
|
325
368
|
executables: []
|
|
326
369
|
extensions: []
|
|
327
370
|
extra_rdoc_files:
|
|
@@ -341,6 +384,7 @@ files:
|
|
|
341
384
|
- CONTRIBUTING.md
|
|
342
385
|
- FUNDING.md
|
|
343
386
|
- LICENSE.md
|
|
387
|
+
- MIT.md
|
|
344
388
|
- README.md
|
|
345
389
|
- RUBOCOP.md
|
|
346
390
|
- SECURITY.md
|
|
@@ -364,10 +408,10 @@ licenses:
|
|
|
364
408
|
- MIT
|
|
365
409
|
metadata:
|
|
366
410
|
homepage_uri: https://sanitize-email.galtzo.com
|
|
367
|
-
source_code_uri: https://github.com/galtzo-floss/sanitize_email/tree/v2.0.
|
|
368
|
-
changelog_uri: https://github.com/galtzo-floss/sanitize_email/blob/v2.0.
|
|
411
|
+
source_code_uri: https://github.com/galtzo-floss/sanitize_email/tree/v2.0.13
|
|
412
|
+
changelog_uri: https://github.com/galtzo-floss/sanitize_email/blob/v2.0.13/CHANGELOG.md
|
|
369
413
|
bug_tracker_uri: https://github.com/galtzo-floss/sanitize_email/issues
|
|
370
|
-
documentation_uri: https://www.rubydoc.info/gems/sanitize_email/2.0.
|
|
414
|
+
documentation_uri: https://www.rubydoc.info/gems/sanitize_email/2.0.13
|
|
371
415
|
funding_uri: https://github.com/sponsors/pboling
|
|
372
416
|
wiki_uri: https://github.com/galtzo-floss/sanitize_email/wiki
|
|
373
417
|
news_uri: https://www.railsbling.com/tags/sanitize_email
|
metadata.gz.sig
CHANGED
|
Binary file
|