summaryrefslogtreecommitdiff
path: root/lib/uri/mailto.rb
AgeCommit message (Collapse)Author
2025-11-04[ruby/uri] Re-allow consecutive, leading and trailing dots in EMAIL_REGEXPDaisuke Aritomo
Effectively reverts commit https://github.com/ruby/uri/commit/788274b180d6 and https://github.com/ruby/uri/commit/0abac721d8fe. EMAIL_REGEXP was mostly drawn from WHATWG HTML LS. This spec states that it intentionally violates RFC 5322 to provide a practical regex for validation. > This requirement is a willful violation of RFC 5322, which defines a > syntax for email addresses that is simultaneously too strict (before the > "@" character), too vague (after the "@" character), and too lax > (allowing comments, whitespace characters, and quoted strings in manners > unfamiliar to most users) to be of practical use here. The allowing of consecutive dot s(`a..a@`) and leading/trailing dots (`.a@`, `a.@`) is not the only derivation from RFC 5322. If a truly RFC 5322-compliant regexp is needed, tt should be organized under a different name, since too much departure from the original EMAIL_REGEXP must be introduced. https://github.com/ruby/uri/commit/c551d7020b
2025-07-12[ruby/uri] Improve performance of `URI::MailTo::EMAIL_REGEXP`Nobuyoshi Nakada
Fix the performance regression at #172 for valid emails. ``` yml prelude: | require 'uri/mailto' n = 1000 re = URI::MailTo::EMAIL_REGEXP benchmark: n.t..t.: re.match?("n.t..t.@docomo.ne.jp") example: re.match?("example@example.info") ``` | |released| 788274b| c5974f0| this| |:--------|-------:|-------:|-------:|-------:| |n.t..t. | 3.795M| 4.864M| 4.993M| 8.739M| | | -| 1.28x| 1.32x| 2.30x| |example | 3.911M| 3.740M| 2.838M| 3.880M| | | 1.38x| 1.32x| -| 1.37x| https://github.com/ruby/uri/commit/7363a134ac
2025-07-12[ruby/uri] Prohibit successive dots in emailNobuyoshi Nakada
https://github.com/ruby/uri/commit/32335923bf
2025-07-12[ruby/uri] lib/uri/mailto.rb (EMAIL_REGEXP): use assertions surrounding the ↵Nikita Levchuk
local part instead of a character class https://github.com/ruby/uri/commit/2d7d2d9988
2025-07-12[ruby/uri] lib/uri/mailto.rb (EMAIL_REGEXP): the local part should not ↵Nikita Levchuk
contain leading or trailing dots https://github.com/ruby/uri/commit/618e2bb640
2022-04-22[ruby/uri] Include RFC2396_REGEXP module directlyPeter Zhu
REGEXP is defined as RFC2396_REGEXP in lib/uri/common.rb. If we include REGEXP then a broken URL is generated in rdoc for URI and URI::MailTo. https://github.com/ruby/uri/commit/ed6ded9c80
2021-07-27[ruby/uri] Add proper Ractor support to URIBenoit Daloze
* Using a module to map scheme name to scheme class, which also works with Ractor. * No constant redefinition, no ObjectSpace, still fast lookup for initial schemes. https://github.com/ruby/uri/commit/883567fd81
2021-07-27[ruby/uri] Revert "Fix to support Ruby 3.0 Ractor"Benoit Daloze
* This reverts commit 1faa4fdc161d7aeebdb5de0c407b923beaecf898. * It has too many problems, see https://github.com/ruby/uri/pull/22 for discussion. https://github.com/ruby/uri/commit/b959da2dc9
2021-07-27[ruby/uri] Fix to support Ruby 3.0 Ractorkvokka
https://github.com/ruby/uri/commit/1faa4fdc16
2020-03-26[ruby/uri] Remove RCS keywordsDavid Rodríguez
https://github.com/ruby/uri/commit/1bcb1203ad
2018-11-02lib/*: Prefer require_relative over require.marcandre
[#15206] [Fix GH-1976] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-20Update link to Email address specificationkazu
The current link leads to 404, I updated to the actual one. [Fix GH-1929] [ci skip] Author: Nikolay Belov <travelerspb@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-04-21Improve docs for URI librarystomar
* lib/uri/generic.rb: [DOC] fix invalid example code to make it syntax highlighted; drop unnecessary `puts', `p'; adapt to current inspect format without Object id; do not display unnecessary return values in examples; fix or prevent unintended description lists; fix broken RDoc; fix grammar and typos. * lib/uri.rb: ditto. * lib/uri/common.rb: ditto. * lib/uri/file.rb: ditto. * lib/uri/ftp.rb: ditto. * lib/uri/http.rb: ditto. * lib/uri/ldap.rb: ditto. * lib/uri/mailto.rb: ditto. * lib/uri/rfc2396_parser.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-12Use URI.decode_www_form_component [Bug #10774]naruse
`parser` refered RFC2396_Parser, but it is separated. test is contributed by Dominik Menke git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-12* lib/uri/mailto.rb: Removed needless `return` and use `.`` instead of `::`hsbt
with class method. * test/uri/test_mailto.rb: Added tests for coverage. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-02* lib/uri/mailto.rb (initialize): RFC3986_Parser#split sets opaquenaruse
only if the URI has path-rootless, not path-empty. [ruby-core:76055] [Bug #12498] patched by Chris Heisterkamp <cheister@squareup.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16Add frozen_string_literal: false for all filesnaruse
When you change this to true, you may need to add more tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-14* lib/uri/mailto.rb: raising URI::InvalidComponentError insteadduerst
of failing with undefined method `split' for nil:NilClass for mailto: URIs without opaque part. [Bug #10738] * test/uri/testuri.rb: Test for above git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-20* lib/uri/mailto.rb (URI::MailTo::EMAIL_REGEXP): should escape `#`.usa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48516 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-30suppress warnings: assigned but unused variablenaruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-27* lib/uri/mailto.rb: update to latest specs, RFC 6068 and HTML5.naruse
* lib/uri/mailto.rb (HEADER_PATTERN): removed. * lib/uri/mailto.rb (HEADER_REGEXP): use RFC 6068 hfields. * lib/uri/mailto.rb (EMAIL_REGEXP): use HTML5 email regexp. * lib/uri/mailto.rb (URI::MailTo.build): support multiple to addresses. * lib/uri/mailto.rb (URI::MailTo#initialize): Support multiple to addresses. Don't check with regexp, only split. * lib/uri/mailto.rb (URI::MailTo#check_to): verify by matching URI path-rootless and HTML5 email regexp with unescaped one. * lib/uri/mailto.rb (URI::MailTo#check_headers): verify only by HEADER_REGEXP. * lib/uri/mailto.rb (URI::MailTo#set_headers): don't check by HEADER_REGEXP, only split it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-24Revert "* lib/uri/mailto.rb: support RFC6068."naruse
to fix mailto URI syntax git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-23* lib/uri/mailto.rb: support RFC6068.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-22lib/uri/mailto.rb (initialize): as previous commit, fix arg_checknaruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-23* lib/uri/mailto.rb (URI::MailTo.build): follow Array#to_s change ofnaruse
Ruby 1.9; use Array#join. [Bug #5840] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34360 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-13 * lib/uri.rb: Add toplevel documentation. Patch by Vincent Batts.drbrain
[Ruby 1.9 - Bug #4690] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-12 * re.c (Init_Regexp): Document option constants. Patch by Vincentdrbrain
Batts. [Ruby 1.9 - Bug #4677] * lib/uri/common.rb (module URI): Documentation for URI. Patch by Vincent Batts. [Ruby 1.9- Bug #4677] * lib/uri/ftp.rb (module URI): ditto * lib/uri/generic.rb (module URI): ditto * lib/uri/http.rb (module URI): ditto * lib/uri/https.rb (module URI): ditto * lib/uri/ldap.rb (module URI): ditto * lib/uri/ldaps.rb (module URI): ditto * lib/uri/mailto.rb (module URI): ditto * process.c (Init_process): Document Process constants. Patch by Vincent Batts. [Ruby 1.9- Bug #4677] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-11* lib/uri/mailto.rb: clean up regexp [ruby-core:29894]marcandre
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-27* lib/uri: don't set @parser if it is DEFAULT_PARSER for marshalingakr
URI objects between Ruby 1.8 and Ruby 1.9. [ruby-dev:38377] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-06* {ext,lib,test}/**/*.rb: removed trailing spaces.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23Fix ruby -w warnings for mismatched indentation discovered by rdocdrbrain
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-10 * lib/uri/common.rb (URI::Parser): new class.akira
* lib/uri/mailto.rb, lib/uri/generic.rb: follow the above change. * test/uri/test_parser.rb: added tests for URI::Parser. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24Fix Regexp warnings in lib/uri. Patch #16524 by Kornelius Kalnbach.drbrain
[ruby-core:14302] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-24Lovely RDOC patches from mathew (metaATpoboxDOTcom) on URI/* and getoptlong.rbryan
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-24 * lib/uri.rb: Documented (thanks Dmitry V. Sabanin).gsinclair
* lib/uri/common.rb: Ditto. * lib/uri/ftp.rb: Ditto. * lib/uri/generic.rb: Ditto. * lib/uri/http.rb: Ditto. * lib/uri/https.rb: Ditto. * lib/uri/ldap.rb: Ditto. * lib/uri/mailto.rb: Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-22* lib/uri/mailto.rb (URI::MailTo::to_s): should include fragment.akira
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-04* lib/uri/ftp.rb, lib/uri/mailto.rb: renamed to #to_s from #to_str.akira
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-14* lib/uri/generic.rb, lib/uri/ldap.rb, lib/uri/mailto.ldap: all foo=()akira
returns arguments passed by caller. * lib/uri/generic.rb (Generic#to_str, Generic#to_s): removed to_str. Suggested by Tanaka Akira <akr@m17n.org> at [ruby-dev:19475]. * lib/uri/generic.rb (Generic#==): should not generate an URI object from argument. Suggested by Tanaka Akira <akr@m17n.org> at [ruby-dev:19475]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-20should raise InvalidComponentError if MAILTO_REGEXP could not match with ↵akira
@opaque. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-04updated uri.rb and uri/*.rb to uri-0.9.7akira
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-25* io.c (appendline): forget to terminate with nul.matz
* eval.c (ruby_run): should set toplevel visibility again here. * eval.c (rb_eval): should not rely on ruby_class == rb_cObject check. Besides allow implicit publicity for attribute set methods. * parse.y (primary): need not to check class_nest, just set whether method is an attrset or not. * string.c (rb_str_each_line): p might be at the top of the string. * class.c (rb_make_metaclass): class of metaclass should be metaclass of superclass, unless class itself is a metaclass; class of metaclass of metaclass should point back to self. eh, confusing, isn't it. * class.c (rb_singleton_class): check if its class is singleton AND attached to self. * eval.c (rb_eval): should define class/module under ruby_cbase. * eval.c (rb_eval): should set class/module path based on ruby_cbase, not ruby_class. * eval.c (module_setup): use ruby_cbase instead of ruby_class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-01-10added uri library (uri-0.9.4)akira
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e