2012-05-30 2 views
15

ファイル内にインクルードまたはマクロを追加するときにインデントを保持する方法があるのだろうかと思います。 jinjaを使ってコードファイルを生成したいと思います。例は以下のようになりジンジャーはインクルードまたはマクロにインデントを付けます

ファイル:class.html

class MyClass: 
    def someOp(): 
     pass 

    {% include "someOp.html" %} 

ファイル:someOp.html

def someOp2(): 
    pass 

テンプレートの結果は次のようになります。

class MyClass: 
    def someOp(): 
     pass 

    def someOp2(): 
     pass 

もしそこに任意のjinjaがincludeファイルの各行にインクルードタグの前にインデントを付加する方法はありますか?または、これを行うためにジンジャをカスタマイズする方法はありますか?

+0

これも私が見たいものです。 –

答えて

13

一つの方法は、マクロが関数であるので、その出力はインデントフィルターを通過することができ、その後、マクロに含めるラップすることです:デフォルトの「インデント」インデント4つのスペースで

class MyClass: 
    def someOp(): 
     pass 

    {% macro someop() %}{% include "someOp.html" %}{% endmacro %} 
    {{ someop()|indent }} 

とし最初の行を字下げしないでください。 'indent(8)'をさらにインデントするには、http://jinja.pocoo.org/docs/templates/#list-of-builtin-filtersを参照してください。

あなたが含んでいるものがマクロとして定義されている場合は、それ以降のラッパーマクロは必要ありません。インデントフィルターを使用するとすぐにジャンプできます。

+16

答えをくれてありがとう、私の必要性はほとんど同じですが、明示的にレベルを述べるのではなく、その行のインデントレベルを使用できるようにすることはできますか? – Razvi

関連する問題