Уникальный фильтр в нунджуке - PullRequest
0 голосов
/ 10 апреля 2019


systems:
- name: Fred
  country: DE
- name: Wilma
  country: US
- name: Pebbles
  country: DE
- name: Dino
  country: US

---

# Systems 

Countries: {{ page.systems | join(",", "country") }}

Я пытаюсь создать страницу GitBook со списком элементов, не содержащих дубликатов. Т.е. я хотел бы применить «уникальный» фильтр или «отдельный» фильтр в моем шаблоне Nunjucks для страницы. Шаблон должен обрабатывать переменные страницы (YAML). Приведенный выше шаблон генерирует вывод:

Countries: DE,US,DE,US

Я бы хотел, чтобы он выдал вывод

Countries: DE,US

Как я мог достичь этого? (Учитывая, что «уникальный» фильтр не поддерживается с Nunjucks.)

1 Ответ

0 голосов
/ 11 апреля 2019

Вы можете расширить свои Nunjucks через Пользовательский фильтр

const nunjucks = require('nunjucks');
const env = new nunjucks.Environment(/* loaders etc... */);
env.addFilter('unique', arr => arr instanceof Array && arr.filter((e, i, arr) => arr.indexOf(e) == i) || arr);

let out = env.renderString(`{{[1, 2, 3, 2] | unique }}`);
console.log(out);
...