Jinja: Comportamento incorreto do filtro truncado

Criado em 3 abr. 2017  ·  4Comentários  ·  Fonte: pallets/jinja

Código:

from jinja2 import Template

print(Template('{{ "2016.10.26_cc37528" | truncate(11, True) }}').render())
print(Template('{{ "2016.10.26_cc37528" | truncate(12, True) }}').render())
print(Template('{{ "2016.10.26_cc37528" | truncate(13, True) }}').render())
print(Template('{{ "2016.10.26_cc37528" | truncate(14, True) }}').render())

Comportamento esperado

2016.10....
2016.10.2...
2016.10.26...
2016.10.26_...

Comportamento Real

2016.10....
2016.10.2...
2016.10.26_cc37528
2016.10.26_cc37528

Código do Modelo

{{ "2016.10.26_cc37528" | truncate(13, True) }}

Seu Ambiente

  • Versão Python: 3.6.1
  • Versão Jinja: 2.9.5

Comentários muito úteis

Isto é. Definir a margem de manobra como 0 corrige o problema. Eu diria que é uma violação da POLA ao usar cordas curtas.

Todos 4 comentários

Verifique se isso é causado pelo argumento leeway . O valor padrão para ele mudou recentemente.

https://github.com/pallets/jinja/blob/master/jinja2/filters.py#L467

Isto é. Definir a margem de manobra como 0 corrige o problema. Eu diria que é uma violação da POLA ao usar cordas curtas.

Sim, concordo @ AMDmi3 . Acabamos de abordar esse problema também.

O problema é que Jinja tem uma implementação opinativa que é incompatível com o uso como um mecanismo de modelagem de uso geral.

Eu também encontrei esse problema e passei várias horas procurando o bug. Claramente, as novas opções devem ser compatíveis com as versões anteriores e o padrão deve ser leeway = 0 .
Quem começar a usar a nova opção leeway saberá que ela existe e usará o valor que desejar. Quem não conhece o novo parâmetro não vai precisar mudar o código ...

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

Questões relacionadas

jp-costa picture jp-costa  ·  5Comentários

harobed picture harobed  ·  6Comentários

htgoebel picture htgoebel  ·  4Comentários

glasserc picture glasserc  ·  4Comentários

mtrstudio picture mtrstudio  ·  5Comentários