С помощью макроса шаблона вывода [SORT] можно производить сортировку строковых или числовых элементов в заданном порядке.
Синтаксис макроса
1 | [SORT(Параметры)]Текст[/SORT] |
В качестве основных параметров необходимо указать разделители элементов на входе и на выходе
на входе – чем разделены сортируемые элементы в Тексте, который поступает в макрос для обработки
на выходе – чем разделять отсортированные макросом элементы при их добавлении в результат
Разделители элементов указываются через символ вертикальной черты, например, макрос
1 | [SORT(,|{br})]c, a, b[/SORT] |
Даст результат
1 2 3 | a b c |
Макрос разделил элементы текста по указанному символу запятой, отсортировал их в алфавитном порядке и вывел, через указанный разделитель {br} (перенос строки).
В разделителях можно экранировать следующие символы:
Перенос строки -> {br}
Символ вертикальной черты -> {sep}
Также в параметрах, помимо разделителей, можно указывать и модификаторы (дополнительные параметры), например, макрос
1 | [SORT(,|{br}{invert}{dupignore})]c, a, a, b[/SORT] |
Даст результат
1 2 3 | c b a |
Так как модификатор {invert} переключает сортировку с возрастания на убывание, а модификатор {dupignore} удаляет дубли элементов.
Описание модификаторов:
{numbers} – включение режима сортировки чисел
{dupignore} – удаление дублей элементов
{invert} – переключение режима сортировки с возрастания на убывание
{inverse} – включение режима вывода элементов в обратном порядке
{maximal_elements}n{/maximal_elements} – максимальное число выводимых элементов (n)
В тексте с сортируемыми элементами можно использовать оператор {SORTVALUE}. В этот оператор помещается значение, по которому нужно сделать сортировку элементов.
Например, есть текст
1 2 3 | Красный (3) Зеленый (2) Синий (1) |
И нужно строки этого текста отсортировать по возрастанию чисел, размещенных в скобках.
Для этого в текст, например, функцией поиск-замены (которая сработает перед макросом [SORT]) можно добавить операторы {SORTVALUE}, чтобы получилось так
1 2 3 4 5 | [SORT({br}|{br})] Красный ({SORTVALUE}3{/SORTVALUE}) Зеленый ({SORTVALUE}2{/SORTVALUE}) Синий ({SORTVALUE}1{/SORTVALUE}) [/SORT] |
В этом случае макрос [SORT] даст следующий результат
1 2 3 | Синий (1) Зеленый (2) Красный (3) |
Как видим, упорядочивание произошло не по целым значениям элементов, а именно по значениям операторов SORTVALUE.
Таким образом, например, можно сортировать значения циклов повторяющихся границ парсинга или другие данные.
Добавление данных к выводу первых и последующих отсортированных элементов
Например, стоит задача отсортировать числа 1, 2, 3 и вывести их в столбец CSV с добавлением данных к первому и/или последующим выводимым отсортированным элементам.
Для этого можно воспользоваться параметрами:
{first_element_template}Добавление данных к первому элементу[CSVCS]{element_value}{/first_element_template}
{other_elements_template}К остальным элементам[CSVCS]{element_value}{/other_elements_template}
Где {element_value} будет выводить значение элемента. То есть, разместив данные вокруг {element_value} вы будете добавлять их к началу или к концу выводимых элементов.
Параметры {first_element_template} и {other_elements_template} (в отличие от модификаторов) вставляются внутрь макроса [SORT].
Например, конструкция
1 | [SORT(,|[CSVLB]{numbers})]{first_element_template}Добавление данных к первому элементу[CSVCS]{element_value}{/first_element_template}{other_elements_template}К остальным элементам[CSVCS]{element_value}{/other_elements_template}1,2,3[/SORT] |
Даст результат
То есть, к первому выводимому элементу добавилось, что прописано в параметре {first_element_template}, а к остальным элементам добавилось, что прописано в параметре {other_elements_template}.