Перейти к основному содержимому

Конвертеры

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

Конвертеры позволяют преобразовать данные токена, помещаемые в $parseTree.

Объявление

Объявление конвертера:

  • При объявлении паттерна:

    patterns:
    $four = четыре || converter = function() {return 4}
  • В тегах init:

    init:
    function amountConverter(pt) {
    var ret = pt.Number[0].value;
    return ret
    }
  • В файле .js-библиотек, например converters.js:

        function amountConverter(pt) {
    var ret = pt.Number[0].value;
    return ret
    }

В функции конвертеров передается $parseTree первым аргументом.

Вы можете использовать внутри конвертера переменную, в которую передается $parseTree. Для этого задайте её имя первым аргументом функции, вторым аргументом передается контекст.

Применение

Формирование значения из текста

Сценарий:

$Digit = $regexp<\d+> || converter = numberConverterDigit

.js-файл:

function numberConverterDigit(parseTree) {
return parseInt(parseTree.text);
}

Преобразование значения из маппинга

Сценарий:

$Numeral = (один:1|...) || converter = valueToNumberConverter

.js-файл:

function valueToNumberConverter(parseTree) {
return parseInt(parseTree.value);
}

Формирование значения из вложенных токенов

Сценарий:

$Numeral = (один:1|...)
$Minutes = $Numeral || converter = minutesConverter

.js-файл:

function minutesConverter(parseTree) {
return parseInt(parseTree.Numeral.value)
};

Формирование значения из справочников

Сценарий:

$City = $entity<Cities> || converter = сityConverter
предупреждение

Если паттерн создан с помощью $entity<> и converter, его название не должно совпадать с названием сущности NLU-ядра. Например, если в проекте есть паттерн $Example и сущность Example, то это может привести к ошибкам при выполнении сценария.

Правило $entity записывает в value только идентификатор сущности, а список ассоциированных значений содержится в справочнике. Чтобы записать в value значение из справочника, укажите в .js-файле:

function сityConverter(parseTree) {
var id = parseTree.City[0].value;
return Cities[id].value;
}