i
[chise/ruby.git] / chise / string.rb
1 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
2
3 require "chise/character"
4 require "chise/parser"
5
6 class String
7   # copied from htree/encoder.rb
8   UTF8_RE = /\A(?:
9         [\x00-\x7f]
10        |[\xc0-\xdf][\x80-\xbf]
11        |[\xe0-\xef][\x80-\xbf][\x80-\xbf]
12        |[\xf0-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]
13        |[\xf8-\xfb][\x80-\xbf][\x80-\xbf][\x80-\xbf][\x80-\xbf]
14        |[\xfc-\xfd][\x80-\xbf][\x80-\xbf][\x80-\xbf][\x80-\xbf][\x80-\xbf])\Z/nx
15
16   def is_a_utf8? # Is this string one character in UTF-8?
17     (UTF8_RE =~ self) != nil
18   end
19
20   def char
21     raise unless is_a_utf8?
22     CHISE::Character.get("?"+self)
23   end
24
25   def method_missing(mid, *args)
26     char.method_missing(mid, *args)
27   end
28
29   def each_char
30     to_a.each {|c|
31       yield(c)
32     }
33   end
34
35   def to_a
36     self.split(//u)
37   end
38
39   def de_er()
40     pa = CHISE::EntityReferenceParser.new
41     pa.de_er(self)
42   end
43
44 end