@private
# File lib/rspec/support/encoded_string.rb, line 8 def initialize(string, encoding = nil) @encoding = encoding @source_encoding = detect_source_encoding(string) @string = matching_encoding(string) end
# File lib/rspec/support/encoded_string.rb, line 20 def <<(string) @string << matching_encoding(string) end
# File lib/rspec/support/encoded_string.rb, line 24 def split(regex_or_string) @string.split(matching_encoding(regex_or_string)) end
# File lib/rspec/support/encoded_string.rb, line 28 def to_s @string end
# File lib/rspec/support/encoded_string.rb, line 52 def detect_source_encoding(string) string.encoding end
# File lib/rspec/support/encoded_string.rb, line 36 def matching_encoding(string) string.encode(@encoding) rescue Encoding::UndefinedConversionError, Encoding::InvalidByteSequenceError normalize_missing(string.encode(@encoding, :invalid => :replace, :undef => :replace)) rescue Encoding::ConverterNotFoundError normalize_missing(string.force_encoding(@encoding).encode(:invalid => :replace)) end
# File lib/rspec/support/encoded_string.rb, line 44 def normalize_missing(string) if @encoding.to_s == "UTF-8" string.gsub(MRI_UNICODE_UNKOWN_CHARACTER.force_encoding(@encoding), "?") else string end end