Private KeeperPrivate Keeper
in-Line Kit

Служебные команды

Время, управляющие символы, кодирование значений цикла, границы разбора, очистка журнала и наследование основного результата.

Служебные команды решают задачи, которые не являются обычным преобразованием строки: вставляют время, обозначают границу разбора, меняют подготовку циклического запроса или очищают готовый журнал. У них разные формы записи, поэтому нельзя по привычке окружать каждую команду второй такой же меткой.

Формы записи

ФормаКомандыКак читается
Одиночная метка|MAINLOG|, |TIMESTAMP|, |TIMESTAMPMS|Вся метка заменяется готовым значением
Аргумент до следующей черты|ANSI|13|, |TIME|-|, |DATE|/|Текст после имени является числом или разделителем; повтор имени не нужен
Парный блок|CLEAR|...|CLEAR|Обрабатывается только содержимое между двумя одинаковыми метками
Маркер поля или настройки|USEURLENC|, |FIRSTCHAR|, |LASTCHAR|, |LDEL|, |RDEL|Маркер изменяет обработку окружающего поля и сам не является возвращаемым текстом
Работает

|ANSI|13| содержит один числовой аргумент и закрывающую вертикальную черту.

Ошибка

|ANSI|13|ANSI| ошибочно превращает команду с аргументом в парную функцию и оставляет лишний текст.

Что выбрать

Дата и время

|TIME| и |DATE| дают привычную запись для человека; |TIMESTAMP| и |TIMESTAMPMS| дают число Unix для запросов и подписей.

Циклический запрос

|USEURLENC| кодирует каждое значение циклического разборщика перед подстановкой в адрес, заголовки или тело запроса.

Границы разбора

|FIRSTCHAR| и |LASTCHAR| обозначают края ответа, а |LDEL| и |RDEL| добавляют текст вокруг выбранной группы регулярного выражения.

Журнал и файлы

|CLEAR| удаляет пустые строки, а |MAINLOG| вставляет основной журнал в дополнительный файл.

Основной журнал в дополнительном файле

|MAINLOG| доступен в теле дополнительного файла и вставляет уже подготовленный основной журнал текущего результата. Команда не читает журнал другого потока или прошлого запуска.

Пусть основной журнал равен:

[email protected] — письмо найдено

Тело дополнительного файла:

Результат проверки:
|MAINLOG|

Получившийся файл:

Результат проверки:
[email protected] — письмо найдено

Команда может быть единственным содержимым файла или частью шаблона. В обычном адресе запроса, заголовке или теле запроса она не означает «последний ответ»; для сетевого ответа используется |RESPONSE|.

Работает

Дополнительный файл содержит заголовок, затем |MAINLOG|, поэтому к основному результату добавляется понятное имя раздела.

Ошибка

Подстановка |MAINLOG| в адрес запроса смешивает назначение файла результата и сетевого поля; интерпретатор такого договора не задаёт.

Кодирование значения цикла

|USEURLENC| ставится в адресе, заголовках или теле циклического запроса. Если маркер присутствует в поле, каждое значение |REGEXCYCLE|[n], |PARSCYCLE|[n] или пользовательского цикла кодируется для безопасной подстановки в адрес, а сам маркер удаляется перед отправкой.

Пусть первая строка циклического результата равна red shoes/42:

https://example.test/search?q=|REGEXCYCLE|[1]|USEURLENC|

Первый запрос получит адрес:

https://example.test/search?q=red%20shoes%2F42

Маркер относится ко всему полю: если в одном поле подставляются несколько циклических значений, они кодируются по одному и тому же правилу.

|USEURLENC| не предназначен для одиночного |PARS|[n], |REGEX|[n] или обычной переменной. Для одного значения используйте функцию |URLENCODE|...|URLENCODE|; иначе служебный маркер может остаться в тексте поля.

Символ по числовому коду

|ANSI|ЧИСЛО| заменяется одним символом с указанным числовым кодом. Надёжно переносимы коды ASCII от 0 до 127; значения от 128 до 255 зависят от кодовой страницы Windows, поэтому для обычного текста лучше использовать сам знак в Юникоде.

Два последовательных знака создают перевод строки Windows:

Первая строка|ANSI|13||ANSI|10|Вторая строка

Результат:

Первая строка
Вторая строка

Часто используемые значения:

КодСимвол
9знак табуляции
10перевод строки
13возврат каретки
32пробел

Аргумент должен быть целым числом. Если преобразование невозможно, текущая реализация не подставляет символ и оставляет неразобранную команду, поэтому результат с текстом |ANSI|...| нужно считать ошибкой шаблона.

