Как я могу обнаружить последний элемент цикла for в шаблоне Pebble? - PullRequest
0 голосов
/ 02 июня 2018

Как я могу обнаружить последний элемент в списке в цикле for в шаблоне Pebble (http://www.mitchellbosecke.com/pebble/home)?

Я использую Pebble для генерации JSON. У меня есть список объектов, которые необходимо перебратьи мне нужно добавить запятую после каждого, кроме последнего.

Вот соответствующий шаблон кода, где я устал использовать loop.index и loop.length в операторе IF., но это нене работает (в любом случае мне нужно проверить на loop.length -1).

Шаблон:

"menu": {
    "items": {
    {% for menuItem in menuItems %}
    "{{ menuItem.name }}": "{{ menuItem.value }}"{%- if loop.index < loop.length %},{% endif %}
    {%- endfor %}
    }
}

Пример требуемый Выход:

"menu": {
    "items": {
         "item1": "Item 1",
         "item2": "Item 2
    }
}

Ранее я использовал шаблонизатор Jinja2 Python, синтаксис которого похож на Pebble. Jinja2 также имеет свойство index.last, которое является логическим и может использоваться в выражении IF, подобном этому.Не знаю ничего подобного в Пеббле.

Натан

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Находясь внутри цикла, Pebble предоставляет несколько специальных переменных, которые помогут вам:

  • loop.index: индекс, начинающийся с нуля, который увеличивается с каждой итерацией.
  • loop.length: размер объекта, для которого мы выполняем итерацию.
  • loop.first: True, если первая итерация
  • loop.last: True, если последняя итерация
  • loop.revindex: количество итераций с конца цикла

Документация обновлена ​​с отсутствующими переменными здесь

https://github.com/PebbleTemplates/pebble/wiki/for

0 голосов
/ 26 июня 2018

Прежде всего, я думаю, что вы должны проверить выделенные библиотеки JSON, такие как Jackson или GSON.Это может быть более приспособлено к тому, что вы пытаетесь сделать.

Тем не менее, я столкнулся с той же проблемой, и последняя версия включает в цикл свойства loop.first loop.last и loop.revindex.

Я нашел это в следующем тесте.

https://github.com/PebbleTemplates/pebble/blob/11dd4783d44afbeb269c9d98cf9579aad0e53394/pebble/src/test/java/com/mitchellbosecke/pebble/CoreTagsTest.java#L177

...