Tsuikyo Reference

ここにある情報は v1.0.0 についてのものです.

Tsuikyo

initialize(conv, flex) - constructor

引数
  • conv (string) : 変換テーブル 省略で "roma"
  • flex (string または number) : 入力判定モード 省略で "cancelable"
戻り値

(object : Tsuikyo インスタンス)

説明

新しい Tsuikyo インスタンスを得ます(コンストラクタとして呼ばれた場合).

Tsuikyo インスタンス自体を複数生成し同時に利用することも可能です.

メモ

initialize を直接呼ぶことはしないでください.

ts = new Tsuikyo("roma", "flex");

のようにインスタンスを得るとき,コンストラクタとして initialize() が呼ばれます.

setDefaultConversion(conv)

引数
  • conv (string) : 変換テーブル
戻り値

Boolean : 指定したテーブルが存在すれば true,しなければ false

説明

デフォルトの変換テーブルを指定します.指定テーブルが存在しなければ何もしません.

指定した変換テーブルが,以後 add() 時 conv を省略した場合に使われます.

setDefaultFlex(level)

引数
  • flex (string または number) : 入力判定モード
戻り値

Boolean : 指定の判定モードが存在すれば true, しなければ false

説明

デフォルトの入力判定モードを指定します.指定判定モードが存在しなければ何もしません.

指定した判定モードが,以後 add() 時 flex を省略した場合に使われます.

add(hstr, sstr, conv, flex)

引数
  • hstr (string) : パース対象文字列
  • sstr (string) : 表示用文字列,空でも動作に支障なし
  • conv (string) : そのワードをパースする際に用いる変換テーブル,省略でデフォルト指定されたテーブルになる
  • flex (string または number) : そのワードを判定する際に用いる入力判定モード,省略でデフォルト指定されたテーブルになる
戻り値

object : TsuikyoWord インスタンス

説明

新しい打鍵対象(ワード)を Tsuikyo に追加し,その TsuikyoWord インスタンスを得ます.

この時点で parse() が内部で呼ばれ,指定の変換テープルを用いて打鍵判定用の内部データ(TsuikyoWord.dat)が作られます.

clear()

引数

なし

戻り値

なし

説明

Tsuikyo に登録されている TsuikyoWord の配列を空にします.

これによりワードごとの ID も新たに 0 から振り直されるようになります.

メモ

v1.0.0 では各インスタンスの delete 忘れてたりする.まあ js とかページ閉じればメモリ回収されるとはいえ,いまいちまずいので直す.

setTarget(id)

引数
  • id (number) - TsuikyoWord の ID
戻り値

指定した ID のワードがあればその TsuikyoWord インスタンス,なければ false (なんで null じゃないんだ,直す)

説明

ターゲットにするワードを指定します.ここで指定されたワードは Tsuikyo インスタンスを TsuikyoWord のように扱って操作ができます.

メモ

説明がわかりにくいので捕捉すると,内部的には,以下の TsuikyoWord にあるのと同名の関数を呼んだとき,id を省略するとここで指定した id がデフォルト値として使われるというだけ.

どっちかというと TsuikyoWord を返す役割の方が大事な気もする.

( init(id) )

( stroke(key, id) )

( strokeTest(key, id) )

( prog(id) )

( getShowString(id) )

( getHiraganaString(id) )

( getKeyString(id) )

( getInputKeyString(id) )

( getShowPos(id) )

( getHiraganaPos(id) )

( getKeyPos(id) )

( getMissCount(id) )

( NextKeys(id) )

( setFlex(id) )

引数
  • id (number) - TsuikyoWord の ID
説明

それぞれ引数に与えられた ID を使って該当する TsuikyoWord の同名の関数を呼び直すだけてす.

戻り値も TsuikyoWord のそれぞれと同じです.

メモ

add() が TsuikyoWord インスタンスを返して,以降そのインスタンスを保持して色々操作してね,というのはオブジェクト指向理解してないと難しいかなぁと思って老婆心で用意した代替操作.

add() した順に ID がつくことを利用して,

tsuikyo.stroke(c);
...
if(typeFinished)
	tsuikyo.setTarget(i++);
...
tsuikyo.getKeyString();
...

等とすれば TsuikyoWord を意識せず Tsuikyo インスタンスと ID だけで操作できるよと.

( parse(hstr, conv, flag) )

引数
  • hstr (string) - パース対象文字列
  • conv (object) - 変換テーブルオブジェクト
  • flag (boolean) - 再帰呼び出しか否かを示すフラグ
