Stylus

Expressive, dynamic, robust CSS

Fork me on GitHub

イントロスペクション API 原文

Stylusはイントロスペクション(一般的には、リフレクション機能の一種で、依存関係など内部情報を返すインターフェース)APIをサポートしています。 これによりmixins とfunctionsの呼び出し元に応じて、その振舞いを変更させることが出来ます。

mixin

mixin は、関数内部に自動的に割り当てられるローカル変数です。 mixin は、トップレベルから呼び出されたことを示す root 文字列、 それ以外からの呼び出しを示す block 文字列、そして関数として戻り値を期待された場合を示す false で構成されています。

次の例では、reset() を定義し、下の3パターンに応じてその振舞いを変更しています。 トップレベルから呼び出された場合、それ以外から呼び出された場合、そして、foo プロパティの中で戻り値を期待されている場合。

  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";
    }