Module: CassandraMapper::Support::Multibyte

Defined in:
lib/cassandra_mapper/support/multibyte/utils.rb,
lib/cassandra_mapper/support/multibyte.rb

Overview

:nodoc:

Constant Summary collapse

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

.clean(string) ⇒ Object

Removes all invalid characters from the string.

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



47
48
49
# File 'lib/cassandra_mapper/support/multibyte/utils.rb', line 47

def self.clean(string)
  string
end

.proxy_classObject

Returns the current proxy class



22
23
24
# File 'lib/cassandra_mapper/support/multibyte.rb', line 22

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

.proxy_class=(klass) ⇒ Object

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 ActiveSupport::Multibyte::Chars implementation for an example how to do this.

Example:

ActiveSupport::Multibyte.proxy_class = CharsForUTF32


17
18
19
# File 'lib/cassandra_mapper/support/multibyte.rb', line 17

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

.valid_characterObject

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



8
9
10
# File 'lib/cassandra_mapper/support/multibyte/utils.rb', line 8

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

.verify(string) ⇒ Object

Verifies the encoding of a string



24
25
26
# File 'lib/cassandra_mapper/support/multibyte/utils.rb', line 24

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

.verify!(string) ⇒ Object

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

Raises:

  • (EncodingError)


39
40
41
# File 'lib/cassandra_mapper/support/multibyte/utils.rb', line 39

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