Unicode::GCString~[ja] − UAX #29 書 記 素 ク ラ ス タ の 列 と し て の 文 字 列
use
Unicode::GCString;
$gcstring = Unicode::GCString−>new($string);
Unicode::GCString
は Unicode文 字 列 を 、
Unicode標 準 附 属 書 29 [
UAX #29] で 定 義 さ
れ る 「 拡 張 書
記 素 ク ラ ス タ
」 〔 extended grapheme cluster〕 の
列 と し て 扱 う
。 書 記 素 ク ラ
ス タ 〔 grapheme cluster〕
は 、 Unicode文 字 の 列
で 、 ひ と つ の
書 記 素 基 底 〔
grapheme base〕 と 、 付 加
的 な 書 記 素 エ
キ ス テ ン ダ 〔
grapheme extender〕 お よ び
/ま た は 「 前 置
」 文 字 〔
“prepend” character〕 か ら
成 る 。 こ れ は
人 が 「 文 字 」
と み な す も の
に 近 い 。 公 開
イ ン タ フ ェ ー
ス コ ン ス ト ラ
ク タ
new ( STRING, [ KEY =>
VALUE, ... ])
new ( STRING, [ LINEBREAK ])
コ ン ス ト ラ ク
タ 。 Unicode文 字 列
STRING か ら 新 た
に 書 記 素 ク ラ
ス タ 文 字 列
(Unicode::GCString オ ブ ジ ェ
ク ト ) を 作 る 。
KEY => VALUE の 対 に つ い て は "オ プ シ ョ ン " in Unicode::LineBreak~[ja]を 参 照 。 第 二 の 形 式 で は 、 Unicode::LineBreak~[ja] オ ブ ジ ェ ク ト LINEBREAK で 分 節 の 仕 様 を 決 定 す る 。 注 : 最 初 の 形 式 は リ リ ー ス 2012.10 で 導 入 さ れ た 。
copy コ ピ
ー コ ン ス ト ラ
ク タ 。 書 記 素
ク ラ ス タ 文 字
列 の 複 製 を 作
る 。 新 た な 文
字 列 で は 、 次
の 位 置 は 先 頭
に な る 。 長 さ
chars イ ン ス タ ン
ス メ ソ ッ ド 。
書 記 素 ク ラ ス
タ 文 字 列 に 含
ま れ る Unicode文 字 の
数 、 つ ま り Unicode文
字 列 と し て の
長 さ を 返 す 。
columns イ ン ス タ ン
ス メ ソ ッ ド 。
組 み 込 み の 文
字 デ ー タ ベ ー
ス で 決 定 さ れ
る 書 記 素 ク ラ
ス タ 文 字 列 の
桁 数 を 返 す 。
詳 し く は "
DESCRIPTION" in Unicode::LineBreak~[ja]
を 参 照 。
length イ ン ス タ ン
ス メ ソ ッ ド 。
書 記 素 ク ラ ス
タ 文 字 列 に 含
ま れ る 書 記 素
ク ラ ス タ の 数
を 返 す 。 文 字
列 と し て の 操
作
as_string
""" OBJECT """
イ ン ス タ ン ス
メ ソ ッ ド 。 書
記 素 ク ラ ス タ
文 字 列 を 明 示
的 に Unicode文 字 列 に
変 換 す る 。
cmp ( STRING )
STRING "cmp" STRING
イ ン ス タ ン ス
メ ソ ッ ド 。 文
字 列 を 比 較 す
る 。 特 に 風 変
わ り な と こ ろ
は な い 。 文 字
列 の ど ち ら か
が Unicode文 字 列 で も
よ い 。
concat ( STRING )
STRING "." STRING
イ ン ス タ ン ス
メ ソ ッ ド 。 書
記 素 ク ラ ス タ
文 字 列 を 結 合
す る 。 STRING の
ど ち ら か が Unicode文
字 列 で も よ い
。 結 果 の 文 字
列 の 桁 数 (columns()
を 参 照 ) や 書 記
素 ク ラ ス タ の
数 (length() を 参 照 )
は 、 ふ た つ の
文 字 列 の そ れ
の 和 に な る と
は か ぎ ら な い
こ と に 注 意 。
新 た な 文 字 列
で は 、 次 の 位
置 は 左 辺 の 文
字 列 に セ ッ ト
さ れ て い た 位
置 に な る 。
join ([ STRING, ... ]) イ ン
ス タ ン ス メ ソ
ッ ド 。 STRING
を 、 書 記 素 ク
ラ ス タ 文 字 列
を は さ ん で つ
な げ る 。 STRING
の う ち に Unicode文 字
列 が あ っ て も
よ い 。
substr ( OFFSET, [ LENGTH, [
REPLACEMENT ]]) イ ン ス
タ ン ス メ ソ ッ
ド 。 書 記 素 ク
ラ ス タ 文 字 列
の 部 分 文 字 列
を 返 す 。 OFFSET
と LENGTH は 書 記
素 ク ラ ス タ で
数 え る 。
REPLACEMENT を 指 定
す る と 、 部 分
文 字 列 を そ れ
で 置 き 換 え る
。 REPLACEMENT は Unicode文
字 列 で も よ い
。
Note: こ の メ ソ ッ ド は 組 み 込 み 関 数 substr() と 異 な り 、 左 辺 値 を 返 す こ と は な い 。 書 記 素 ク ラ ス タ の 列 と し て の 操 作
as_array
"@{" OBJECT "}"
as_arrayref イ ン ス タ ン
ス メ ソ ッ ド 。
書 記 素 ク ラ ス
タ 文 字 列 を 、
書 記 素 ク ラ ス
タ の 情 報 の 配
列 に 変 換 す る
。
eos イ ン ス タ ン ス メ ソ ッ ド 。 現 在 の 位 置 が 書 記 素 ク ラ ス タ 文 字 列 の 最 後 か ど う か 調 べ る 。 |
item ([ OFFSET
]) イ ン ス タ ン ス
メ ソ ッ ド 。
OFFSET番 め の 書 記 素
ク ラ ス タ を 返
す 。 OFFSET を 指
定 し な い と 、
次 の 位 置 の 書
記 素 ク ラ ス タ
の 情 報 を 返 す
。
next
"<" OBJECT ">"
イ ン ス タ ン ス
メ ソ ッ ド 、 反
復 的 。 次 の 位
置 の 書 記 素 ク
ラ ス タ を 返 し
、 次 の 位 置 を
ひ と つ 進 め る
。
pos ([ OFFSET ]) イ ン
ス タ ン ス メ ソ
ッ ド 。 OFFSET
を 指 定 し た 場
合 は 、 次 の 位
置 を そ れ に す
る 。 書 記 素 ク
ラ ス タ 文 字 列
の 次 の 位 置 を
返 す 。 そ の
他
lbc イ ン ス タ ン ス メ ソ ッ ド 。 最 初 の 書 記 素 ク ラ ス タ の 最 初 の 文 字 の 行 分 割 ク ラ ス |
(Unicode::LineBreak~[ja]
参 照 ) を 返 す 。
lbcext イ ン ス タ ン
ス メ ソ ッ ド 。
最 後 の 書 記 素
ク ラ ス タ の 最
後 の 書 記 素 エ
キ ス テ ン ダ の
行 分 割 ク ラ ス
(Unicode::LineBreak~[ja] 参 照 ) を
返 す 。 書 記 素
エ キ ス テ ン ダ
が な い か 、 ま
た は ク ラ ス が
CM の 場 合 は
、 最 後 の 書 記
素 基 底 の 行 分
割 ク ラ ス を 返
す 。
• 書 記 素 ク ラ ス タ を 「 書 記 素 」 と 呼 ぶ べ き で は な い |
(ラ リ ー は そ う 呼 ぶ が )。 | ||
• |
Perl の 5.10.1 版 あ た り で は 、 Unicode::GCString オ ブ ジ ェ ク ト か ら Unicode 文 字 列 へ の 暗 黙 の 変 換 が "utf8_mg_pos_cache_update" キ ャ ッ シ ュ を 混 乱 さ せ る こ と が あ る 。 た と え ば 、 つ ぎ の よ う に
$sub = substr($gcstring, $i, $j); す る か わ り に 、 つ ぎ の よ う に す る と よ い 。
$sub =
substr("$gcstring", $i, $j);
$sub = substr($gcstring−>as_string, $i, $j);
• こ の モ ジ ュ ー ル で は 「 初 期 の 」 書 記 素 ク ラ ス タ 境 界 判 別 ア ル ゴ リ ズ ム を 実 装 し て い る 。 手 直 し 〔 |
tailoring〕 の 機 構 に は ま だ 対 応 し て い な い 。
$VERSION
変 数 を 参 照 し
て ほ し い 。 非
互 換 な 変 更
2013.10
• |
new() メ ソ ッ ド は 非 Unicode文 字 列 を 引 数 に 取 れ る よ う に な っ た 。 そ の 場 合 、 文 字 列 を iso−8859−1 (Latin 1) キ ャ ラ ク タ セ ッ ト で 復 号 す る 。 以 前 の リ リ ー ス で は 、 こ の メ ソ ッ ド に 非 Unicodeを 入 力 す る と 死 ぬ よ う に な っ て い た 。 |
[ UAX #29] Mark Davis (ed.) (2009−2013). Unicode Standard Annex #29: Unicode Text Segmentation, Revisions 15−23. <http://www.unicode.org/reports/tr29/>.
Hatuka*nezumi − IKEDA Soji <hatuka(at)nezumi.nu>
Copyright (C) 2009−2013 Hatuka*nezumi − IKEDA Soji.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.