TJSの便利げな関数群 TJSの、「あったら便利」…じゃないかなー、と思う関数群を集めて みました。 ***************************************************************************** 使い方: 最初にどこかで一度だけ以下のようにして TJSFunctions.ks を呼ぶだけ。 [call storage=TJSFunctions.ks] この後はTJSから以下の関数が使用できるようになる。 ***************************************************************************** 関数名: keys(dic) 説明: 辞書配列から、キーだけを取り出して配列を作って返す。perl の keys() と ほぼ同じ。 引数: dic 対象の辞書配列 返り値: 新規作成されたキーの配列 関数名: remove_keys(dic, removekeys=[]) 説明: 辞書配列から、指定されたキーだけを削除する。 引数: dic 対象の辞書配列(上書きされる) removekeys 削除するキーの配列 返り値: dic 関数名: marge_dic(keys(dic, elm, calc='or', exceptkeys=[]) 説明: 辞書配列を統合する。統合には、and 統合と or 統合が指定できる。 引数: dic 対象の辞書配列(上書きされる) elm 統合相手の辞書配列(参照のみ) calc 統合方法。'or'(default)と'and'のいずれか exceptkeys dicにこのキーがあったらそのままにし、and/orいずれでも 統合しない 返り値: dic 関数名: numerize_dic(dic, intkeys=[], realkeys=[], strkeys=[]) 説明: 辞書配列中で、int/real/stringに変換できそうなものを変換する。 intkeys/realkeys/strkeys いずれも指定されていなければ自動変換を 試みる 引数: dic 対象の辞書配列 intkeys 整数に変換する対象キー realkeys実数に変換する対象キー strkeys 文字列に変換する対象キー 返り値: dic 関数名: selectcopy_dic(obj, src, keyary) 説明: 辞書配列src中で、keyaryで指定されたキーの値のみをobjにコピーする。 引数: obj コピー先辞書配列(元からあるキーは変化しないか上書きされる) src コピー元辞書配列 keyary コピー元に存在すればコピー対象とするキー配列 無指定で単純に src => obj コピーを実施 返り値: obj 関数名: setOptions_sub(obj, elm, exceptkeys=[]) 説明: オブジェクトインスタンスのプロパティに、辞書配列の中身を設定する。 dic.xxx と elm.xxx が両方存在したときに 引数: obj 対象インスタンス elm 辞書配列 exceptkeys elm に存在してもインスタンスを上書きしないキー配列 返り値: なし 関数名: create_dic(dic1=%[], dic2=%[], calc='or', exceptkeys=[]) 説明: dic1とdic2を統合し、dic2で上書きした新たな辞書配列を作成して返す ※dic1/dic2は変更されない。 引数: dic1 対象の辞書配列1 dic2 対象の辞書配列2 calc 統合方法。'or'(default)と'and'のいずれか exceptkeys dic1にこのキーがあったらそのままにし、and/orいずれでも 統合しない 返り値: 新規作成された辞書配列 関数名: findStorage(fnam, exp) 説明: 吉里吉里で使用可能なファイルを検索する。拡張子の配列が指定でき、 いずれかの拡張子のものを検索してくる。 引数: fnam 対象ファイル名(拡張子あってもいいが普通は除く) exp '.'を含む拡張子配列(例: [ ".mp3", ".wav", ".ogg" ]) 返り値: 発見したファイル名(パスは含まない) 関数名: printObject(objstr) 説明: あるオブジェクトインスタンスの内容を表示する。デバッグ用。 あまり大きなオブジェクトを指定すると、すぐスタック不足になる ので注意。 引数: objstrオブジェクトの文字列(例: "kag.conductor.macros") 返り値: なし 関数名: em(str) 説明: エラーメッセージを表示する。sf.emtype が定義されていれば、ログに エラーを残すだけだが、定義されていなければうるさいくらいに ポップアップウインドウを表示する。デバッグ用にdm()とSystem.inform() をあわせたもの。 引数: エラーメッセージ文字列 返り値: なし 関数名: kageval(kagscript) 説明: 指定されたkagスクリプトを実行する。TJS上から実行できて便利。 ただし、コンダクタは現在のものを流用するので、これを実行する前に、 KAGスクリプトは[s]などで停止していなければならない。 引数: KAGスクリプト文字列。"を含むことができないことに注意。'で代用せよ。 返り値: なし 関数名: getMaxLayerAbsolute(layer) 説明: あるレイヤの子レイヤを調べて、その最高のabsolute 値を返す。 引数: 調査するレイヤ 返り値: absolute 最高値 関数名: getMaxKAGAbsolute() 説明: KAGレイヤ(前後含む)の子レイヤを調べて、その最高のabsolute 値を 返す。 引数: なし 返り値: absolute 最高値(実際には+1を返すようになってた。あれー?)