Проверка конфигурации

Конфигурация AutoNumeric представляет собой объект параметров, определяющий поведение форматирования числовых значений в полях ввода и при программной работе с экземплярами. При инициализации библиотеки каждый переданный параметр проходит этап нормализации и проверки, включающий сопоставление с допустимыми ключами, приведение типов и применение значений по умолчанию.

Основная задача валидации конфигурации заключается в обеспечении предсказуемого поведения экземпляра: любые некорректные, неизвестные или конфликтующие опции должны быть либо проигнорированы, либо заменены безопасными значениями, либо вызвать ошибку в зависимости от режима работы.


Базовая структура объекта настроек

Конфигурация AutoNumeric строится как плоский объект ключ–значение, где каждый ключ соответствует конкретному аспекту форматирования:

  • разделитель тысяч;
  • символ десятичной части;
  • правила округления;
  • ограничения по диапазону;
  • поведение при вводе;
  • формат отрицательных чисел;
  • стратегия очистки и парсинга значения.

Пример логической структуры:

{
  digitGroupSeparator: ",",
  decimalCharacter: ".",
  decimalPlaces: 2,
  minimumValue: "0",
  maximumValue: "9999999",
  modifyValueOnWheel: true
}

При этом внутренняя модель AutoNumeric не хранит конфигурацию «как есть». Перед использованием она проходит этап трансформации, где:

  • строки приводятся к нужным типам (числа, булевы значения);
  • проверяются допустимые диапазоны;
  • устраняются конфликтующие комбинации параметров;
  • применяется базовая конфигурация.

Процесс нормализации конфигурации

В момент создания экземпляра выполняется последовательность шагов:

  1. Загрузка конфигурации по умолчанию Если пользователь не передал настройки, используется стандартный профиль.

  2. Слияние с пользовательскими параметрами Переданные значения поверхностно накладываются на базовые.

  3. Приведение типов Например:

    • "2"2
    • "true"true
  4. Проверка допустимости ключей Все неизвестные параметры отбрасываются либо помечаются как некорректные.

  5. Валидация зависимых опций Некоторые параметры имеют взаимные ограничения:

    • нельзя одновременно включить конфликтующие режимы округления;
    • минимальное значение не может быть больше максимального;
    • формат отрицательных чисел должен соответствовать выбранному типу вывода.

Проверка допустимых ключей конфигурации

AutoNumeric использует внутренний список разрешённых опций. При передаче конфигурации выполняется сопоставление ключей:

  • если ключ входит в список — он принимается;
  • если ключ неизвестен — он игнорируется или логируется (в зависимости от режима);
  • если ключ устарел — он может быть преобразован в актуальный аналог.

Такой механизм защищает от ошибок при обновлении версии библиотеки, когда API конфигурации изменяется.


Обработка некорректных значений

Некорректные значения могут возникать в нескольких формах:

  • неверный тип (например, строка вместо числа);
  • выход за допустимый диапазон;
  • конфликт с другими параметрами;
  • логически невозможная комбинация.

Поведение при ошибках зависит от режима:

Строгий режим

В строгом режиме любые нарушения конфигурации приводят к исключению или отказу инициализации экземпляра. Это используется в системах, где критична точность ввода.

Мягкий режим

В мягком режиме AutoNumeric:

  • заменяет некорректные значения на дефолтные;
  • игнорирует неизвестные ключи;
  • корректирует диапазоны автоматически.

Валидация числовых ограничений

Особое внимание уделяется параметрам диапазона:

  • минимальное значение;
  • максимальное значение;
  • шаг изменения;
  • точность округления.

Проверка выполняется на этапе инициализации и при каждом программном изменении конфигурации.

Логика проверки:

  • если minimumValue > maximumValue, значения меняются местами или приводятся к дефолтным;
  • если число знаков после запятой конфликтует с округлением, приоритет отдается правилам округления;
  • если шаг (step) не согласуется с точностью, он корректируется.

Проверка совместимости форматирования

Некоторые параметры влияют друг на друга и должны проверяться в связке:

  • разделители тысяч и десятичный символ не могут совпадать;
  • отрицательный формат не должен конфликтовать с режимом вывода знака;
  • форматирование валюты не должно нарушать числовую парсинг-модель.

Пример конфликтной конфигурации:

{
  digitGroupSeparator: ".",
  decimalCharacter: "."
}

Такая комбинация считается недопустимой и автоматически корректируется.


Валидация при динамическом изменении конфигурации

AutoNumeric поддерживает изменение параметров после инициализации. В этом случае повторно запускается процесс проверки:

  • новые параметры объединяются с текущими;
  • выполняется повторная нормализация;
  • пересчитывается форматирование текущего значения;
  • при необходимости значение в поле корректируется.

Особое внимание уделяется случаям, когда изменение конфигурации влияет на уже введённые данные. Например, уменьшение количества знаков после запятой приводит к пересчёту отображаемого значения с округлением.


Логирование и диагностика ошибок конфигурации

В диагностическом режиме библиотека может фиксировать:

  • неизвестные параметры;
  • автоматически исправленные значения;
  • конфликты настроек;
  • приведение типов.

Такая информация используется для отладки сложных форм ввода, особенно в финансовых и бухгалтерских интерфейсах.

Типичный сценарий логирования:

  • обнаружен неизвестный ключ → игнорирование;
  • найден конфликт разделителей → автоматическая замена;
  • превышение диапазона → приведение к ближайшему допустимому значению.

Внутренние механизмы защиты конфигурации

Для предотвращения некорректного состояния экземпляра применяются защитные механизмы:

  • заморозка конфигурации после инициализации (частичная иммутабельность);
  • клонирование объекта настроек перед применением;
  • изоляция пользовательского объекта от внутреннего состояния;
  • валидация на уровне каждого сеттера.

Это исключает ситуацию, при которой внешнее изменение объекта конфигурации приводит к неожиданному поведению уже созданного экземпляра.


Проверка конфигурации при использовании предустановок

AutoNumeric поддерживает набор стандартных конфигураций. При их использовании выполняется дополнительная проверка:

  • корректность наследования параметров;
  • отсутствие циклических переопределений;
  • совместимость с пользовательскими изменениями.

Переопределённые значения всегда проходят ту же цепочку валидации, что и при полной инициализации, что обеспечивает единообразие поведения независимо от способа задания настроек.