Skip to content
do- edited this page Sep 18, 2024 · 26 revisions

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

Все строки, обрабатываемые Check, должны:

  • быть фиксированной длины (totalLength);
  • состоять только из цифр (0..9);
  • иметь постфикс фиксированной длины checkSumLength, вычисляемый по как остаток от деления некоторой функции от последовательных цифр предшествующей части строки на 11 и 10 (для checkSumLength == 1) или на 101 и 100.

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

Конструктор

 const c = new Check (totalLength, checkSumLength)

Смысл параметров такой же, как у одноимённых полей.

Поля

Имя Описание
totalLength Общее количество цифр в коде
checkSumLength Количество цифр в контрольной сумме
valueLength Количество цифр в коде за вычетом контрольной суммы

Методы

processDigit (pos, digit)

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

process (str, checkAllDigits)

Проходит в цикле первые либо totalLength (checkAllDigits == true), либо valueLength (!checkAllDigits) символов строки, для каждого из них проверяет, является ли он цифрой и вызывает метод processDigit (pos, digit).

checkSum (str, checkAllDigits)

Устанавливает this.sum=0, вызывает process (str, checkAllDigits), после чего выдаёт остаток от деления на на 11 и 10 (для checkSumLength == 1) или на 101 и 100 в виде строки, дополненной слева нулями до необходимой длины.

Clone this wiki locally