2016-04-26 31 views
12

私はyamlファイルを出力するのにjinja 2を使用していますが、末尾の改行とforループの終わりを取り除くことはできません。jinja2末尾の改行を取り除く方法

- request: 
    path: /some/path 
    headers: 
     origin: 'somedomain.com' 
     user-agent: 'agent' 
     referer: 'somedomain.com' 
     authority: 'somedomain.com' 
    querystring: 
     postcode: 'xxxxxx' 
     houseNo: '55' 

    response: 
    content: 
     file: address.json 

houseNo後に追加の不要な空白行の場合:例えば以下

- request: 
     path: {{ path }} 
     headers: 
      origin: 'somedomain.com' 
      user-agent: 'agent' 
      referer: 'some.domain.com' 
      authority: 'somedomain.com' 
     querystring: 
      {% for key, value in querystring.items() -%} 
      {{ key }}: '{{ value }}' 
      {% endfor %} 
     response: 
     content: 
      file: {{ content }} 

は私に出力を提供します。どうすればこの行を取り除くことができますか?

答えて

18

は、出力の上部と下部から空白を取り除くためにあなたのループを変更します(https://github.com/abourguignon/jinja2-live-parserを使用して)私のテストで

{% for key, value in querystring.items() -%} 
     {{ key }}: '{{ value }}' 
{%- endfor %} 

、「 - 最初の{%の後に来なければなりません。あなたが求めていることを達成するために最後のものの前ではありません。

ドキュメント:http://jinja.pocoo.org/docs/dev/templates/#whitespace-control

+0

うん、あなたは正しいです。追加するのではなく ' - 'を前に置くと、インデントが保持され、次の行のスペースが壊されることはありません。 – alecxe

+0

正直、私はもう一度それを回り終わるまで、このディテールを覚えていませんでした。 – tknickman

+4

私にとって、これはすべてのキー:値のペアを1行に置きます。なぜこの答えが受け入れられたのか分かりません。 – Honza

6

私はあなたがwhitespace control機能を使用してそれを取り除くことができると思います。したがって、私はendforブロックを{% endfor -%}に変更します。

それがそうですか? (「 - 」余分予告ループ近いために)

2

私はこの問題を解決する方法を見つけました:

- request: 
    path: {{ path }} 
    headers: 
     origin: 'somedomain.com' 
     user-agent: 'agent' 
     referer: 'some.domain.com' 
     authority: 'somedomain.com' 
    querystring: >- 
     {% for key, value in querystring.items() -%} 
     {{ key }}: '{{ value }}' 
     {% endfor %} 
    response: 
    content: 
     file: {{ content }} 
  • >|: "クリップ":末尾の空白行を削除し、改行を保ちます。
  • >-|=: "strip":改行を削除し、末尾の空白行を削除します。
  • >+|+: "keep":改行を保持し、末尾の空白行を残します。 スティーブ・ベネットのポスト

Thxを: In YAML, how do I break a string over multiple lines?

関連する問題