Дата и время

|TIME|

Форма записи — |TIME|РАЗДЕЛИТЕЛЬ|. Команда берёт текущее местное время в формате Windows и заменяет двоеточия указанным разделителем.

Если исходное время равно 09:07:05, выражение:

|TIME|-|

вернёт 09-07-05. Пустой разделитель записывается как |TIME|| и для того же времени вернёт 090705.

|DATE|

Форма записи — |DATE|РАЗДЕЛИТЕЛЬ|. Команда берёт текущую местную дату в формате Windows и заменяет точки указанным разделителем.

Если исходная дата равна 02.08.2026, выражение:

|DATE|/|

вернёт 02/08/2026.

Формат и порядок частей задаются региональными настройками Windows. Если система выводит дату через / или время без секунд, команда не добавляет отсутствующие части и не превращает запись в единый международный формат.

Для подписи запроса

Используйте |TIMESTAMP| или |TIMESTAMPMS|: связанные части одного вычисления получат согласованное число.

Для показа человеку

Используйте |TIME| и |DATE|, если формат Windows и местный часовой пояс являются частью ожидаемого результата.

Края ответа

|FIRSTCHAR| и |LASTCHAR| являются особыми границами в настройке обычного разборщика. Они не возвращают первый или последний знак как самостоятельные переменные.

Пусть ответ равен:

prefix<body>Hello</body>suffix
Начальная границаКонечная границаРезультат
|FIRSTCHAR|<body>prefix
<body></body>Hello
</body>|LASTCHAR|suffix
|FIRSTCHAR||LASTCHAR|весь ответ

В правиле замены эти маркеры имеют ещё одно точное значение: |FIRSTCHAR| как заменяемое значение удаляет первый знак строки, а |LASTCHAR| удаляет последний.

Работает

Начало |FIRSTCHAR| и конец <body> явно означают участок от самого начала ответа до первой найденной границы.

Ошибка

Запись (|FIRSTCHAR|текст|FIRSTCHAR|) ошибочно обращается с маркером границы как с парной строковой функцией.

Текст вокруг группы

|LDEL| и |RDEL| используются в списке групп разборщика по регулярному выражению. Они добавляют постоянный текст слева и справа от непустой группы.

Точная форма одной строки списка:

|LDEL|ТЕКСТ_СЛЕВА|НОМЕР_ГРУППЫ|RDEL|ТЕКСТ_СПРАВА|

Пусть выражение order:(\d+) нашло order:42, а группа 1 равна 42. Строка:

|LDEL|Заказ № |1|RDEL| найден|

добавит в результат:

Заказ № 42 найден

|LDEL| владеет только текстом слева, |RDEL| — только текстом справа, а между ними обязательно находится целый номер группы. Если группа пуста, эта строка списка не добавляет ни группу, ни окружающий текст. Несколько строк групп соединяются в заданном порядке.

Без оформления

Строка 1 возвращает только содержимое первой группы.

С оформлением

Строка |LDEL|[|1|RDEL|]| возвращает первую группу в квадратных скобках.

Очистка строк журнала

|CLEAR|...|CLEAR| обрабатывает многострочный участок основного журнала или дополнительного файла после подстановки переменных. Из участка удаляются:

  • пустые строки и строки, содержащие только пробелы;
  • вся строка, в которой осталось значение |NOT USED| от неиспользованного результата.

Шаблон:

|CLEAR|
Логин: |LOGIN|

Код: |PARS|[1]
Состояние: готово
|CLEAR|

Если логин равен [email protected], а первый результат разборщика не использовался и превратился в |NOT USED|, итог будет таким:

Логин: [email protected]
Состояние: готово

Команда удаляет всю строку с |NOT USED|, включая постоянную подпись Код:. Она не убирает пустые строки во всём документе вне своих двух границ и не предназначена для изменения тела сетевого запроса.

Пустая пара |CLEAR||CLEAR| просто исчезает. Если закрывающей метки нет, граница участка не определена, поэтому всегда ставьте вторую |CLEAR| после последней очищаемой строки.

Номер результата

Квадратные скобки принадлежат переменным с номером или именем, а не всем служебным командам:

  • |PARS|[1] — первый результат обычного разборщика;
  • |REGEX|[2] — второй результат разборщика по регулярному выражению;
  • |DV|[Token] — динамическая переменная с именем Token;
  • |ANSI|13| — числовой аргумент команды, поэтому квадратные скобки здесь не используются.

Номера результатов начинаются с единицы. Полные правила доступности и области значений приведены в основах языка.