Методы для работы с регистром
Normalize
Команда normalize используется для манипуляции с данными находящимися в регистре.
Обратите внимание!
Команда normalize работает только с регистром.
На вход она получает данные из регистра, и по окончанию работы она возвращает результат в регистр. Некоторые режимы требуют на вход дополнительные аргументы, например replace_substring требует на вход список из регулярных выражений для поиска и значений для замены.
Пример записи команды:
- normalize:
# ВКЛЮЧАЕТЕ НУЖНЫЙ ВАМ РЕЖИМ
routine: replace_substring
# ПЕРЕДАЕТЕ ДОПОЛНИТЕЛЬНЫЕ АРГУМЕНТЫ, ЕСЛИ ОНИ ТРЕБУЮТСЯ
args:
- ^\s+|\s+$: ''
Поддерживаются следующие режимы (routine):
Режим | Описание |
---|---|
replace_substring | Ищет в регистре все вхождения искомой подстроки и меняет их на заданную. Искомая подстрока может быть задана в виде регулярного выражения. Формат передачи пары: подстрока_которую_меняем: подстрока_на_которую_меняем. Пары передаются в параметре args. Можно передавать больше одной пары, поиск и замена в этом случае будет происходить последовательно. |
replace_matched | Ищет в регистре хотя бы одно вхождение искомой подстроки и если она найдена - меняет все значение регистра на заданное. Искомая подстрока может быть задана в виде регулярного выражения. Формат передачи пары: подстрока_которую_ищем: текст_который_пишем_в_регистр. Пары передаются в параметре args. Можно передавать больше одной пары, поиск в этом случае будет происходить последовательно до первого соответствия. Если соответствие не найдено, регистр остается неизмененным. |
increment | Увеличивает значение регистра на 1, в регистре должно быть целочисленное значение. |
decrement | Уменьшает значение регистра на 1, в регистре должно быть целочисленное значение. |
capitalize | Меняет первую букву каждого слова содержимого регистра на заглавную. Исключение составляют короткие соединительные слова (or, and, of и т.д.). |
upper_first | Меняет первую букву содержимого регистра на заглавную. |
upper | Меняет все буквы содержимого регистра на заглавные. |
lower | Меняет все буквы содержимого регистра на строчные. |
url | Нормализует URL, если он относительный и делает его абсолютным. |
escape_html | Преобразует ряд символов, недопустимых в HTML в HTML-сущности. |
unescape_html | Преобразует все HTML-сущности в регистре в соответсвующие им символы. |
urlencode | Кодирует содержимое регистра для использования в качестве параметра для GET запроса в URL. |
urldecode | Декодирует содержимое регистра. Операция, обратная предыдущему режиму. |
json2xml | Трансформирует данные из регистра формата JSON в формат XML. |
transit2xml | Трансформирует данные из регистра формата Transit+JSON в формат XML. Работает аналогично предыдущему режиму. |
base64 | Кодирует содержимое регистра в Base64. |
base64_decode | Декодирует содержимое регистра из Base64. |
base64gzip_decode | Декодирует содержимое регистра, если оно в формате Base64GZIP. |
base64zip_decode | Декодирует содержимое регистра, если оно в формате Base64ZIP. |
base64deflate_decode | Декодирует содержимое регистра, если оно в формате Base64Deflate. |
base64zlib_decode | Декодирует содержимое регистра, если оно в формате Base64ZLIB. |
md5 | Считает сумму MD5 содержимого регистра. |
signature | Делает цифровую подпись для содержимого регистра, используя заданный алгоритм и шифр, а также кодирует, используя заданную кодировку. |
date_format | Манипулирует датой и временем. |
Рассмотрим режимы более подробно и в качестве примера возьмем следующий фрагмент HTML кода:
<div class="container">
<ul class="list">
<li class="item" id="li1">Text and text</li>
<li class="item" id="li2">text and text</li>
<li class="item" id="li3">01/21/2017</li>
<script>
var items = {"items":[{"item": {"somefield1": "text", "somefield2": "another text"}}]};
</script>
</ul>
<a href="sandbox.html">Link</a>
</div>
Режимы replace_substring и replace_matched работают следующим образом:
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# КОМАНДОЙ `parse` ЗАПОЛНИМ РЕГИСТР ТЕКСТОМ, В РЕГИСТРЕ БУДЕТ "Text and text"
- parse
# ТЕПЕРЬ ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: replace_substring
args:
# ПЕРВЫМ ДЕЛОМ ЗАМЕНИМ СЛОВО "text" НА "some another text"
- text: 'some another text'
# ПОСЛЕ ЭТОЙ ОПЕРАЦИИ В РЕГИСТРЕ НАХОДИТСЯ "Text and some another text"
# ТЕПЕРЬ ЗАМЕНИМ СЛОВО "and" НА "or"
- and: or
# ПОСЛЕ ЭТОЙ ОПЕРАЦИИ В РЕГИСТРЕ НАХОДИТСЯ "Text or some another text"
# И НАКОНЕЦ ЗАМЕНИМ СЛОВО "another" НА "other"
- another: other
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "Text or some other text"
# ОБРАТИТЕ ВНИМЕНИЕ!
# `replace_matched`, В ОТЛИЧИИ ОТ `replace_substring`, РАБОТАЕТ ДО ПЕРВОГО СОВПАДЕНИЯ
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОМ
- parse
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: replace_matched
args:
# ПЕРВЫМ ДЕЛОМ ЗАМЕНИМ ЗНАЧЕНИЕ РЕГИСТРА НА УКАЗАННОЕ "some another text"
# ЕСЛИ В СОДЕРЖИМОМ РЕГИСТРА ПРИСУТСТВУЕТ СЛОВО "text"
- text: 'some another text'
# ПОСЛЕ ЭТОЙ ОПЕРАЦИИ В РЕГИСТРЕ НАХОДИТСЯ "some another text"
# ВНИМАНИЕ! ВЫПОЛНЕНИЕ ПРЕКРАЩАЕТСЯ ТАК КАК ПРОИЗОШЛО СОВПАДЕНИЕ
# ПО ПЕРВОМУ АРГУМЕНТУ, НИЖЕ ИДУЩИЕ АРГУМЕНТЫ БУДУТ ПРОИГНОРИРОВАНЫ
- and: or
- another: other
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "some another text"
Примеры работы режимов increment, decrement, capitalize, upper_first, upper и lower:
# ДЛЯ ЭТОГО РЕЖИМА ДОПУСТИМЫ ТОЛЬКО ЦЕЛОЧИСЛЕННЫЕ ЗНАЧЕНИЯ (1,2,158,203040523421 И Т.Д) В РЕГИСТРЕ
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# ЗАПОЛНИМ РЕГИСТР ЦИФРОЙ АТРИБУТА `id`
- parse:
attr: id
filter: (\d+)
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "1"
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: increment
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "2"
# ДЛЯ ЭТОГО РЕЖИМА ДОПУСТИМЫ ТОЛЬКО ЦЕЛОЧИСЛЕННЫЕ ЗНАЧЕНИЯ (1,2,158,203040523421 И Т.Д) В РЕГИСТРЕ
# НАЙДЕМ ВТОРОЙ `li`
- find:
path: "li#li2"
do:
# ЗАПОЛНИМ РЕГИСТР ЦИФРОЙ АТРИБУТА `id`
- parse:
attr: id
filter: (\d+)
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "2"
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: decrement
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "1"
# ЗАМЕНИМ ВСЕ ПЕРВЫЕ БУКВЫ ВСЕХ СЛОВ (КРОМЕ СОЕДИНИТЕЛЬНЫХ) В ПРЕДЛОЖЕНИИ НА ЗАГЛАВНЫЕ
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "Text and text"
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: capitalize
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "Text and Text"
# ЗАМЕНИМ ТОЛЬКО ПЕРВУЮ БУКВУ В ТЕКСТЕ НА ЗАГЛАВНУЮ
# НАЙДЕМ ВТОРОЙ `li`
- find:
path: "li#li2"
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "text and text"
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: upper_first
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "Text and text"
# ЗАМЕНИМ ВСЕ БУКВЫ В ТЕКСТЕ НА ЗАГЛАВНЫЕ
# НАЙДЕМ ВТОРОЙ `li`
- find:
path: "li#li2"
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "text and text"
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: upper
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "TEXT AND TEXT"
# ЗАМЕНИМ ВСЕ БУКВЫ В ТЕКСТЕ НА СТРОЧНЫЕ
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "Text and text"
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: lower
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "text and text"
Режимы url, escape_html и unescape_html:
# ПРИВЕДЕНИЕ ОТНОСИТЕЛЬНЫХ ССЫЛОК К АБСОЛЮТНОМУ ВИДУ
# НАЙДЕМ `a`
- find:
path: a
do:
# ЗАПОЛНИМ РЕГИСТР ЗНАЧЕНИЕМ АТРИБУТА `href`
- parse:
attr: href
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: sandbox.html
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: url
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: https://www.diggernaut.com/sandbox.html
# ЗАМЕНИМ <, >, " И Т.П. НА HTML entities
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# ЗАПОЛНИМ РЕГИСТР СОДЕРЖИМЫМ
- parse:
format: html
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: <li class="item" id="1">Text and text</li>
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: escape_html
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ:
# ЗАМЕНИМ HTML entities НА <, >, " И Т.П.
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: "li#li1"
do:
# ЗАПОЛНИМ РЕГИСТР СОДЕРЖИМЫМ
- register_set:
# ИЗМЕНИМ ДАННЫЕ
- normalize:
routine: unescape_html
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: <li class="item" id="1">Text and text</li>
Режим json2xml:
# ПРЕОБРАЗОВАНИЕ JSON ДОКУМЕНТА В XML БЛОК ДЛЯ ДАЛЬНЕЙШЕЙ РАБОТЫ С НИМ СТАНДАРТНЫМИ СРЕДСТВАМИ
# НАЙДЕМ ПЕРВЫЙ `script`
- find:
path: script
slice: 0
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: var items = {"items":[{"item": {"somefield1": "text", "somefield2": "another text"}}]};
# УДАЛИМ ЛИШНЕЕ
- normalize:
routine: replace_substring
args:
- \s*var\s*items\s*=\s*: ''
- \s*;\s*$: ''
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ JSON: {"items":[{"item": {"somefield1": "text", "somefield2": "another text"}}]}
# ПРЕОБРАЗУЕМ ЕГО В XML
- normalize:
routine: json2xml
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ:
# <body_safe>
# <items>
# <item>
# <somefield1>text</somefield1>
# <somefield2>another text</somefield2>
# </item>
# </items>
# </body_safe>
# РАСПАРСИМ ЭТОТ КОНТЕНТ, ПРЕОБРАЗУЕМ ЕГО В БЛОК И ПЕРЕЙДЕМ В НЕГО
- to_block
# ТЕПЕРЬ МЫ НАХОДИМСЯ В НОВОМ БЛОКЕ, И МОЖЕМ ХОДИТЬ ПО ЕГО DOM СТРУКТУРЕ
- find:
path: item > somefield1
do:
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ "text"
В данном примере мы применяем команду to_block, которая создает новый блок из содержимого регистра. Более подробно с этой командой вы можете ознакомиться в разделе создание нового блока.
Для работы normalize в режиме date_format, необходимы дополнительные аргументы:
Аргумент | Описание |
---|---|
format_in | Темплейт для входных данных (значения в регистре). В таблице ниже приведены все теги, которые вы можете использовать в темплейте. |
format_out | Темплейт для выходных данных (как модифицированные данные будут записаны в регистр). В таблице ниже приведены все теги, которые вы можете использовать в темплейте. |
add_years | Добавляет заданное количество лет к значению в регистре. Задавать можно как положительное, так и отрицательное целочисленное значение. |
add_months | Добавляет заданное количество месяцев к значению в регистре. Задавать можно как положительное, так и отрицательное целочисленное значение. |
add_days | Добавляет заданное количество дней к значению в регистре. Задавать можно как положительное, так и отрицательное целочисленное значение. |
add_hours | Добавляет заданное количество часов к значению в регистре. Задавать можно как положительное, так и отрицательное целочисленное значение. |
add_minutes | Добавляет заданное количество минут к значению в регистре. Задавать можно как положительное, так и отрицательное целочисленное значение. |
add_seconds | Добавляет заданное количество секунд к значению в регистре. Задавать можно как положительное, так и отрицательное целочисленное значение. |
timezone | Переводит дату и время в заданный часовой пояс (TZ). Например: America/New_York |
В таблице ниже, представлены все возможные тегами, которые могут быть использованы в темплейтах (format_in, format_out) и примеры их использования:
Тег | Описание | Темплейт | Значение |
---|---|---|---|
%a | аббревиатура дня недели, например Mon или Fri | %a, %d %B | Fri, 20 February |
%A | день недели в полном написании, например Monday или Friday | %A, %d %B | Friday, 20 February |
%b | аббревиатура месяца, например Feb или Sep | %A, %d %b | Friday, 20 Jun |
%B | полное наименование месяца, например February или September | %A, %d %B | Friday, 20 June |
%C | номер столетия, принимает значения от 00 до 99 | %С/%y | 20/17 |
%d | день месяца, принимает значения от 01 до 31 | %Y-%m-%d | 2017-10-01 |
%-d | день месяца, принимает значения от 1 до 31 | %Y-%m-%-d | 2017-10-1 |
%_d | день месяца, принимает значения от 1 или 01 до 31 | %Y-%m-%_d | 2017-10-01 или 2017-10-1 |
%D | предустановленый темплейт, аналогичен темплейту %m/%d/%y | %D | 05/08/17 |
%e | день месяца, принимает значения от 1 до 31 | %e %B | 5 January |
%F | предустановленый темплейт, аналогичен темплейту %Y-%m-%d | %F | 2017-10-01 |
%g | двухзначный номер года в соответствии со стандартом ISO-8601:1988 | %g | 17 |
%G | четырехзначный номер года в соответствии со стандартом ISO-8601:1988 | %G | 2017 |
%h | то же что и %b% | %A, %d %h | Friday, 20 Jun |
%H | час в 24-часовой системе, принимает значения от 00 до 23 | %H:%M:%S | 08:35:26 |
%I | час в 12-часовой системе, принимает значения от 01 до 12 | %I:%M:%S | 08:35:26 |
%-I | час в 12-часовой системе, принимает значения от 1 до 12 | %-I:%M:%S | 8:35:26 |
%_I | час в 12-часовой системе, принимает значения от 1 или 01 до 12 | %-I:%M:%S | 8:35:26 или 08:35:26 |
%j | порядковый день в году, принимает значения от 1 до 366 | Сегодня %j день в году | Сегодня 183 день в году |
%k | час в 24-часовой системе, принимает значения от 0 до 23 | %k часов %M минут | 8 часов 35 минут |
%l | час в 12-часовой системе, принимает значения от 1 до 12 | %l часов %M минут | 8 часов 35 минут |
%m | порядковый номер месяца, принимает значения от 01 до 12 | %Y-%m-%d | 2017-10-01 |
%-m | порядковый номер месяца, принимает значения от 1 до 12 | %Y-%-m-%d | 2017-1-01 |
%_m | порядковый номер месяца, принимает значения от 1 или 01 до 12 | %Y-%_m-%d | 2017-1-01 или 2017-01-01 |
%l | минуты, принимает значения от 00 до 59 | %l часов %M минут | 8 часов 35 минут |
%n | символ переноса строки | %Y%n%m | 2017\n10 |
%p | значение AM или PM в зависимости от времени, используется при указании времени в 12-часовом формате | %I%p | 8AM |
%P | значение am или pm в зависимости от времени, используется при указании времени в 12-часовом формате | %I%P | 8am |
%r | то же что и %I:%M:%S %p | %r | 04:12:37 PM |
%R | то же что и %H:%M | %R | 22:35 |
%s | временная метка Unix, выражает количество секунд прошедших с начала эпохи (1 января 1970) | %s | 1506867213 |
%S | секунды, принимает значения от 00 до 59 | %H:%M:%S | 08:35:26 |
%t | символ табуляции | %Y%t%m | 2017\t10 |
%T | то же что и %H:%M:%S | %T | 08:35:26 |
%u | порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье) | Сегодня %u день недели | Сегодня 5 день недели |
%U | номер недели в году, в случае когда неделя начинается с вокресенья, принимает значения от 00 до 53 | Шла %U неделя | Шла 23 неделя |
%V | номер недели в году по ISO стандарту, в случае когда неделя начинается с понедельника, принимает значения от 01 до 53. Если в неделе, в которой находится 1 января, содержится 4 и более дней из нового года, эта неделя считается первой неделей нового года, в противном случае - последней неделей прошедшего года. | Шла %U неделя | Шла 23 неделя |
%V | номер недели в году по ISO стандарту, в случае когда неделя начинается с понедельника, принимает значения от 01 до 53. Если в неделе, в которой находится 1 января, содержится 4 и более дней из нового года, эта неделя считается первой неделей нового года, в противном случае - последней неделей прошедшего года. | Шла %U неделя | Шла 23 неделя |
%w | порядковый номер дня недели от 0 (воскресенье) до 6 (суббота) | Сегодня %w день недели | Сегодня 5 день недели |
%W | номер недели в году, в случае когда неделя начинается с понедельника, принимает значения от 00 до 53 | Шла %W неделя | Шла 23 неделя |
%y | Двухзначный порядковый номер года | %m/%d/%y | 10/01/17 |
%Y | Четырехзначный порядковый номер года | %Y-%m-%d | 2017-10-01 |
%z | поправка ко времени относительно времени UTC. Выводится в формате +HHMM или -HHMM, где + означает восточнее GMT, - - западнее, HH - количество часов, MM - количество минут. | %z | +0300 |
%Z | аббревиатура временной зоны | %Z | MSK |
%+ | то же что и %a %b %e %H:%M:%S %Z %Y | %+ | Mon Sep 20 13:24:55 MSK 2017 |
%% | символ % | %Y%%%m | 2017%10 |
Пример использования:
# ПРЕОБРАЗОВАНИЕ ДАТ
# НАЙДЕМ ТРЕТИЙ `li`
- find:
path: 'li#li3'
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: 01/21/2017
# ПРЕОБРАЗУЕМ ДАТУ В unix time
- normalize:
routine: date_format
args:
format_in: "%m/%d/%Y"
format_out: "%s"
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: 1484956800
# -----------------------------------------------------
# СНОВА ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ СНОВА ПЕРВОНАЧАЛЬНОЕ ЗНАЧЕНИЕ: 01/21/2017
# ДОБАВИМ ДАТЕ ДВА ГОДА
- normalize:
routine: date_format
args:
format_in: "%m/%d/%Y"
add_years: 2
format_out: "%m/%d/%Y"
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: 01/21/2019
# -----------------------------------------------------
# СНОВА ВОЗЬМЕМ ПЕРВОНАЧАЛЬНОЕ ЗНАЧЕНИЕ
- parse
# ВЫЧТЕМ ОДИН ГОД, И ИЗМЕНИМ ФОРМАТ
- normalize:
routine: date_format
args:
format_in: "%m/%d/%Y"
add_years: -1
format_out: "%B,%d %Y"
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: January,21 2016
# -----------------------------------------------------
# ТЕПЕРЬ ЗАПИШЕМ В РЕГИСТР СОБСТВЕННОЕ ЗНАЧЕНИЕ
- register_set: '01/21/2017 00:00:00 +0400 UTC'
# И ПРЕОБРАЗУЕМ ЕГО ПОД НУЖНУЮ НАМ ВРЕМЕННУЮ ЗОНУ: America/New_York
- normalize:
routine: date_format
args:
format_in: "%m/%d/%Y %T %z %Z"
timezone: 'America/New_York'
format_out: "%m/%d/%Y %T %z %Z"
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: 01/20/2017 19:00:00 -0500 EST
# -----------------------------------------------------
# ДЛЯ АРГУМЕНТА add_* ДОСТУПНЫ СЛЕДУЮЩИЕ ВАРИАНТЫ:
# add_years - ГОДЫ
# add_months - МЕСЯЦЫ
# add_days - ДНИ
# add_hours - ЧАСЫ
# add_minutes - МИНУТЫ
# add_seconds - СЕКУНДЫ
# ТАК ЖЕ ЭТИ АРГУМЕНТЫ МОЖНО ПРИМЕНЯТЬ ВМЕСТЕ
- register_set: '01/21/2017 00:00:00 +0400 UTC'
- normalize:
routine: date_format
args:
format_in: "%m/%d/%Y %T %z %Z"
add_years: 10
add_months: 5
add_days: 1
add_hours: 6
add_minutes: 15
add_seconds: 50
format_out: "%m/%d/%Y %T %z %Z"
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: 06/22/2027 06:15:50 +0000 UTC
Для работы normalize в режиме signature, необходимы дополнительные аргументы:
Аргумент | Описание |
---|---|
algo | Используемый алгоритм. В настоящий момент поддерживается только HMAC. |
cypher | Используемый шифр. В настоящий момент поддерживается только SHA256. |
encode | Используемая кодировка. В настоящий момент поддерживается только Base64. |
secret | Секретный ключ. |
Пример использования:
# СОЗДАНИЕ ПОДПИСИ
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: 'li#li1'
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ "Text and text"
- normalize:
routine: signature
args:
algo: HMAC
cypher: SHA256
encode: Base64
secret: A6A7A8A9
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: eQZxtV7Ae/wu3Enx8C2po9L7j3cefePEwoFZiTmkb7M=
Режимы base64, md5:
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: 'li#li1'
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ "Text and text"
- normalize:
routine: base64
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: VGV4dCBhbmQgdGV4dA==
# НАЙДЕМ ПЕРВЫЙ `li`
- find:
path: 'li#li1'
do:
# ЗАПОЛНИМ РЕГИСТР ТЕКСТОВЫМ СОДЕРЖИМЫМ БЛОКА
- parse
# В РЕГИСТРЕ "Text and text"
- normalize:
routine: md5
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: be8bde1051516b04402f02e00b4687b7
Режим base64zlib_decode:
# УСТАНОВИМ ЗНАЧЕНИЕ РЕГИСТРА В ФОРМАТЕ BASE64 ZLIB
# ЗДЕСЬ МЫ ИМЕЕМ ЗАКОДИРОВАННОЕ ЗНАЧЕНИЕ ДЛЯ СТРОКИ: some text
- register_set: eJwrzs9NVShJrSgBABHoA5o=
# ДЕКОДИРУЕМ ЗНАЧЕНИЕ
- normalize:
routine: Base64ZLIBDecode
# В РЕГИСТРЕ ТЕПЕРЬ НАХОДИТСЯ: some text
В следующем разделе мы расскажем как работать с переменными, аргументами и объектами.