Skip to content

webpractik/schema

Repository files navigation

Upgreat Readable Schema

Схема обмена данных в рамках конкурса Прочтение.

  • Работа с типом
  • Валидация

Работа с типом

const schema = Schema.fromJson(jsonDoc);

При попытке создалть экземпляр, в случае если json не соответствует схеме, вызовется throw new Exception.

Пример работы валидации

async function example() {
  // создаем объект Schema
  const schema = Schema.fromJson(jsonDoc);

  // Скачиваем каталог ошибок
  const errMap = await ErrorMapFactory.createErrorMap();

  // Создаем экземпляр валидатора
  const validator = new Validator();
  validator.setErrorsMap(errMap);

  // Можем добавлять валидации, в данном случае можно добавить проверку на оригальность текста
  // используя внутренний источник данных
  const textCheck = new CheckOriginalText((publicId, text) => {
    return true;
  });
  // Изменить стандартное сообщение
  textCheck.setErrMessage('new error message');
  validator.addChecker(textCheck);

  // Получаем результат валидации
  const resultValidation = validator.validate(schema);
  console.log(
    'resultValidation',
    resultValidation.status,
    resultValidation.errors,
  );
}

Перечень проверок

Для проверки логики разметки Validator использует ряд проверок:

  • CheckEmptyFieldType - Отсутствуют фрагменты с пустыми типами ошибок "type"
  • CheckErrorTypeCorrection - У фрагмента ИСП всегда заполнено поле исправление "correction"
  • CheckRangeMarkup - Попадение цифр диапазона разметок (начало и конец) в длину текста.
  • CheckStartCoordinates - "endSelection" больше чем "startSelection"
  • CheckErrorTypes - Соответствие размеченных типов ошибок предмету
  • CheckSubTypes - Соответствие подтипов типам.
  • CheckFullTextErrorsCoordinates - Общие ошибки всегда имеют нулевые "startSelection", "endSelection"
  • CheckEqualityCoordinates - "startSelection" и "endSelection" не равны
  • CheckUniqueTag - Отсутствует ситуации с уникальным значением поля "tag" в рамках одного файла.
  • CheckOriginalText - проверка на совпадения текста. Присланный текст в json должен совпадать с оригинальным (страхуемся на случай что присланный originalText не был изменен). Для работы ошибки необходимо зарегистрировать callback который берет текст по умолчанию.

Все проверки кроме CheckOriginalText запускаются по умолчанию.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published