工事中
Javascriptで処理を定義できる。
デバッグが難しいので、 大掛かりなものはソースコードを修正したほうが良いと思う。
例を示す。 コンテンツ内の全ての小文字を大文字に変換する。 標準機能のcapitalizeと同じ処理を関数で実現した場合。
script要素は部品を置ける場所ならどこにでも書ける。
1 2 3 4 5 6 7 8 9 10 11 |
|
script内に書く。
1 2 3 4 5 |
|
このスクリプトはbuild前に一度だけ呼ばれる。
thisはdefineFunctionメソッドと 定義済み関数のリストだけがしまわれている。
任意の文字列。
英数字
callで呼び出される名前。
関数。次節を参照。
thisは
function(attributes,contents){
let result = F(contents);
return result;
}
評価済み。 連想配列で値は文字列化されている。
なおcallでは任意の属性を指定できる。
<call name="hoge" arg1="a">{{contents}}</call>
のように呼び出したとき、
attributes.arg1 === "a"
評価済み。doc形式。 配列かundefined。
listModeによって変わる。
<call name="hoge" listMode="array">a{{}}<text>c</text></call>
<!-- JS:[ "a", undefined, "c" ] -->
doc形式を返す。
this.error(), this.fatal() を使う。
spelamの内部データ形式。 contents, 変数の値がdoc形式。
以下のいづれか。再帰的に定義される。
undefined ({{null}}の内部形式)
文字列
DOM要素
docの配列
str = this.docToString(doc);
docをDOM要素にする。 配列の場合は、DocumentFragmentを作成するので注意。
node = this.docToNode(doc);
```
変数の取得。結果はdoc。
doc = this.getVar('name');
DOM要素の作成。
node = this.createElement('div',
{'class':'hoge'},
doc
);
node = this.cloneNode(doc);
メッセージを出力する。 制御は通常戻ってくるが、 エラーの個数の上限を超えた場合ビルドを終了する。
this.error(`message`);
メッセージを出力し、ビルドを終了する。
this.fatal(`message`);