sanitize_email 2.0.12 → 2.0.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9307cb56be3bde5294d38c2c1fb823458f458ea1db6e0868c55638b4b3126089
4
- data.tar.gz: 9d9d4aa8f7e9d95c0b972cae2fa82037af0ee1f0cf55b9240f65028069b2fa99
3
+ metadata.gz: a7c1513706ef8c25c5376a39267da18091ce45963253472d8cc406caf6cd71ca
4
+ data.tar.gz: 7457f74e949bf2edf5820a7dbbe80fac5641ede488c883423c4ccb4503046e14
5
5
  SHA512:
6
- metadata.gz: 0521e2513ab55d62be47c2957f88509a5ca299bdf11875f7d75b1cddfe52ccbef04e96becafa684c4bf41ad8ee94155eb99217a72178dbc1f9d6613295a6ce39
7
- data.tar.gz: b68b04b772ff25d83d095365ad357a809aa530832626a19d0296c38517834c7f3e4748c379ecd400683ad64b8fce6b42a3d6aff26674ebcbcd25283723dfe884
6
+ metadata.gz: 2259f6c3680f9a0ec80a1ec45e687901415050c4e5757b930d7c00772ec44532ee81e56ccf84a68ffbd2665a28892afed3de5a887b6f40c9efcda69b27577ba0
7
+ data.tar.gz: b0f2df9d12456f3c736445fe10ac28783e1871128d378848c54d7d33201346a3379f222c34e0c5ba3e30b766b9c45c854835a2522d1affde20ba0f23a67e537f
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,131 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [2.0.14] - 2026-07-31
34
+
35
+ - TAG: [v2.0.14][2.0.14t]
36
+ - COVERAGE: 95.58% -- 368/385 lines in 13 files
37
+ - BRANCH COVERAGE: 82.91% -- 97/117 branches in 13 files
38
+ - 53.41% documented
39
+
40
+ ### Changed
41
+
42
+ - kettle-jem-template-20260716-001 - Shim gemspec manifests now include
43
+ `LICENSE.md` instead of nonexistent `LICENSE.txt`.
44
+ - kettle-jem-template-20260716-002 - Generated gemspec manifests now ship fewer
45
+ repository-only files by default to reduce downstream distro packaging churn.
46
+ - kettle-jem-template-20260720-001 - Generated READMEs can now render
47
+ template-managed corporate sponsor logos from project or family config.
48
+ - kettle-jem-template-20260720-002 - Generated development Gemfiles now use the
49
+ released `tree_sitter_language_pack` gem 1.13.3 or newer by default.
50
+ - kettle-jem-template-20260720-003 - Generated StructuredMerge Git diff driver
51
+ config now uses the installed `smorg-rb` Ruby driver name.
52
+ - kettle-jem-template-20260720-004 - Generated multi-engine workflow files now
53
+ omit JRuby and TruffleRuby jobs when project config declares MRI-only engines.
54
+ - kettle-jem-template-20260720-005 - Generated README Support & Community rows
55
+ now include a RubyForum help badge.
56
+ - kettle-jem-template-20260725-001 - Generated JRuby and TruffleRuby workflow
57
+ files now run when pull request head branches start with `feature/release`,
58
+ so release CI monitoring does not report intentionally skipped engine
59
+ workflows as failures.
60
+
61
+ - kettle-jem-template-20260725-002 - Generated gemspec templates now include
62
+ `anonymous_loader` as a development dependency, and version specs use it to
63
+ execute generated `version.rb` files for coverage without redefining package
64
+ constants. Managed version specs are removed when `version_gem` is disabled
65
+ or incompatible with the project's runtime Ruby floor.
66
+
67
+ - kettle-jem-template-20260728-001 - Generated Ruby workflows now use clearer
68
+ setup-ruby-flash planning and can prepare appraisal-only jobs without
69
+ installing the main Gemfile bundle.
70
+
71
+ ### Fixed
72
+
73
+ - Root development bundle now includes the Rails test harness fragment, so
74
+ `bundle exec kettle-test` can load the suite outside appraisal-specific
75
+ Gemfiles.
76
+ - Added coverage for legacy test helper, matcher, and Rails integration shim
77
+ surfaces so release coverage thresholds pass.
78
+
79
+ - Root release bundles now include the default Rails test support, and
80
+ Rails-dependent specs load `rails_helper` explicitly for parallel workers.
81
+
82
+ - kettle-jem-template-20260726-002 - Generated version files now document their
83
+ version namespace and constants, reducing warning-only YARD lint output.
84
+
85
+ - kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls,
86
+ QLTY, and Codecov as optional, so provider outages do not fail CI when local
87
+ coverage thresholds still pass.
88
+ - kettle-jem-template-20260728-002 - Generated RuboCop configs now ignore the
89
+ same `gemfiles/vendor/bundle` tree as `.gitignore`, so vendored dependency
90
+ installs are not reported as project lint debt.
91
+ - kettle-jem-template-20260728-003 - Generated dep-heads workflows now run
92
+ TruffleRuby jobs with current RubyGems and Bundler, avoiding setup failures
93
+ before the test suite starts.
94
+
95
+ - kettle-jem-template-20260728-004 - Generated dep-heads workflows now use the
96
+ setup-ruby Bundler install path for direct appraisal Gemfiles, avoiding rv
97
+ lockfile parser failures on Git and path dependencies.
98
+
99
+ - kettle-jem-template-20260728-005 - VersionGem bootstrap now creates the
100
+ missing canonical version spec when a project only has shim namespace version
101
+ specs.
102
+
103
+ - kettle-jem-template-20260729-001 - Generated JRuby 9.4 workflows now use the
104
+ legacy manual bundle install path, avoiding setup-time Bundler full-index
105
+ failures against `gem.coop`.
106
+
107
+ - kettle-jem-template-20260729-002 - VersionGem bootstrap now preserves
108
+ and templates dedicated `version_gem.rb` entrypoints even when the gemspec
109
+ dependency is intentionally omitted, and generated anonymous-loader specs
110
+ cover both `version.rb` and `version_gem.rb`.
111
+
112
+ - kettle-jem-template-20260729-003 - Old-Ruby gems below the VersionGem runtime
113
+ floor now get managed minimal `version.rb` files and anonymous-loader version
114
+ specs without adding `version_gem`.
115
+ - kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs
116
+ relative to the gemspec directory, so packaged template assets are included
117
+ even when the gemspec is loaded from another working directory.
118
+
119
+ - Legacy test helpers now reject unsupported match values consistently on Ruby
120
+ 2.5, where plain objects still respond to `=~`.
121
+
122
+ ### Added
123
+
124
+ - Documentation linting now has its generated `yard-lint` dependency and severity config available in the local bundle.
125
+
126
+ - kettle-jem-template-20260726-001 - Projects now include YARD lint
127
+ configuration and documentation dependencies so documentation issues fail
128
+ before generated docs are refreshed.
129
+
130
+ - kettle-jem-template-20260727-001 - Spec harness documentation now lists the
131
+ RSpec helpers provided by `kettle-test`.
132
+
133
+ - kettle-jem-template-20260729-005 - Gemspec metadata now publishes this
134
+ project's RubyForum tag as `mailing_list_uri`, and support docs link to the
135
+ tagged RubyForum community alongside Discord.
136
+
137
+ ## [2.0.13] - 2026-07-02
138
+
139
+ - TAG: [v2.0.13][2.0.13t]
140
+ - COVERAGE: 83.12% -- 320/385 lines in 13 files
141
+ - BRANCH COVERAGE: 76.07% -- 89/117 branches in 13 files
142
+ - 51.14% documented
143
+
144
+ ### Added
145
+
146
+ - Added support for JRuby 10.1 and TruffleRuby 34.0.
147
+
148
+ ### Changed
149
+
150
+ - Retemplated project metadata and CI/development automation with `kettle-jem` v7.0.0.
151
+
152
+ ### Fixed
153
+
154
+ - Root development bundle now includes the default Rails 7.2 test stack so
155
+ `bundle exec kettle-test` can load `rails_helper` and Combustion.
156
+ - Package configured license files in gem release file lists.
157
+
33
158
  ## [2.0.12] - 2026-06-14
