Фреймворк для Lua, минималистичный наблюдатель значений пар «ключ-значение».
Этот модуль позволяет вам создать таблицу с определённым меткой или путем, которые могут использоваться для обмена данными с другими модулями или кодом. Другие модули могут зарегистрироваться в качестве наблюдателей за конкретной парой «ключ-значение» в таблице объекта watchable, и будут автоматически уведомлены при изменении этой пары «ключ-значение».
Цель состоит в том, чтобы предоставить механизм для простого и независимого обмена информацией о состоянии между отдельными и (в основном) не связанными кодами.
Обзор API
Конструкторы — вызовы API, которые возвращают объект, обычно такой, который предлагает методы API
Создаёт таблицу, за которой другие модули могут наблюдать за изменениями ключей
Параметры
path — глобальное имя для этой внутренней таблицы, к которой внешний код может ссылаться на таблицу.
externalChanges — необязательный булево значение, по умолчанию false, указывающее, может ли внешний код изменять ключи в этой таблице (двусторонний обмен).
Возвращаемое значение
таблица с методами мета, которые уведомят внешний код, зарегистрированный для наблюдения за этой таблицей, о изменениях пар «ключ-значение».
Примечания
Этот конструктор используется кодом, который хочет поделиться информацией о состоянии, за которым другой код может зарегистрироваться для наблюдения.
Вы можете указать любое строковое имя в качестве пути, но оно должно быть уникальным — произойдёт ошибка, если имя пути уже зарегистрировано.
Все пары «ключ-значение», хранящиеся в этой таблице, потенциально могут наблюдаться внешним кодом — если вы хотите сохранить какие-то данные в секрете, не храните их в этой таблице.
externalChanges будет применяться ко всем ключам в этой таблице — если вы хотите разрешить извне изменять только некоторые ключи, вам нужно зарегистрировать отдельные пути.
Если внешние изменения разрешены, вам нужно зарегистрировать своего собственного наблюдателя с помощью hs.watchable.watch, если требуется действие при внешних изменениях.
Создаёт наблюдателя, который будет вызываться при изменении указанного ключа в указанном пути.
Параметры
path — строка, определяющая путь для наблюдения. Если key не предоставлен, то это должна быть строка вида «путь.ключ», где ключ будет определён как строка после последнего «.»
key — если предоставлено, строка, определяющая конкретный ключ в пути для наблюдения.
callback — необязательная функция, которая будет вызываться при изменении ключа, указанного в пути. Функция должна ожидать следующие аргументы:
watcher — сам объект наблюдателя
path — наблюдаемый путь
key — конкретный ключ в пути, вызвавший этот обратный вызов
old — старое значение для этого ключа, может быть nil
new — новое значение для этого ключа, может быть nil
Возвращаемое значение
watchableObject
Примечания
Этот конструктор используется кодом, который хочет отслеживать информацию о состоянии, которая делится другим кодом.
Функция обратного вызова вызывается после того, как новое значение уже было установлено — обратный вызов это уведомление «изменилось», а не уведомление «изменится».
Если ключ (указанный как отдельный аргумент или как последний компонент пути) равен «*», то все изменения пар «ключ-значение», которые происходят для таблицы, указанной путем, вызовут обратный вызов. Это сокращение для наблюдения за всей таблицей, а не только за конкретной парой «ключ-значение» в таблице.
Возможно зарегистрировать наблюдателя для пути, который ещё не зарегистрирован с помощью hs.watchable.new. Получение текущего значения с помощью hs.watchable:value в таком случае вернёт nil.
Внешне изменить значение пары «ключ-значение», отслеживаемой watchableObject.
Параметры
key — если watchableObject был определён с ключом «*», этот аргумент является обязательным и определяет конкретный ключ наблюдаемой таблицы, значение которого нужно изменить. Если при определении watchableObject был указан конкретный ключ, этот аргумент не должен быть предоставлен.
value — новое значение для ключа.
Возвращаемое значение
watchableObject
Примечания
если внешние изменения не разрешены для указанного пути, этот метод генерирует ошибку
Получить текущее значение пары «ключ-значение», отслеживаемой watchableObject
Параметры
key — если watchableObject был определён с ключом «*», этот аргумент является обязательным и определяет конкретный ключ наблюдаемой таблицы, значение которого нужно получить. Если при определении watchableObject был указан конкретный ключ, этот аргумент игнорируется.
Возвращаемое значение
Текущее значение пары «ключ-значение», отслеживаемой watchableObject. Может быть nil.