Module: Cinch::Utilities::Encoding Private
- Defined in:
- lib/cinch/utilities/encoding.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Class Method Summary collapse
-
.encode_incoming(string, encoding) ⇒ Object
private
-
.encode_outgoing(string, encoding) ⇒ Object
private
Class Method Details
.encode_incoming(string, encoding) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/cinch/utilities/encoding.rb', line 6 def self.encode_incoming(string, encoding) string = string.dup if encoding == :irc # If incoming text is valid UTF-8, it will be interpreted as # such. If it fails validation, a CP1252 -> UTF-8 conversion # is performed. This allows you to see non-ASCII from mIRC # users (non-UTF-8) and other users sending you UTF-8. # # (from http://xchat.org/encoding/#hybrid) string.force_encoding(::Encoding::UTF_8) if !string.valid_encoding? string.force_encoding(::Encoding::CP1252).encode!(::Encoding::UTF_8, invalid: :replace, undef: :replace) end else string.force_encoding(encoding).encode!(::Encoding::UTF_8, invalid: :replace, undef: :replace) string = string.chars.select(&:valid_encoding?).join end return string end |
.encode_outgoing(string, encoding) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
27 28 29 30 31 32 33 34 |
# File 'lib/cinch/utilities/encoding.rb', line 27 def self.encode_outgoing(string, encoding) string = string.dup if encoding == :irc encoding = ::Encoding::UTF_8 end return string.encode!(encoding, invalid: :replace, undef: :replace).force_encoding(::Encoding::ASCII_8BIT) end |