Сортировка строковых или числовых элементов текста (макрос шаблона вывода [SORT])

С помощью макроса шаблона вывода [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]

Даст результат

Результат в виде CSV

То есть, к первому выводимому элементу добавилось, что прописано в параметре {first_element_template}, а к остальным элементам добавилось, что прописано в параметре {other_elements_template}.


1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 2, средний балл: 5.00)

Loading...
Автор: admin, 19 July 2020
Рубрики: макросы шаблона вывода
Tags: ,

Последние статьи

css.php