@@ -37,20 +37,26 @@ class InvalidURIError < StandardError
37
37
##
38
38
# Container for the character classes specified in
39
39
# <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>.
40
+ #
41
+ # Note: Concatenated and interpolated `String`s are not affected by the
42
+ # `frozen_string_literal` directive and must be frozen explicitly.
43
+ #
44
+ # Interpolated `String`s *were* frozen this way before Ruby 3.0:
45
+ # https://bugs.ruby-lang.org/issues/17104
40
46
module CharacterClasses
41
47
ALPHA = "a-zA-Z"
42
48
DIGIT = "0-9"
43
49
GEN_DELIMS = "\\ :\\ /\\ ?\\ #\\ [\\ ]\\ @"
44
50
SUB_DELIMS = "\\ !\\ $\\ &\\ '\\ (\\ )\\ *\\ +\\ ,\\ ;\\ ="
45
- RESERVED = GEN_DELIMS + SUB_DELIMS
46
- UNRESERVED = ALPHA + DIGIT + "\\ -\\ .\\ _\\ ~"
47
- PCHAR = UNRESERVED + SUB_DELIMS + "\\ :\\ @"
48
- SCHEME = ALPHA + DIGIT + "\\ -\\ +\\ ."
49
- HOST = UNRESERVED + SUB_DELIMS + "\\ [\\ :\\ ]"
50
- AUTHORITY = PCHAR + "\\ [\\ ]"
51
- PATH = PCHAR + "\\ /"
52
- QUERY = PCHAR + "\\ /\\ ?"
53
- FRAGMENT = PCHAR + "\\ /\\ ?"
51
+ RESERVED = ( GEN_DELIMS + SUB_DELIMS ) . freeze
52
+ UNRESERVED = ( ALPHA + DIGIT + "\\ -\\ .\\ _\\ ~" ) . freeze
53
+ PCHAR = ( UNRESERVED + SUB_DELIMS + "\\ :\\ @" ) . freeze
54
+ SCHEME = ( ALPHA + DIGIT + "\\ -\\ +\\ ." ) . freeze
55
+ HOST = ( UNRESERVED + SUB_DELIMS + "\\ [\\ :\\ ]" ) . freeze
56
+ AUTHORITY = ( PCHAR + "\\ [\\ : \\ ]" ) . freeze
57
+ PATH = ( PCHAR + "\\ /" ) . freeze
58
+ QUERY = ( PCHAR + "\\ /\\ ?" ) . freeze
59
+ FRAGMENT = ( PCHAR + "\\ /\\ ?" ) . freeze
54
60
end
55
61
56
62
module NormalizeCharacterClasses
0 commit comments