イントロスペクションAPI
StylusはイントロスペクションAPIをサポートしています。これにより、mixinや関数は呼び出し元などに対して相対的に反映することができます。
mixin
ローカル変数`mixin`は、関数本体内で自動的に割り当てられます。関数がルートレベルで呼び出された場合は文字列`root`、そうでない場合は`block`、そして呼び出された関数が戻り値を期待する場合は`false`が含まれます。
以下の例では、`reset()`を定義して、ルートにmixinされるか、別のブロックにmixinされるか、または以下の`foo`プロパティで使用されているように戻り値にmixinされるかによって、その動作を変更しています。
reset()
if mixin == 'root'
got
root true
else if mixin
got 'a mixin'
else
'not a mixin'
reset()
body
reset()
foo reset()
reset()
if mixin == 'root'
got
root true
else if mixin
got 'a mixin'
else
'not a mixin'
reset()
body
reset()
foo reset()
コンパイル結果
got {
root: true;
}
body {
foo: "not a mixin";
got: "a mixin";
}
got {
root: true;
}
body {
foo: "not a mixin";
got: "a mixin";
}