--- !ruby/object:RI::ClassDescription 
attributes: 
- !ruby/object:RI::Attribute 
  comment: 
  name: wrapped_string
  rw: R
class_methods: 
- !ruby/object:RI::MethodSummary 
  name: compose_codepoints
- !ruby/object:RI::MethodSummary 
  name: consumes?
- !ruby/object:RI::MethodSummary 
  name: decompose_codepoints
- !ruby/object:RI::MethodSummary 
  name: g_pack
- !ruby/object:RI::MethodSummary 
  name: g_unpack
- !ruby/object:RI::MethodSummary 
  name: in_char_class?
- !ruby/object:RI::MethodSummary 
  name: new
- !ruby/object:RI::MethodSummary 
  name: reorder_characters
- !ruby/object:RI::MethodSummary 
  name: tidy_bytes
- !ruby/object:RI::MethodSummary 
  name: u_unpack
- !ruby/object:RI::MethodSummary 
  name: wants?
comment: 
- !ruby/struct:SM::Flow::P 
  body: Chars enables you to work transparently with UTF-8 encoding in the Ruby String class without having extensive knowledge about the encoding. A Chars object accepts a string upon initialization and proxies String methods in an encoding safe manner. All the normal String methods are also implemented on the proxy.
- !ruby/struct:SM::Flow::P 
  body: String methods are proxied through the Chars object, and can be accessed through the <tt>mb_chars</tt> method. Methods which would normally return a String object now return a Chars object so methods can be chained.
- !ruby/struct:SM::Flow::VERB 
  body: "  &quot;The Perfect String  &quot;.mb_chars.downcase.strip.normalize #=&gt; &quot;the perfect string&quot;\n"
- !ruby/struct:SM::Flow::P 
  body: Chars objects are perfectly interchangeable with String objects as long as no explicit class checks are made. If certain methods do explicitly check the class, call <tt>to_s</tt> before you pass chars objects to them.
- !ruby/struct:SM::Flow::VERB 
  body: "  bad.explicit_checking_method &quot;T&quot;.mb_chars.downcase.to_s\n"
- !ruby/struct:SM::Flow::P 
  body: The default Chars implementation assumes that the encoding of the string is UTF-8, if you want to handle different encodings you can write your own multibyte string handler and configure it through ActiveSupport::Multibyte.proxy_class.
- !ruby/struct:SM::Flow::VERB 
  body: "  class CharsForUTF32\n    def size\n      @wrapped_string.size / 4\n    end\n\n    def self.accepts?(string)\n      string.length % 4 == 0\n    end\n  end\n\n  ActiveSupport::Multibyte.proxy_class = CharsForUTF32\n"
constants: 
- !ruby/object:RI::Constant 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: Hangul character boundaries and properties
  name: HANGUL_SBASE
  value: "0xAC00"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_LBASE
  value: "0x1100"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_VBASE
  value: "0x1161"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_TBASE
  value: "0x11A7"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_LCOUNT
  value: "19"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_VCOUNT
  value: "21"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_TCOUNT
  value: "28"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_NCOUNT
  value: HANGUL_VCOUNT * HANGUL_TCOUNT
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_SCOUNT
  value: "11172"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_SLAST
  value: HANGUL_SBASE + HANGUL_SCOUNT
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_JAMO_FIRST
  value: "0x1100"
- !ruby/object:RI::Constant 
  comment: 
  name: HANGUL_JAMO_LAST
  value: "0x11FF"
- !ruby/object:RI::Constant 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: All the unicode whitespace
  name: UNICODE_WHITESPACE
  value: "[         (0x0009..0x000D).to_a, # White_Space # Cc   [5] <control-0009>..<control-000D>         0x0020,                # White_Space # Zs       SPACE         0x0085,                # White_Space # Cc       <control-0085>         0x00A0,                # White_Space # Zs       NO-BREAK SPACE         0x1680,                # White_Space # Zs       OGHAM SPACE MARK         0x180E,                # White_Space # Zs       MONGOLIAN VOWEL SEPARATOR         (0x2000..0x200A).to_a, # White_Space # Zs  [11] EN QUAD..HAIR SPACE         0x2028,                # White_Space # Zl       LINE SEPARATOR         0x2029,                # White_Space # Zp       PARAGRAPH SEPARATOR         0x202F,                # White_Space # Zs       NARROW NO-BREAK SPACE         0x205F,                # White_Space # Zs       MEDIUM MATHEMATICAL SPACE         0x3000,                # White_Space # Zs       IDEOGRAPHIC SPACE       ].flatten.freeze"
- !ruby/object:RI::Constant 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: BOM (byte order mark) can also be seen as whitespace, it's a non-rendering character used to distinguish between little and big endian. This is not an issue in utf-8, so it must be ignored.
  name: UNICODE_LEADERS_AND_TRAILERS
  value: UNICODE_WHITESPACE + [65279]
- !ruby/object:RI::Constant 
  comment: 
  name: UNICODE_TRAILERS_PAT
  value: /(#{codepoints_to_pattern(UNICODE_LEADERS_AND_TRAILERS)})+\Z/
- !ruby/object:RI::Constant 
  comment: 
  name: UNICODE_LEADERS_PAT
  value: /\A(#{codepoints_to_pattern(UNICODE_LEADERS_AND_TRAILERS)})+/
- !ruby/object:RI::Constant 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: Borrowed from the Kconv library by Shinji KONO - (also as seen on the W3C site)
  name: UTF8_PAT
  value: "/\\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"
full_name: ActiveSupport::Multibyte::Chars
includes: 
- !ruby/object:RI::IncludedModule 
  name: Comparable
instance_methods: 
- !ruby/object:RI::MethodSummary 
  name: +
- !ruby/object:RI::MethodSummary 
  name: <=>
- !ruby/object:RI::MethodSummary 
  name: =~
- !ruby/object:RI::MethodSummary 
  name: "[]"
- !ruby/object:RI::MethodSummary 
  name: "[]="
- !ruby/object:RI::MethodSummary 
  name: acts_like_string?
- !ruby/object:RI::MethodSummary 
  name: capitalize
- !ruby/object:RI::MethodSummary 
  name: center
- !ruby/object:RI::MethodSummary 
  name: compose
- !ruby/object:RI::MethodSummary 
  name: decompose
- !ruby/object:RI::MethodSummary 
  name: downcase
- !ruby/object:RI::MethodSummary 
  name: g_length
- !ruby/object:RI::MethodSummary 
  name: include?
- !ruby/object:RI::MethodSummary 
  name: index
- !ruby/object:RI::MethodSummary 
  name: insert
- !ruby/object:RI::MethodSummary 
  name: length
- !ruby/object:RI::MethodSummary 
  name: ljust
- !ruby/object:RI::MethodSummary 
  name: lstrip
- !ruby/object:RI::MethodSummary 
  name: method_missing
- !ruby/object:RI::MethodSummary 
  name: normalize
- !ruby/object:RI::MethodSummary 
  name: respond_to?
- !ruby/object:RI::MethodSummary 
  name: reverse
- !ruby/object:RI::MethodSummary 
  name: rjust
- !ruby/object:RI::MethodSummary 
  name: rstrip
- !ruby/object:RI::MethodSummary 
  name: size
- !ruby/object:RI::MethodSummary 
  name: slice
- !ruby/object:RI::MethodSummary 
  name: split
- !ruby/object:RI::MethodSummary 
  name: strip
- !ruby/object:RI::MethodSummary 
  name: tidy_bytes
- !ruby/object:RI::MethodSummary 
  name: upcase
name: Chars
superclass: Object
