Skip to content
This repository was archived by the owner on Nov 30, 2024. It is now read-only.

Commit e8ffc72

Browse files
committed
Remove unneeded constants and update docs
1 parent 3633d39 commit e8ffc72

File tree

1 file changed

+19
-29
lines changed

1 file changed

+19
-29
lines changed

lib/rspec/support/encoded_string.rb

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,11 @@ class EncodedString
55
# Reduce allocations by storing constants.
66
UTF_8 = "UTF-8"
77
US_ASCII = "US-ASCII"
8-
#
9-
# In MRI 2.1 'invalid: :replace' changed to also replace an invalid byte sequence
10-
# see https://github.com/ruby/ruby/blob/v2_1_0/NEWS#L176
11-
# https://www.ruby-forum.com/topic/6861247
12-
# https://twitter.com/nalsh/status/553413844685438976
13-
#
14-
# For example, given:
15-
# "\x80".force_encoding("Emacs-Mule").encode(:invalid => :replace).bytes.to_a
16-
#
17-
# On MRI 2.1 or above: 63 # '?'
18-
# else : 128 # "\x80"
19-
#
8+
209
# Ruby's default replacement string is:
2110
# U+FFFD ("\xEF\xBF\xBD"), for Unicode encoding forms, else
2211
# ? ("\x3F")
2312
REPLACE = "?"
24-
ENCODE_UNCONVERTABLE_BYTES = {
25-
:invalid => :replace,
26-
:undef => :replace,
27-
:replace => REPLACE
28-
}
29-
ENCODE_NO_CONVERTER = {
30-
:invalid => :replace,
31-
:replace => REPLACE
32-
}
3313

3414
def initialize(string, encoding=nil)
3515
@encoding = encoding
@@ -112,15 +92,25 @@ def matching_encoding(string)
11292
string = remove_invalid_bytes(string)
11393
string.encode(@encoding)
11494
rescue Encoding::UndefinedConversionError, Encoding::InvalidByteSequenceError
115-
# ENCODE_UNCONVERTABLE_BYTES inlined here to avoid warnings on Ruby 2.7
116-
string.encode(@encoding,
117-
:invalid => :replace,
118-
:undef => :replace,
119-
:replace => REPLACE)
95+
# Originally defined as a constant to avoid uneeded allocations, this hash must
96+
# be defined inline (without {}) to avoid warnings on Ruby 2.7
97+
#
98+
# In MRI 2.1 'invalid: :replace' changed to also replace an invalid byte sequence
99+
# see https://github.com/ruby/ruby/blob/v2_1_0/NEWS#L176
100+
# https://www.ruby-forum.com/topic/6861247
101+
# https://twitter.com/nalsh/status/553413844685438976
102+
#
103+
# For example, given:
104+
# "\x80".force_encoding("Emacs-Mule").encode(:invalid => :replace).bytes.to_a
105+
#
106+
# On MRI 2.1 or above: 63 # '?'
107+
# else : 128 # "\x80"
108+
#
109+
string.encode(@encoding, :invalid => :replace, :undef => :replace, :replace => REPLACE)
120110
rescue Encoding::ConverterNotFoundError
121-
# ENCODE_NO_CONVERTER inlined here to avoid warnings on Ruby 2.7
122-
string.dup.force_encoding(@encoding).encode(:invalid => :replace,
123-
:replace => REPLACE)
111+
# Originally defined as a constant to avoid uneeded allocations, this hash must
112+
# be defined inline (without {}) to avoid warnings on Ruby 2.7
113+
string.dup.force_encoding(@encoding).encode(:invalid => :replace, :replace => REPLACE)
124114
end
125115

126116
# Prevents raising ArgumentError

0 commit comments

Comments
 (0)