34
159
 
35
160
  - TAG: [v2.0.12][2.0.12t]
@@ -461,7 +586,11 @@ Old version?
461
586
  * Fixed require paths
462
587
  * added about.yml and this CHANGELOG
463
588
 
464
- [Unreleased]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.12...HEAD
589
+ [Unreleased]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.14...HEAD
590
+ [2.0.14]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.13...v2.0.14
591
+ [2.0.14t]: https://github.com/galtzo-floss/sanitize_email/releases/tag/v2.0.14
592
+ [2.0.13]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.12...v2.0.13
593
+ [2.0.13t]: https://github.com/galtzo-floss/sanitize_email/releases/tag/v2.0.13
465
594
  [2.0.12]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.11...v2.0.12
466
595
  [2.0.12t]: https://github.com/galtzo-floss/sanitize_email/releases/tag/v2.0.12
467
596
  [2.0.11]: https://github.com/galtzo-floss/sanitize_email/compare/v2.0.10...v2.0.11
data/LICENSE.md CHANGED
@@ -3,7 +3,7 @@
3
3
  This project is made available under the following license.
4
4
  Choose the option that best fits your use case:
5
5
 
6
- - [MIT](MIT.md)
6
+ - [MIT](https://github.com/galtzo-floss/sanitize_email/blob/main/MIT.md)
7
7
 
8
8
  ## Copyright Notice
9
9
 
data/README.md CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  # 📧 SanitizeEmail
4
4
 
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]
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![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]
6
6
 