戻り値

object : パース結果として得た内部判定用データ.

説明

Tsuikyo.add() が呼ぶ内部処理.結果は TsuikyoWord.dat に格納される.

Tsuikyo の外から呼んで使う必要は普通はないはず.

( idConv(id) )

引数
  • id (number) - TsuikyoWord の ID
戻り値

number : TsuikyoWord の ID

説明

id が undefined であれば setTarget で指定されたデフォルト id を返し,そうでなければ引数の id をそのまま返す.

Tsuikyo の外から呼んで使う必要は普通はないはず.

メモ

なんで TsuikyoWord リストの length 以上の id はじくようになってないんだろ.直す.

( nodeToString(id) )

引数
  • id (number) - TsuikyoWord の ID
戻り値

string : ダンプ結果

説明

指定した ID の TsuikyoWord の nodes (現在の打鍵対象ノードリスト)をダンプ.

デバッグ用だけどなんかまあ残ってる.

( datToString(id) )

引数
  • id (number) - TsuikyoWord の ID
戻り値

string : ダンプ結果

説明

指定した ID の TsuikyoWord の dat (nodes の元になる遷移情報含む内部データ)をダンプ.

デバッグ用だけどなんかまあ残ってる.

( outConv() )

引数

なし

戻り値

string : ダンプ結果

説明

変換テーブルを全てダンプ.

デバッグ用だけどなんかまあ残ってる.

TsuikyoWord

( initialize(hstr, sstr, dat, flex, id) - constructor )

引数
  • hstr (string) : バース対象文字列
  • sstr (string) : 表示用文字列
  • dat (object) : 打鍵判定用内部表現データ
  • flex (number または string) : このワードを判定する際に用いる入力判定モード
  • id (number) : Tsuikyo 内での ID
戻り値

(object : TsuikyoWord インスタンス)

説明

新しい TsuikyoWord インスタンスを得ます(コンストラクタとして呼ばれた場合).

メモ

TsuikyoWord の生成は普通は Tsuikyo に任せることになるので TsuikyoWord をあえて new することはまずないはず.

setFlex(level)

引数
  • level (string または number) : このワードを判定する際に用いる入力判定モード
戻り値

Boolean : 成功すれば true,失敗すれば false

説明

入力判定モードを切り替えます.

メモ

任意のタイミングで変えれますが,反映は現在アクティブなノードが消化された時点(要は 1 打 2 打くらい打鍵されてから)です.がんばれば本当に任意のタイミングでかっちり変わるようにもできるはずだがその需要があるとも思えないので手抜き.

init()

引数

なし

戻り値

Boolean : 成功すれば true,失敗すると false

説明

このワードの打鍵状況を初期化します.ワードの文字列だとか内容自体は失われません.

一度打ち切ったワードを巻き戻して再利用する場合に使います.

getShowString()

引数

なし

戻り値

string : 表示文字列

説明

add() 時に登録した表示用文字列(漢字かな交じり文とか)を返します.

メモ

表示用文字列での打鍵位置とかも対応しようかと思って showString 関連関数がありますが v1.0.0 現在では showPos は未実装.なので今んとこ Tsuikyo に表示用文字列も覚えさせておくと手元で別途管理しなくて良くて便利,とかそれだけのものです.

ぶっちゃけ string 型かどうかのチェックとかないのでなんかオブジェクトつっこんだりしてもいいです.

getHiraganaString()

引数

なし

戻り値

string : パース対象文字列(ひらがな列)

説明

add() 時に登録したパース対象文字列(普通はひらがな文)を返します.

メモ

HiraganaString って名前はデフォのローマ字変換テーブルで使うことを考えてのもの.一般化した名前にするなら ConvertString とか TargetString とか BaseString とかか.

getKeyString()

引数

なし

戻り値

string : 打鍵列

説明

打鍵列(普通は ascii 文)を返します.

既に打鍵された部分については実際に打鍵された内容で,まだ打鍵されていない部分については優先度の高い変換ひとつを選んで(TsuikyoWord.selectNode())つなげます.

getInputKeyString()

引数

なし

戻り値

string : 打鍵列

説明

ワードに対して stroke() された全入力をつなげて返します.この文字列にはミスタイプした文字を含むことに注意してください.

getShowPos()

引数

なし

戻り値

number

説明

表示用文字列における 0 オリジンの現在位置を返す予定でしたが未実装です.

必ず 0 が返ります.

getHiraganaPos()

引数

なし

戻り値

number

説明

