Module: Mail::Multibyte

Defined in:
lib/mail/multibyte/chars.rb,
lib/mail/multibyte.rb,
lib/mail/multibyte/utils.rb,
lib/mail/multibyte/unicode.rb,
lib/mail/multibyte/exceptions.rb

Overview

:nodoc:

Defined Under Namespace

Modules: Unicode Classes: Chars, EncodingError

Constant Summary

VALID_CHARACTER =

Regular expressions that describe valid byte sequences for a character

{
  # Borrowed from the Kconv library by Shinji KONO - (also as seen on the W3C site)
  'UTF-8' => /\A(?:
              [\x00-\x7f]                                         |
              [\xc2-\xdf] [\x80-\xbf]                             |
              \xe0        [\xa0-\xbf] [\x80-\xbf]                 |
              [\xe1-\xef] [\x80-\xbf] [\x80-\xbf]                 |
              \xf0        [\x90-\xbf] [\x80-\xbf] [\x80-\xbf]     |
              [\xf1-\xf3] [\x80-\xbf] [\x80-\xbf] [\x80-\xbf]     |
              \xf4        [\x80-\x8f] [\x80-\xbf] [\x80-\xbf])\z /xn,
  # Quick check for valid Shift-JIS characters, disregards the odd-even pairing
  'Shift_JIS' => /\A(?:
              [\x00-\x7e\xa1-\xdf]                                     |
              [\x81-\x9f\xe0-\xef] [\x40-\x7e\x80-\x9e\x9f-\xfc])\z /xn
}

Class Method Summary (collapse)

Class Method Details

+ (Object) clean(string)

Removes all invalid characters from the string.

Note: this method is a no-op in Ruby 1.9



46
47
48
# File 'lib/mail/multibyte/utils.rb', line 46

def self.clean(string)
  string
end

+ (Object) proxy_class

Returns the current proxy class



19
20
21
# File 'lib/mail/multibyte.rb', line 19

def self.proxy_class
  @proxy_class ||= Mail::Multibyte::Chars
end

+ (Object) proxy_class=(klass)

The proxy class returned when calling mb_chars. You can use this accessor to configure your own proxy class so you can support other encodings. See the Mail::Multibyte::Chars implementation for an example how to do this.

Example:

Mail::Multibyte.proxy_class = CharsForUTF32


14
15
16
# File 'lib/mail/multibyte.rb', line 14

def self.proxy_class=(klass)
  @proxy_class = klass
end

+ (Object) valid_character

Returns a regular expression that matches valid characters in the current encoding



7
8
9
# File 'lib/mail/multibyte/utils.rb', line 7

def self.valid_character
  VALID_CHARACTER[Encoding.default_external.to_s]
end

+ (Object) verify(string)

Verifies the encoding of a string



23
24
25
# File 'lib/mail/multibyte/utils.rb', line 23

def self.verify(string)
  string.valid_encoding?
end

+ (Object) verify!(string)

Verifies the encoding of the string and raises an exception when it's not valid

Raises:



38
39
40
# File 'lib/mail/multibyte/utils.rb', line 38

def self.verify!(string)
  raise EncodingError.new("Found characters with invalid encoding") unless verify(string)
end