Манипулируем объектами

Счетчики

Счетчики могут быть использованы в ситуациях когда вам нужно вести подсчет определенных событий, например для подсчета количества итераций walk в repeat режиме. Счетчики могут быть использованы как подстановочные данные, а значит вы можете использовать их для решения задач пагинации, и не только для передачи номера страницы, но и передачи номера стартовой записи, потому что увеличить (или уменьшить) значение счетчика можно на любое число, а не только на единицу.

Перед использованием счетчика, вы можете его проинициализировать с любым начальным целочисленным значением, используя команду counter_set. Если счетчик не был проиниализирован, ему автоматически будет присвоено значение 0 при выполнении одной из команд: counter_get, counter_increment или counter_decrement.

Все методы, предназначенные для работы со счетчиками, за исключением counter_get (работает только в блоковом контексте), могут быть использованы во всех контекстах.

Рассмотрим возможности счётчиков более детально на примерах:

              # СОЗДАДИМ ТЕСТОВЫЙ БЛОК
- register_set: '<div>123</div>'
- to_block
- find:
    path: div
    do:
    # ЗАПИШЕМ ЗНАЧЕНИЕ В РЕГИСТР
    - parse

    # СОЗДАДИМ СЧЁТЧИК С ИМЕНЕМ `somecounter`
    - counter_set: somecounter
    # ЗНАЧЕНИЕ СЧЕТЧИКА В ЭТОМ СЛУЧАЕ БУДЕТ РАВНО: 123

    # ------------------------------------------------------
    # ИЛИ ЗАПИШЕМ НАЧАЛЬНОЕ ЗНАЧЕНИЕ СЧЁТЧИКА В РЕГИСТР САМИ
    - register_set: 456

    # СОЗДАДИМ СЧЁТЧИК С ИМЕНЕМ `somecounter`
    - counter_set: somecounter
    # ЗНАЧЕНИЕ СЧЕТЧИКА В ЭТОМ СЛУЧАЕ БУДЕТ РАВНО: 456

# ------------------------------------------------------
# ИНИЦИАЛИЗИРУЕМ СЧЕТЧИК `somecounter` НАПРЯМУЮ
- counter_set:
    name: somecounter
    value: 100
# ЗНАЧЕНИЕ СЧЕТЧИКА В ЭТОМ СЛУЧАЕ БУДЕТ РАВНО: 100
            
              # СОЗДАДИМ ТЕСТОВЫЙ БЛОК
- register_set: '<div>232</div><p>block</p>'
- to_block
- find:
    path: div
    do:
    # ЗАПИШЕМ ЗНАЧЕНИЕ В РЕГИСТР
    - parse

    # СОЗДАДИМ СЧЁТЧИК С ИМЕНЕМ `somecounter`
    - counter_set: somecounter
    # ЗНАЧЕНИЕ СЧЕТЧИКА БУДЕТ РАВНО: 232

- find:
    path: p
    do:
    # ЗАПОЛНИМ ЗНАЧЕНИЕ РЕГИСТРА ДАННЫМИ ИЗ СЧЁТЧИКА С ИМЕНЕМ `somecounter`
    - counter_get: somecounter
    # ТЕПЕРЬ В РЕГИСТРЕ НАХОДИТСЯ: 232

    # ТАК ЖЕ МОЖНО ПОЛУЧАТЬ ЗНАЧЕНИЕ СЧЁТЧИКА В ДРУГИХ КОМАНДАХ, НАПРИМЕР:
    - register_set: <%somecounter%>
    # ТЕПЕРЬ В РЕГИСТРЕ НАХОДИТСЯ: 232
              
              # СОЗДАДИМ ТЕСТОВЫЙ БЛОК
- register_set: '<div>232</div><p>block</p>'
- to_block
- find:
    path: div
    do:
    # ЗАПИШЕМ ЗНАЧЕНИЕ В РЕГИСТР
    - parse
    # ТЕПЕРЬ В РЕГИСТРЕ НАХОДИТСЯ: 232

    - counter_set: somecounter
    # ЗНАЧЕНИЕ СЧЕТЧИКА БУДЕТ РАВНО: 232

- find:
    path: p
    do:
    # УВЕЛИЧИМ ЗНАЧЕНИЕ СЧЁТЧИКА НА 1
    - counter_increment: 
        name: somecounter
    # ЗНАЧЕНИЕ СЧЁТЧИКА РАВНО: 233

    # УВЕЛИЧИМ ЗНАЧЕНИЕ СЧЁТЧИКА НА 24
    - counter_increment: 
        name: somecounter
        by: 24
    # ЗНАЧЕНИЕ СЧЁТЧИКА РАВНО: 257
              
              # СОЗДАДИМ ТЕСТОВЫЙ БЛОК
- register_set: '<div>232</div><p>block</p>'
- to_block
- find:
    path: div
    do:
    # ЗАПИШЕМ ЗНАЧЕНИЕ В РЕГИСТР
    - parse

    # СОЗДАДИМ СЧЁТЧИК С ИМЕНЕМ `somecounter`
    - counter_set: somecounter
    # ЗНАЧЕНИЕ СЧЕТЧИКА БУДЕТ РАВНО: 232

- find:
    path: p
    do:
    # УМЕНЬШИМ ЗНАЧЕНИЕ СЧЁТЧИКА НА 1
    - counter_decrement: 
        name: somecounter
    # ЗНАЧЕНИЕ СЧЁТЧИКА РАВНО: 231
    
    # УМЕНЬШИМ ЗНАЧЕНИЕ СЧЁТЧИКА НА 24
    - counter_decrement: 
        name: somecounter
        by: 24
    # ЗНАЧЕНИЕ СЧЁТЧИКА РАВНО: 207
              
              # СОЗДАДИМ ТЕСТОВЫЙ БЛОК
- register_set: '<div>232</div><p>block</p>'
- to_block
- find:
    path: div
    do:
    # ЗАПИШЕМ ЗНАЧЕНИЕ В РЕГИСТР
    - parse

    # СОЗДАДИМ СЧЁТЧИК С ИМЕНЕМ `somecounter`
    - counter_set: somecounter
    # ЗНАЧЕНИЕ СЧЁТЧИКА РАВНО: 232

- find:
    path: p
    do:
    # СБРОСИМ СЧЁТЧИК
    - counter_reset: somecounter
    # ЗНАЧЕНИЕ СЧЁТЧИКА РАВНО: 0
              

В следующей главе мы рассмотрим методы для работы с пулом ссылок.