Как предварительно скомпилировать автономный код проверки AJV, если у вас есть собственные ключевые слова?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как предварительно скомпилировать автономный код проверки AJV, если у вас есть собственные ключевые слова?

Сообщение Anonymous »

Я пытаюсь сгенерировать автономный код перед компиляцией следующим образом:
https://ajv.js.org/standalone.html
У меня есть экземпляр AJV, созданный следующим образом:

Код: Выделить всё

  const ajv = require("ajv");
const add_formats = require("ajv-formats");
const add_errors = require("ajv-errors");
const ajv_inst = new ajv({
code: { source: true }, // needed for standalone pre compiled scripts
allErrors: true,
$data: true,
});
add_errors(add_formats(ajv_inst));
Однако у меня есть специальные ключевые слова, определенные следующим образом:

Код: Выделить всё

  ajv_inst.addKeyword({
keyword: "custom_array",
validate: (schema, data) => {
try {
const unique_name = data.map((tar) => {
return tar.name.toLowerCase().replaceAll(/\s+/g, "");
});
const unique_id = data.map((tar) => {
return tar._id;
});
return (
new Set(unique_name).size === data.length &&
new Set(unique_id).size === data.length
);
} catch (err) {
return false;
}
},
metaSchema: {
enum: [true],
},
});
Чтобы сгенерировать автономный код с пользовательскими ключевыми словами, я думаю, что ключевое слово необходимо определить с помощью функции генератора кода, а не проверки, например:

Код: Выделить всё

  code(cxt: KeywordCxt) {
const {data, schema} = cxt
const op = schema ? _`!==` : _`===`
cxt.fail(_`${data} %2 ${op} 0`) // ... the only code change needed is to use `cxt.fail$data` here
},
https://ajv.js.org/keywords.html#define ... e-function
вопросы:
  • Учитывая, что у меня уже определено свойство validate, есть ли способ сгенерировать предварительно скомпилированный автономный код с функцией, определенной как в validate< /code> свойство?
  • Если нет, Существует ли простой или автоматизированный способ преобразования моей функции проверки в необходимый код генерации кода?


Подробнее здесь: https://stackoverflow.com/questions/792 ... m-keywords
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»