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

Пулы ссылок

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

Команда pool_clear очищает пул ссылок с переданным именем. Если имя не передано, очищается пул с именем "default", который является пулом по-умолчанию.

Команда link_add добавляет ссылку в пул. В зависимости от контекста и используемых параметров, можно добавить ссылку находящуюся в регистре или в явном виде. Так, например, в блоковом контексте можно добавлять ссылку, находящуюся в регистре, а в других контекстах только в явном виде, поскольку регистр недоступен в других контекстах. Полный список параметров приведен ниже:

Параметр Описание
pool Имя пула, если отсутствует, используется имя по-умолчанию "default".
url Одна или несколько ссылок (смотри примеры), указанных в явном виде для добавления в пул. Если параметр отсутсвует, используется значение регистра.

Примеры использования:

              # СОЗДАДИМ ТЕСТОВЫЙ БЛОК
- register_set: '<body>
                  <a href="http://www.somesite.com/1">link1</a>
                  <a href="http://www.somesite.com/2">link2</a>
                  <a href="http://www.somesite.com/3">link3</a>
                  <a href="http://www.somesite.com/4">link4</a>
                </body>'
- to_block

# -------------------------------------------------------------
# НАЙДЕМ ВСЕ ТЕГИ `a`
- find:
    path: a
    do:
    # ЗАПОЛНИМ РЕГИСТР ЗНАЧЕНИЕМ АТТРИБУТА `href`
    - parse:
        attr: href
    # ДОБАВИМ ЗНАЧЕНИЕ РЕГИСТРА В СПИСОК АДРЕСОВ
    - link_add

# ПООЧЕРЕДНО ПРОЙДЕМ НА КАЖДЫЙ ИЗ АДРЕСОВ В СПИСКЕ, И ВЫПОЛНИМ ДЛЯ НИХ БЛОК `do`
- walk:
    to: links
    do:
    ...
    ...
# ОЧИСТИМ СПИСОК С ИМЕНЕМ `default`
- pool_clear

# -------------------------------------------------------------
# НАЙДЕМ ВСЕ ТЕГИ `a`
- find:
    path: a
    do:
    # ЗАПОЛНИМ РЕГИСТР ЗНАЧЕНИЕМ АТТРИБУТА `href`
    - parse:
        attr: href

    # ДОБАВИМ ЗНАЧЕНИЕ РЕГИСТРА В СПИСОК АДРЕСОВ С ИМЕНЕМ `main`
    - link_add:
        pool: main

# ПООЧЕРЕДНО ПРОЙДЕМ НА КАЖДЫЙ ИЗ АДРЕСОВ В СПИСКЕ С ИМЕНЕМ `main`, И ВЫПОЛНИМ ДЛЯ НИХ БЛОК `do`
- walk:
    to: links
    pool: main
    do:
    ...
    ...
# ОЧИСТИМ СПИСОК С ИМЕНЕМ main
- pool_clear: main

# -------------------------------------------------------------
# ДОБАВИМ В СПИСОК С ИМЕНЕМ `somepool` АДРЕС: http://www.somesite.com/somecoolurl
- link_add:
    pool: somepool
    url: http://www.somesite.com/somecoolurl

# -------------------------------------------------------------
# ДОБАВИМ СПИСОК АДРЕСОВ В ПУЛ С ИМЕНЕМ `somepool`
- link_add:
    pool: somepool
    url:
    - http://www.somesite.com/somecoolurl1
    - http://www.somesite.com/somecoolurl2
    - http://www.somesite.com/somecoolurl3
    - http://www.somesite.com/somecoolurl4
              

В следующей главе мы покажем вам как работать с объектами данных.