Skip to content

Commit fa91288

Browse files
authored
Update README.md
1 parent 7d91dc2 commit fa91288

File tree

1 file changed

+41
-21
lines changed

1 file changed

+41
-21
lines changed

README.md

+41-21
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
![workflow](https://github.com/do-/node-ru-codes/actions/workflows/main.yml/badge.svg)
22
![Jest coverage](./badges/coverage-jest%20coverage.svg)
33

4-
[ru-codes](https://github.com/do-/node-ru-codes) - один из модулей node.js для проверки корректности ввода ИНН, КПП, ОГРН[ИП] и СНИЛС.
4+
[ru-codes](https://github.com/do-/node-ru-codes/wiki) - один из модулей node.js для проверки корректности ввода ИНН, КПП, ОГРН[ИП] и СНИЛС, а также для генерации таких кодов в автоматических тестах.
55

66
Особенности:
77
* итог проверки представлен не результатом функции (который в случае успеха всегда `undefined`), а объектом Error с дополнительными полями;
@@ -23,8 +23,12 @@ const {
2323
isOGRN13,
2424
isOGRN15,
2525
isSNILS,
26-
// scalarProduct,
27-
// digit,
26+
randomINN10,
27+
randomINN12,
28+
randomKPP,
29+
randomOGRN13,
30+
randomOGRN15,
31+
randomSNILS,
2832
} = require ('ru-codes')
2933

3034
try {
@@ -40,22 +44,30 @@ catch (err) {
4044
case 'char':
4145
// err.value -- символ не попавший в интервал '0'..'9'
4246
// err.pos -- позиция этого символа (от 0)
47+
case 'format':
48+
// err.pos -- позиция проблемного символа (для формата СНИЛС)
4349
case 'checksum':
4450
// err.tobe -- контрольная сумма, вычисленная по основной части строки
4551
// err.asis -- значение контрольной суммы, прочитанное непосредственно из строки
46-
// err.phase -- для isINN12: номер контрольной суммы (1 или 2)
4752
default:
4853
throw err
4954
}
5055
}
56+
57+
const testINN10 = randomINN10 ()
58+
const testINN12 = randomINN12 ()
59+
const testKPP = randomKPP ()
60+
const testOGRN13 = randomOGRN13 ()
61+
const testOGRN15 = randomOGRN15 ()
62+
const testSNILS = randomSNILS (/*{format: true}*/)
5163
```
5264
# API
53-
## Основные функции
54-
Каждая из функций, описанных в данном разделе, принимает на вход проверяемый код в виде строки (не числа или иного объекта), состоящей только из цифр от '0' до '9'. Если проверка проходит успешно, исполнение функции завершается без результата, иначе генерируется ошибка.
65+
## Функции проверки
66+
Каждая из функций `isXXXX`, описанных в данном разделе, принимает на вход проверяемый код в виде строки (не числа или иного объекта), состоящей только из цифр от '0' до '9'. Исключение составляет `isSNILS`, допускающая значения формата "XXX-XXX-XXX YY"..
5567

56-
Реализованы только проверки форматов и контрольных сумм, но не чего-либо, связанного с внешними источниками данных (наборы кодов регионов, отделений ФНС, ЕГРЮЛ и т. п.)
68+
Если проверка проходит успешно, функция `isXXXX` возвращает `undefined`, иначе генерируется ошибка с дополнительными полями `code`, `type`, `tobe`, `asis`, `value` и `pos` — подробнее см. комментарии в примере выше.
5769

58-
Реализованы все проверки через вызовы нижеописанных `scalarProduct` и `digit`.
70+
Реализованы только проверки форматов и контрольных сумм, но не чего-либо, связанного с внешними источниками данных (наборы кодов регионов, отделений ФНС, ЕГРЮЛ и т. п.)
5971

6072
### isINN10
6173
Проверяет, может ли аргумент быть [ИНН](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0) юридического лица.
@@ -73,21 +85,29 @@ catch (err) {
7385
Проверяет, может ли аргумент быть [ОГРНИП](https://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D1%82%D0%B5%D0%BB%D1%8F).
7486

7587
### isSNILS
76-
Проверяет, может ли аргумент быть [СНИЛС](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BB%D0%B8%D1%86%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%87%D1%91%D1%82%D0%B0). Как и в остальных функциях `is...`, на вход должна подаваться строка только из цифр, без дополнительных символов форматирования.
88+
Проверяет, может ли аргумент быть [СНИЛС](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BB%D0%B8%D1%86%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%87%D1%91%D1%82%D0%B0).
89+
90+
Аргумент может быть либо в формате "XXX-XXX-XXX YY", либо только цифры.
91+
92+
## Генераторы случайных значений
93+
Каждая из функций `randomXXXX`, описанных в данном разделе, возвращает случайную строку соответствующего формата с корректной контрольной суммой (кроме КПП, для которого контроль не определён).
94+
95+
### randomINN10
96+
Генерирует случайный [ИНН](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0) юридического лица.
97+
98+
### randomINN12
99+
Генерирует случайный [ИНН](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0) физического лица.
77100

78-
## Вспомогательные функции
79-
### digit
80-
Для заданной строки `str`, состоящей из только из цифр, и номера позиции `pos` возвращает число, соответствующее цифре, занимающей данную позицию (без создания промежуточной подстроки и вызова `parseInt`).
101+
### randomKPP
102+
Генерирует случайный [КПП](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0#%D0%9A%D0%BE%D0%B4_%D0%BF%D1%80%D0%B8%D1%87%D0%B8%D0%BD%D1%8B_%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BD%D0%B0_%D1%83%D1%87%D1%91%D1%82_(%D0%9A%D0%9F%D0%9F)).
81103

82-
Используется функциями `is...` для чтения контрольных чисел.
104+
### randomOGRN13
105+
Генерирует случайный [ОГРН](https://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80).
83106

84-
### scalarProduct
85-
Для заданного массива чисел `coef` и строки `str`:
86-
* гарантирует, что `str` является строкой такой же длины, что `coef`, и состоящей только из цифр;
87-
* возвращает скалярное произведение `coef` на массив чисел, соответствующих отдельным цифрам `str`.
107+
### randomOGRN15
108+
Генерирует случайный [ОГРНИП](https://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D1%82%D0%B5%D0%BB%D1%8F).
88109

89-
На старте `str` преобразуется в [буфер](https://nodejs.org/dist/latest/docs/api/buffer.html) -- и это единственный объект, создаваемый по ходу неаварийного исполнения функции: все остальные операции -- числовые.
110+
### randomSNILS
111+
Генерирует случайный [СНИЛС](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BB%D0%B8%D1%86%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%87%D1%91%D1%82%D0%B0).
90112

91-
Используется функциями `is...` для:
92-
* общей проверки формата;
93-
* одновременного вычисления контрольных сумм.
113+
При вызове `randomSNILS ({format: true})` результат будет отформатирован, иначе — только цифры.

0 commit comments

Comments
 (0)