class MiniSpec::Differ::EncodedString
Constants
- MRI_UNICODE_UNKNOWN_CHARACTER
Attributes
source_encoding[R]
Public Class Methods
new(string, encoding = nil)
click to toggle source
# File lib/minispec/utils/differ.rb, line 32 def initialize(string, encoding = nil) @encoding = encoding @source_encoding = detect_source_encoding(string) @string = matching_encoding(string) end
Public Instance Methods
<<(string)
click to toggle source
# File lib/minispec/utils/differ.rb, line 44 def <<(string) @string << matching_encoding(string) end
split(regex_or_string)
click to toggle source
# File lib/minispec/utils/differ.rb, line 48 def split(regex_or_string) @string.split(matching_encoding(regex_or_string)) end
to_s()
click to toggle source
# File lib/minispec/utils/differ.rb, line 52 def to_s @string end
Also aliased as: to_str
Private Instance Methods
detect_source_encoding(string)
click to toggle source
# File lib/minispec/utils/differ.rb, line 76 def detect_source_encoding(string) string.encoding end
matching_encoding(string)
click to toggle source
# File lib/minispec/utils/differ.rb, line 60 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
normalize_missing(string)
click to toggle source
# File lib/minispec/utils/differ.rb, line 68 def normalize_missing(string) if @encoding.to_s == "UTF-8" string.gsub(MRI_UNICODE_UNKNOWN_CHARACTER.force_encoding(@encoding), "?") else string end end