Ruby/UTF-2000は、XEmacs UTF-2000実装におけるUTF-2000モジュール、
CHISEモジュールのRubyへの移植を試みたモジュールである。
UTF-2000モデルとは、文字を符号ではなく属性によって扱う方法を意味する。
Ruby/UTF-2000ではそれを拡張し、文字をオブジェクトとして扱っている。
require 'utf2000'
include UTF2000
char = Character.new("字") #UTF8で与えること
puts char
char = Character.new("字") #UTF8で与えること
p char.ucs #とすると、その文字のucsの値が表示される
p char.total_strokes #などの属性もある
p char.chinese_gb2312 #などなど
char.alist.each {|a, v| #こんな感じで全属性を表示できる
print a, ': ', v, "\n"
}
xstr = XString.new("文字列") #こんな感じで初期化します。UTF-8で与える。
xstr = "文字列".to_x #こんな拡張方法も用意してある。こっちのほうがきれい。
str = xstr.to_s #もちろんこうやると元に戻る。
#しかし戻った文字列が元の文字列とidenticalである保障はいまのところない。可能なのか?
puts xstr #とすると、to_sが内部的に呼ばれて、普通のUTF-8の「文字列」が出力される。
p xstr #inspectが内部的に呼ばれて、それは各Characterについての情報が表示される。
p xstr.inspect_all #とすると、持っている情報を全て表示する。
下記のような文章を入力、表示できるようになることを例として考える。
まじめなメソッドの説明を書く。(未完)
class XString class Character get_char_attribute get []
いろいろ悩みどころがあるのですが、適当に書いてみます。
Ruby/M17Nはすでにできているらしく、それとの整合性をどうとればいいか。
Ruby/M17Nブランチが本体に反映されるのは、ruby-1.8以降が予定されている。
ソースコード中のm17n.c, m17n.hが該当個所。 UTF-2000は内部的にはUTF-8として扱えるので、それを拡張すればいいのか? UTF-8の処理への追加という形で実装できる?