Module: Julewire::Core::Serialization::EncodingSanitizer

Defined in:
lib/julewire/core/serialization/encoding_sanitizer.rb

Class Method Summary collapse

Class Method Details

.call(value) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/julewire/core/serialization/encoding_sanitizer.rb', line 8

def call(value)
  raise TypeError, "value must be a String" unless value.is_a?(String)

  return value if valid_utf8?(value) || valid_ascii_only?(value)
  return value.scrub("?") if utf8?(value)

  encode_utf8(value)
rescue EncodingError
  encode_utf8(value.b.force_encoding(Encoding::UTF_8))
end