Константы и перечисления

Библиотека AutoNumeric использует набор предопределённых значений и перечислений, которые формируют единый контракт между различными частями системы: форматированием чисел, обработкой пользовательского ввода, управлением округлением и синхронизацией состояния инстанса. Константы выступают в роли стабильного слоя, исключающего необходимость работы с «магическими строками» и неявными значениями.

Внутри архитектуры выделяются несколько крупных категорий:

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

Каждая категория изолирует свою предметную область и используется как внутри ядра, так и при конфигурации экземпляра.


Константы форматирования числового представления

Форматирование является центральной частью AutoNumeric, поэтому соответствующие константы определяют базовые символы и правила отображения чисел.

Разделители

Одними из ключевых значений выступают символы разделения:

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

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

Типовая модель включает:

  • decimalCharacter — символ дробной части
  • digitGroupSeparator — разделитель тысячных групп
  • negativeSignCharacter — символ отрицательного значения

Эти значения используются на этапе:

  • парсинга входной строки
  • отображения значения в input
  • сериализации значения в числовой формат

Символы валют и суффиксы

AutoNumeric поддерживает отображение валютных и постфиксных символов через набор фиксированных параметров:

  • символ валюты
  • позиция символа (слева или справа)
  • разделение символа и числа пробелом или без него

Перечисления позволяют задать поведение без ручной проверки строк:

  • placement слева
  • placement справа
  • наличие пробела между символом и числом

Перечисления режимов округления

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

Основные режимы округления

Перечисление режимов определяет стратегию обработки дробной части:

  • округление до ближайшего значения
  • усечение без округления
  • округление вниз
  • округление вверх
  • банковское округление

Каждый режим задаёт детерминированное поведение при переполнении точности.

Механика применения

Режим округления применяется:

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

Перечисления исключают необходимость условных конструкций вида if/else по строковым параметрам, заменяя их единым внутренним API.


Константы поведения пользовательского ввода

Система ввода AutoNumeric опирается на набор предопределённых значений, управляющих обработкой клавиатуры, вставки и удаления символов.

Типы разрешённого ввода

Существует классификация входных событий:

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

Каждая категория связана с внутренними константами, которые позволяют быстро определять тип действия без сложного анализа DOM-событий.

Режимы обработки вставки

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

  • полная вставка с перерасчётом значения
  • частичная вставка с фильтрацией символов
  • отклонение вставки при несоответствии формату

Такая модель позволяет стандартизировать поведение независимо от браузера.


Константы клавиатурных кодов и действий

Для унификации обработки клавиатуры AutoNumeric использует слой абстракции над keyCode и code значениями.

Категории клавиш

Перечисления делят клавиши на:

  • цифровые клавиши верхнего ряда
  • numpad-значения
  • управляющие клавиши (Backspace, Delete)
  • навигационные клавиши (стрелки, Home, End)
  • функциональные клавиши

Каждая категория сопоставляется внутреннему идентификатору действия.

Абстракция действий

Вместо прямой работы с кодами клавиш используется модель действий:

  • добавить символ
  • удалить символ слева
  • удалить символ справа
  • переместить курсор
  • игнорировать событие

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


Перечисления состояний инстанса

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

Основные состояния

  • инициализация
  • активное редактирование
  • программное обновление значения
  • режим блокировки ввода
  • уничтоженный экземпляр

Состояния используются для предотвращения конфликтов между пользовательским вводом и программными изменениями значения.

Механизм переходов

Переход между состояниями происходит строго по правилам:

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

Перечисления позволяют избежать неконсистентного поведения при параллельных операциях.


Константы событийной системы

AutoNumeric использует событийную модель, в которой все события определены через фиксированные идентификаторы.

Основные события

  • инициализация инстанса
  • изменение значения
  • очистка поля
  • восстановление значения
  • потеря фокуса
  • получение фокуса

Каждое событие представлено как константа, а не строковый литерал, что обеспечивает:

  • защиту от опечаток
  • единообразие подписок
  • централизованное управление событиями

Дополнительные события форматирования

Отдельно выделяются события, связанные с преобразованием данных:

  • перед форматированием
  • после форматирования
  • перед парсингом
  • после парсинга

Такая детализация позволяет внедрять промежуточную обработку без изменения ядра библиотеки.


Константы валидации и ошибок

Система валидации использует набор фиксированных кодов ошибок, которые описывают состояние входных данных.

Типовые категории ошибок

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

Каждая ошибка кодируется через перечисление, что позволяет:

  • унифицировать обработку ошибок
  • централизовать сообщения
  • стандартизировать реакцию интерфейса

Модель обработки

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


Служебные константы ядра

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

Типы служебных значений

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

Эти значения используются на этапе:

  • создания экземпляра
  • клонирования конфигурации
  • восстановления состояния после изменения DOM

Централизация перечислений и их роль в архитектуре

Все перечисления AutoNumeric объединяются в единую систему, которая обеспечивает:

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

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