Jinja: A nova linha final é removida do modelo durante a renderização.

Criado em 2 mai. 2018  ·  2Comentários  ·  Fonte: pallets/jinja

Comportamento esperado

Ao renderizar um arquivo que termina em um caractere de nova linha (\ n), espero que a saída renderizada também termine em um caractere de nova linha. É uma convenção padrão em sistemas semelhantes ao UNIX terminar os arquivos de texto com uma nova linha à direita.

Comportamento Real

A nova linha final é removida da saída renderizada.

Exemplo

>>> c
u'foo is {{ foo }}\nquux is {{ quux }}\nasdf\n'
>>> t = jinja2.Template(c)
>>> t.render(foo="bar", quux="baz")
u'foo is bar\nquux is baz\nasdf'
>>> s = t.stream()
>>> s.next()
u'foo is \nquux is \nasdf'
>>> s.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ifreeman/.local/lib/python2.7/site-packages/jinja2/environment.py", line 1271, in __next__
    return self._next()
StopIteration
>>>

Seu Ambiente

  • Versão Python: 2.7.14+ (buster / teste Debian)
  • Versão Jinja: 2.10 (via pip)

Comentários muito úteis

Ok, obrigado pela resposta, eu não sabia se era uma opção, mas parece que esse deveria ser o padrão. Parece estranho supor que o usuário deseja modificar a entrada de maneiras inesperadas que nada têm a ver com a linguagem do modelo. Na verdade, estou até abrindo este problema porque estou usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar alguns arquivos em um trabalho de construção e percebi que estava gerando arquivos sem novas linhas, então, quando os acrescento, tenho as linhas comprimidas em uma linha. No início, eu ia abrir um problema com shinto-cli até que dei uma olhada no código-fonte e, em seguida, tentei um modelo jinja2 básico do REPL python e percebi que esse é apenas o comportamento padrão do jinja2.

Posso abrir um problema com shinto-cli para pedir que eles adicionem a opção keep_trailing_newline = True a todas as suas chamadas de ambiente.

Todos 2 comentários

Passe keep_trailing_newline=True para o Environment : http://jinja.pocoo.org/docs/api/#jinja2.Environment

Ok, obrigado pela resposta, eu não sabia se era uma opção, mas parece que esse deveria ser o padrão. Parece estranho supor que o usuário deseja modificar a entrada de maneiras inesperadas que nada têm a ver com a linguagem do modelo. Na verdade, estou até abrindo este problema porque estou usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar alguns arquivos em um trabalho de construção e percebi que estava gerando arquivos sem novas linhas, então, quando os acrescento, tenho as linhas comprimidas em uma linha. No início, eu ia abrir um problema com shinto-cli até que dei uma olhada no código-fonte e, em seguida, tentei um modelo jinja2 básico do REPL python e percebi que esse é apenas o comportamento padrão do jinja2.

Posso abrir um problema com shinto-cli para pedir que eles adicionem a opção keep_trailing_newline = True a todas as suas chamadas de ambiente.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

hvnsweeting picture hvnsweeting  ·  4Comentários

harobed picture harobed  ·  6Comentários

htgoebel picture htgoebel  ·  4Comentários

glasserc picture glasserc  ·  4Comentários

DriverX picture DriverX  ·  4Comentários