7
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
8
 
9
9
  ---
10
10
 
11
11
  `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
12
 
13
- [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
13
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
14
14
 
15
- <details>
15
+ <details markdown="1">
16
16
  <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
17
 
18
18
  I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
@@ -36,13 +36,13 @@ It's particularly helpful when you want to prevent the delivery of email (e.g. i
36
36
 
37
37
  | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
38
38
  |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
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 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 current Compat][💎truby-c-i]][🚎9-t-wf]|
41
- | Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
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]|
42
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]|
43
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]|
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] |
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] |
44
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
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] |
46
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] |
47
47
  | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
48
48
  | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
@@ -57,26 +57,39 @@ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
57
57
  may be higher than the gem's runtime compatibility floor when legacy Rubies are
58
58
  not practical for the current toolchain.
59
59
 
60
- | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
61
- |------------------------------------------------|--------------------------------------------------------|
62
- | 👟 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>
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 | [![Daily download rank for appraisal2](https://img.shields.io/gem/rd/appraisal2.svg?style=flat-square)](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 | [![Daily download rank for appraisal2-rubocop](https://img.shields.io/gem/rd/appraisal2-rubocop.svg?style=flat-square)](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 | [![Daily download rank for kettle-dev](https://img.shields.io/gem/rd/kettle-dev.svg?style=flat-square)](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 | [![Daily download rank for kettle-jem](https://img.shields.io/gem/rd/kettle-jem.svg?style=flat-square)](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 | [![Daily download rank for kettle-soup-cover](https://img.shields.io/gem/rd/kettle-soup-cover.svg?style=flat-square)](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 | [![Daily download rank for kettle-test](https://img.shields.io/gem/rd/kettle-test.svg?style=flat-square)](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 | [![Daily download rank for rubocop-lts](https://img.shields.io/gem/rd/rubocop-lts.svg?style=flat-square)](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 | [![Daily download rank for turbo_tests2](https://img.shields.io/gem/rd/turbo_tests2.svg?style=flat-square)](https://bestgems.org/gems/turbo_tests2) |
77
+
78
+ </details>
63
79
 
64
80
  ### Federated DVCS
65
81
 
66
82
  <details markdown="1">
67
83
  <summary>Find this repo on federated forges (Coming soon!)</summary>
68
84
 
69
- | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
70
- |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
71
- | 🧪 [galtzo-floss/sanitize_email on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
72
- | 🧊 [galtzo-floss/sanitize_email on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
73
- | 🐙 [galtzo-floss/sanitize_email on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
74
- | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
85
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
86
+ |-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
87
+ | 🧪 [galtzo-floss/sanitize_email on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
88
+ | 🧊 [galtzo-floss/sanitize_email on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
89
+ | 🐙 [galtzo-floss/sanitize_email on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
75
90
 
76
91
  </details>
77
92
 
78
- [gh-discussions]: https://github.com/galtzo-floss/sanitize_email/discussions
79
-
80
93
  ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/sanitize_email)](https://tidelift.com/subscription/pkg/rubygems-sanitize_email?utm_source=rubygems-sanitize_email&utm_medium=referral&utm_campaign=readme)
81
94
 
82
95
  Available as part of the Tidelift Subscription.
@@ -94,6 +107,7 @@ The maintainers of this and thousands of other packages are working with Tidelif
94
107
 
95
108
  Alternatively:
96
109
 
110
+ - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
97
111
  - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
98
112
  - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
99
113
  - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
@@ -178,7 +192,7 @@ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day
178
192
  No sponsors yet. Be the first!
179
193
  <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
180
194
 
181
- [kettle-readme-backers]: https://github.com/galtzo-floss/sanitize_email/blob/main/exe/kettle-readme-backers
195
+ [kettle-readme-backers]: https://github.com/galtzo-floss/sanitize_email/blob/main/bin/kettle-readme-backers
182
196
 
183
197
  ### Another way to support open-source
184
198
 
@@ -190,7 +204,7 @@ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed
190
204
 
191
205
  **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
192
206
 
193
- [![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 on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
207
+ [![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]
194
208
 
195
209
  ## 🔐 Security
196
210
 
@@ -236,7 +250,7 @@ Made with [contributors-img][🖐contrib-rocks].
236
250
 
237
251
  Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/sanitize_email/-/graphs/main][🚎contributors-gl]
238
252
 
239
- <details>
253
+ <details markdown="1">
240
254
  <summary>⭐️ Star History</summary>
241
255
 
242
256
  <a href="https://star-history.com/galtzo-floss/sanitize_email&Date">
@@ -278,7 +292,7 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
278
292
  ## 📄 License
279
293
 
280
294
  The gem is available as open source under the terms of
281
- the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
295
+ the [MIT](https://github.com/galtzo-floss/sanitize_email/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
282
296
 
283
297
  ### © Copyright
284
298
 
@@ -312,11 +326,12 @@ I'm hoping to be able to pay for my kids' health insurance this month,
312
326
  so if you value the work I am doing, I need your support.
313
327
  Please consider sponsoring me or the project.
314
328
 
315
- To join the community or get help 👇️ Join the Discord.
329
+ To join the community or get help, use the RubyForum or Discord.
316
330
 
331
+ [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
317
332
  [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
318
333
 
319
- To say "thanks!" ☝️ Join the Discord or 👇️ send money.
334
+ To say "thanks!" ☝️ Join the community or 👇️ send money.
320
335
 
321
336
  [![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]
322
337
 
@@ -343,12 +358,8 @@ Thanks for RTFM. ☺️
343
358
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
344
359
  [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
345
360
  [🖇sponsor]: https://github.com/sponsors/pboling
346
- [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
347
- [🖇polar]: https://polar.sh/pboling
348
361
  [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
349
362
  [🖇kofi]: https://ko-fi.com/pboling
350
- [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
351
- [🖇patreon]: https://patreon.com/galtzo
352
363
  [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
353
364
  [🖇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
354
365
  [🖇buyme]: https://www.buymeacoffee.com/pboling
@@ -361,6 +372,9 @@ Thanks for RTFM. ☺️
361
372
  [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
362
373
  [✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
363
374
  [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
375
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
376
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
377
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/sanitize-email
364
378
 
365
379
  [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
366
380
  [⛳️gem-namespace]: https://github.com/galtzo-floss/sanitize_email
@@ -406,7 +420,7 @@ Thanks for RTFM. ☺️
406
420
  [📜src-gl]: https://gitlab.com/galtzo-floss/sanitize_email
407
421
  [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
408
422
  [📜src-cb]: https://codeberg.org/galtzo-floss/sanitize_email
409
- [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
423
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
410
424
  [📜src-gh]: https://github.com/galtzo-floss/sanitize_email
411
425
  [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
412
426
  [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
@@ -438,11 +452,13 @@ Thanks for RTFM. ☺️
438
452
  [🚎jruby-9.2-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-9.2.yml
439
453
  [🚎jruby-9.3-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-9.3.yml
440
454
  [🚎jruby-9.4-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-9.4.yml
455
+ [🚎jruby-10.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/jruby-10.0.yml
441
456
  [🚎truby-22.3-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-22.3.yml
442
457
  [🚎truby-23.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-23.0.yml
443
458
  [🚎truby-23.1-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-23.1.yml
444
459
  [🚎truby-24.2-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-24.2.yml
445
460
  [🚎truby-25.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-25.0.yml
461
+ [🚎truby-33.0-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/truffleruby-33.0.yml
446
462
  [🚎2-cov-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/coverage.yml
447
463
  [🚎2-cov-wfi]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/coverage.yml/badge.svg
448
464
  [🚎3-hd-wf]: https://github.com/galtzo-floss/sanitize_email/actions/workflows/heads.yml
@@ -473,7 +489,6 @@ Thanks for RTFM. ☺️
473
489
  [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
474
490
  [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
475
491
  [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
476
- [💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
477
492
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
478
493
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
479
494
  [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
@@ -481,10 +496,13 @@ Thanks for RTFM. ☺️
481
496
  [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
482
497
  [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
483
498
  [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
499
+ [💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
484
500
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
501
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
485
502
  [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
486
503
  [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
487
504
  [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
505
+ [💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
488
506
  [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
489
507
  [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
490
508
  [🤝gh-issues]: https://github.com/galtzo-floss/sanitize_email/issues
@@ -513,12 +531,12 @@ Thanks for RTFM. ☺️
513
531
  [📌gitmoji]: https://gitmoji.dev
514
532
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
515
533
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
516
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.273-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
534
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.385-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
517
535
  [🔐security]: https://github.com/galtzo-floss/sanitize_email/blob/main/SECURITY.md
518
536
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
519
537
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
520
538
  [📄license]: LICENSE.md
521
- [📄license-ref]: MIT.md
539
+ [📄license-ref]: https://github.com/galtzo-floss/sanitize_email/blob/main/MIT.md
522
540
  [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
523
541
  [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
524
542
  [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
@@ -541,7 +559,7 @@ Thanks for RTFM. ☺️
541
559
  | Package | sanitize_email |
542
560
  | 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. |
543
561
  | Homepage | https://github.com/galtzo-floss/sanitize_email |
544
- | Source | https://github.com/galtzo-floss/sanitize_email/tree/v2.0.11 |
562
+ | Source | https://github.com/galtzo-floss/sanitize_email |
545
563
  | License | `MIT` |
546
- | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/galtzo-floss, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/gh/pboling, https://tidelift.com/funding/github/rubygems/sanitize_email, https://www.buymeacoffee.com/pboling |
564
+ | 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 |
547
565
  <!-- kettle-jem:metadata:end -->
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
4
- # Released under the MIT license
5
-
3
+ # Email header sanitization helpers.
6
4
  module SanitizeEmail
7
5
  # Determines whether to sanitize the headers of an email,
8
6
  # and does so when appropriate.
@@ -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.
@@ -22,8 +22,8 @@ module SanitizeEmail
22
22
  @deprecate_in_silence = false
23
23
 
24
24
  # Define a deprecated alias for a method
25
- # @param [Symbol] name - name of method to define
26
- # @param [Symbol] replacement - name of method to (alias)
25
+ # @param name [Symbol] name of method to define
26
+ # @param replacement [Symbol] name of method to (alias)
27
27
  def deprecated_alias(name, replacement)
28
28
  # Create a wrapped version
29
29
  define_method(name) do |*args, &block|
@@ -33,8 +33,8 @@ module SanitizeEmail
33
33
  end
34
34
 
35
35
  # Deprecate a defined method
36
- # @param [Symbol] name - name of deprecated method
37
- # @param [Symbol] replacement - name of the desired replacement
36
+ # @param name [Symbol] name of deprecated method
37
+ # @param replacement [Symbol] name of the desired replacement
38
38
  def deprecated(name, replacement = nil)
39
39
  # Replace old method
40
40
  old_name = :"#{name}_without_deprecation"
@@ -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
- with_user_names = inject_user_names(real_addresses, sanitized_addresses)
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 then
146
+ when :good_list
148
147
  has_address ? address : nil
149
- when :bad_list then
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 then
177
+ when :to
179
178
  Array(sanitized_to)
180
- when :cc then
179
+ when :cc
181
180
  Array(sanitized_cc)
182
- when :bcc then
181
+ when :bcc
183
182
  Array(sanitized_bcc)
184
183
  else
185
184
  raise UnknownOverride, "unknown email override"
@@ -17,7 +17,7 @@ module SanitizeEmail
17
17
 
18
18
  def string_matching(matcher, part, attribute)
19
19
  # Can we match a regex against it?
20
- raise UnexpectedMailType, "Cannot match #{matcher} for #{part}" unless attribute.respond_to?(:=~)
20
+ raise UnexpectedMailType, "Cannot match #{matcher} for #{part}" unless attribute.is_a?(String)
21
21
  attribute =~ if matcher.is_a?(Regexp)
22
22
  matcher
23
23
  else
@@ -1,8 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SanitizeEmail
4
+ # Version namespace for this gem.
4
5
  module Version
5
- VERSION = "2.0.12"
6
+ # Current gem version.
7
+ VERSION = "2.0.14"
6
8
  end
9
+ # Current gem version exposed at the traditional constant location.
7
10
  VERSION = Version::VERSION # Traditional Constant Location
8
11
  end
@@ -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
- # :nocov:
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
- # :nocov:
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 ? method_name : super
83
+ method_name || super
84
84
  end
85
85
 
86
86
  # NOTE: Deprecated method
@@ -114,7 +114,6 @@ module SanitizeEmail
114
114
  # subject "subject"
115
115
  # end
116
116
  # end
117
- #
118
117
  def sanitary(config_options = {})
119
118
  raise MissingBlockParameter, "SanitizeEmail.sanitary must be called with a block" unless block_given?
120
119
  forcing =
@@ -145,7 +144,6 @@ module SanitizeEmail
145
144
  # subject "subject"
146
145
  # end
147
146
  # end
148
- #
149
147
  def unsanitary
150
148
  raise MissingBlockParameter, "SanitizeEmail.unsanitary must be called with a block" unless block_given?
151
149
  janitor(forcing: false) do
data.tar.gz.sig CHANGED
Binary file