■はじめに このプラグインは、 「TJSによる独自クラスを辞書配列化/復元する」プラグインです。 おまけで、toStringメソッドもつけてあります。 ■導入方法 first.ks等で以下を実行してください。 [eval exp="Scripts.execStorage('ObjectUtil.tjs');"] 以降、当プラグインの機能が使用できるようになります。 ■内容について このObjectUtilは、toString、store、restoreの三つのメソッドを提供します。 コードを直接見ると、他にも色々メソッドがあると思いますが、 これらは内部で使用するメソッド達なので、 使用者が意識するのは、toString、store、restoreのみです。 ■toString(value) 第一引数に渡されたインスタンスを再帰的に解析し、 内部構造をインデントした状態の文字列で返します。 メソッド、プロパティは無視されます。 ※ 配列、辞書配列以外のTJS標準クラス(Date)は、うまく変換されません。 ※ 標準クラスは、instanceofやtypeofの戻り値が期待どおりにならないためです。 ※ 多分、cppで直接書かれているため。 ※ コードを見ると、第二引数としてnestNumを持っていますが、 ※ これは再帰処理をする上でインデントを管理するための引数のため、 ※ 使用者が特に気にする必要はありません。第一引数だけ指定すれば、動作します。 ■store(value) 第一引数に渡されたインスタンスを再帰的に解析し、 辞書配列型に変換して、戻り値として返します。 配列は、そのまま配列として格納されます。 メソッド、プロパティは無視されます。 ※ 配列、辞書配列以外のTJS標準クラス(Date)は、うまく変換されません。 ※ 理由はtoString同様。 ■restore(dic) 第一引数に渡された辞書配列を再帰的に解析し、 独自クラスのインスタンスを復元して、戻り値として返します。 復元するにあたり、独自クラスはいくつかのコーディングルールを守る必要があります。 1) クラス名を保持するフィールド変数「className」を持つ。 2) コンストラクタが引数なしを許容する。(=落ちない) 3) 配列、辞書配列以外のTJS標準クラスをフィールド変数として持たない。理由はtoString同様。