パース対象文字列(普通はひらがな文字列)における 0 オリジンの現在位置を返します.

getKeyPos()

引数

なし

戻り値

number

説明

打鍵列(普通は ascii 文字列)における 0 オリジンの現在位置を返します.

getMissCount()

引数

なし

戻り値

number

説明

ワード内でのミス数を返します.

メモ

判定モードが Cancelable である場合には,キャンセル入力中には正確な値が返らないことがあります.キャンセル入力の特性的にむずいんだけどここはもう少し頑張ってなんとかしたい.

なお stroke() の結果が 2, 3, 4 であった直後には正しい値が返ることが保証されます.

getNextKeys()

引数

なし

戻り値

string array

説明

直後に与えれば受理される打鍵文字の配列を返します.

メモ

表示されてる優先入力方法の打鍵もそうでない前向きの打鍵もキャンセル打鍵も同じ扱いってのはまずい気がするので要改良ねこれは.

stroke(k)

引数

k (string または number) : 入力する打鍵文字,またはその文字コード

戻り値

number : stroke() の結果を示す数

説明

打鍵をワードに反映させ,その打鍵の結果を返します.

strokeTest(k)

引数

k (string または number) : 入力する打鍵文字,またはその文字コード

戻り値

number : stroke() の結果を示す数

説明

打鍵をワードに反映させることなく,その打鍵をした場合の結果を返します.

prog()

引数

なし

戻り値

number : stroke() の結果を示す数

説明

一番優先扱いにある入力方法で,1 打分を強制的に進め(強制正打扱い),その stroke() 結果を返します.

メモ

こんなことは機能組み合わせて簡単にできるよなというサンプル的なもの.これだけとても意味的な処理で浮いてますがそういうわけです.

( selectNode(ns) )

引数

ns (object array) : 選択元ノード群

戻り値

object : 選択されたノードオブジェクト

説明

いくつも打鍵方法がある場合にどれを優先して表示するかを決定する内部関数.

外側から使うことはないと思われるが上書きすることは有用.

メモ

デフォルトでは少ない打鍵で遠くまで到達できる入力を優先し,あとはインデクスが小さいものを採用という手抜き(でもまあ使い物にはなる).

こだわろうと思うとどうしても打鍵情報をハードコーディングしなきゃならなかったり,入力方法の利用頻度とかゲーム側の設定だとか外部情報参照しなきゃならないので,それは開発物ごとにオーバーライドしてやってね,という思いを込めて関数化してある.

幸いにして js は無名関数とか非常に簡単お手軽な言語だし.

( selectNodeToTail(startNode) )

引数

startNode (object) : ノードオブジェクト

戻り値

object : 選択していった結果のノードオブジェクト

説明

ある位置から先の優先入力方法を順に決定して最後までノードを辿り,返す.ほぼ getKeyString() 用の内部関数.

メモ

名前の通り selectNode() を繰り返し呼んで手繰っていく実装になっているので,好みの表示を優先するのは selectNode() だけオーバーライドすればなんとかなるはず.

( calcShutPos(d) )

引数

d (object) : TsuikyoWord.dat オブジェクト

戻り値

boolean array : その位置でオートマトンが収束しているかのフラグリスト

説明

Cancelable 判定実装のための内部関数.dat を読んで,「そのノードを経由せずにはそのノードより先に進むことができないようなノード」(shutNode)のあるパース対象文字列位置を調べる.その位置まで来たらキャンセル入力用ノードをクリアする.

const etc

Tsuikyo において意味を持っている値などについて.

stroke() return val

type : number
0
誤打
1
正打で,特定の変換ルールの途中
2
正打で,特定の変換ルールを打ち終えた
3
正打で,特定の変換ルールを打ち終え,かつそのノードの直後でオートマトン上の経路が閉じている
4
正打で,続くノードがもうない(ワード末尾まで打ち切った)

conv

type : string
"roma"
デフォルトの MS-IME 互換ローマ字テープルを指す
(その他)
(v1.0.0 現在 roma テープルしか付属しないので)独自に変換テーブルを追加した場合は, その Tsuikyo.table 内要素名

flex

type : string, または number
"fixed"
0
表示する 1 通りの打ち方のみ受理する(柔軟判定 OFF)
この判定モードを使う場合 selectNode() の上書き等の工夫は必須かと.
"flex"
1
柔軟に受理するがキャンセル入力は受理しない(__TW, __TOD, e-typing 等と同等)
"cancelable"
2
キャンセル入力含め超柔軟に受理する(とりの氏案のオリジナル判定)