私は現在、私が開発している (非常に限られた対象ユーザー) プラグインの一部である 2 つのマクロを持っています。どちらも基本的には次のようになります。
(function(){
exports.name = "name";
exports.params = [
{name: "value"}
];
function get(tiddler) {
// return some contents of some tiddler fields according to some rule
}
function parse(data) {
// convert string to some kind of useful object
}
function logic(x, y) {
// determine whether the two objects correspond in some way
};
function format(data, title) {
// produce WikiText for a link with some additional decoration
};
exports.run = function(value) {
value = parse(value);
var result = [];
this.wiki.each(function(tiddler, title) {
var data = get(tiddler);
if (data !== undefined && logic(value, parse(data))) {
result.push(format(data, title));
}
});
return result.join(" | ");
};
})();
したがって、個別に考えると、それらはすでにかなりきれいに分解されています。問題は、コアだけがlogic
2 つのマクロ間で実際に異なっていることです。関数を共有したり、マクロ間で共有したりするにはどうすればよいget
ですlogic
かformat
? それらを別のティドラーに入れてみましたが、うまくいきません。マクロが実行されると、TW は関数が「定義されていない」と主張するエラーを発生させます。各関数を独自の javascript マクロとして個別のティドラーにラップします。
(function(){
exports.name = "get";
exports.params = [
{name: "tiddler"}
];
exports.run = function(tiddler) {
// return some contents of some tiddler fields according to some rule
}
})();
も役に立ちませんでした。
get
メインの/ parse
/ logic
/format
プロセスをカスタム フィルターに変えて、通常のフィルター式で反復処理を行い、ウィジェットや <> マクロなどを使用して、これをよりモジュール化/柔軟に設定したいと思います。アイテムを表示します。これをどのように正確に設定しますか?ドキュメントは私に教えてくれます
提供されたフィルター演算子が十分でない場合、開発者は
filteroperator
型のモジュールを追加することで新しいフィルターを追加できます
しかし、これに関する API のドキュメントや例は見つかりません。