|
@@ -1,71 +1,73 @@
|
|
|
## @e22m4u/js-path-trie
|
|
## @e22m4u/js-path-trie
|
|
|
|
|
|
|
|
-ES-модуль маршрутизации на основе [префиксного дерева](https://ru.wikipedia.org/wiki/Trie).
|
|
|
|
|
|
|
+*English | [Русский](./README-ru.md)*
|
|
|
|
|
|
|
|
-- Использует [path-to-regexp](https://github.com/pillarjs/path-to-regexp) синтаксис.
|
|
|
|
|
-- Поддерживает параметры маршрута.
|
|
|
|
|
|
|
+A router based on a [prefix tree](https://en.wikipedia.org/wiki/Trie) (trie).
|
|
|
|
|
|
|
|
-## Установка
|
|
|
|
|
|
|
+- Uses [path-to-regexp](https://github.com/pillarjs/path-to-regexp) syntax.
|
|
|
|
|
+- Supports path parameters.
|
|
|
|
|
+
|
|
|
|
|
+## Installation
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
|
npm install @e22m4u/js-path-trie
|
|
npm install @e22m4u/js-path-trie
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-Для загрузки ES-модуля требуется установить `"type": "module"` в файле
|
|
|
|
|
-`package.json`, или использовать `.mjs` расширение.
|
|
|
|
|
|
|
+To load the ES-module, you need to set `"type": "module"`
|
|
|
|
|
+in the `package.json` file, or use the `.mjs` extension.
|
|
|
|
|
|
|
|
-## Пример
|
|
|
|
|
|
|
+## Example
|
|
|
|
|
|
|
|
-- `add(pathTemplate: string, value: unknown)` - добавить значение к новому маршруту
|
|
|
|
|
-- `match(path: string)` - поиск значения по заданному маршруту
|
|
|
|
|
|
|
+- `add(pathTemplate: string, value: unknown)` adds a value to a new route
|
|
|
|
|
+- `match(path: string)` returns a value by a given path
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
const trie = new PathTrie();
|
|
const trie = new PathTrie();
|
|
|
|
|
|
|
|
-// добавление маршрутов выполняется
|
|
|
|
|
-// методом "add", который принимает
|
|
|
|
|
-// шаблон маршрута и его значение
|
|
|
|
|
|
|
+// route registration is performed using
|
|
|
|
|
+// the "add" method, which takes a route
|
|
|
|
|
+// template and its value
|
|
|
trie.add('/foo/bar', yourValue1);
|
|
trie.add('/foo/bar', yourValue1);
|
|
|
trie.add('/foo/:p1/bar/:p2', yourValue2);
|
|
trie.add('/foo/:p1/bar/:p2', yourValue2);
|
|
|
|
|
|
|
|
-// для поиска значения используется
|
|
|
|
|
-// метод "match", который возвращает
|
|
|
|
|
-// значение маршрута и его параметры
|
|
|
|
|
|
|
+// to search for a value use the "match"
|
|
|
|
|
+// method, which returns the route value
|
|
|
|
|
+// and its parameters
|
|
|
trie.match('/foo/bar');
|
|
trie.match('/foo/bar');
|
|
|
// {
|
|
// {
|
|
|
// value: yourValue1,
|
|
// value: yourValue1,
|
|
|
// params: {}
|
|
// params: {}
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
-// если маршрут имеет параметры,
|
|
|
|
|
-// то их значения вернуться
|
|
|
|
|
-// в результате поиска
|
|
|
|
|
|
|
+// if a route has parameters
|
|
|
|
|
+// their values will be returned
|
|
|
|
|
+// in the search result
|
|
|
trie.match('/foo/10/bar/20');
|
|
trie.match('/foo/10/bar/20');
|
|
|
// {
|
|
// {
|
|
|
// value: yourValue2,
|
|
// value: yourValue2,
|
|
|
// params: {p1: 10, p2: 20}
|
|
// params: {p1: 10, p2: 20}
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
-// если маршрут не найден,
|
|
|
|
|
-// то возвращается "undefined"
|
|
|
|
|
|
|
+// if a route is not found
|
|
|
|
|
+// "undefined" is returned
|
|
|
trie.match('/foo/bar/baz');
|
|
trie.match('/foo/bar/baz');
|
|
|
// undefined
|
|
// undefined
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-## Отладка
|
|
|
|
|
|
|
+## Debugging
|
|
|
|
|
|
|
|
-Установка переменной `DEBUG` перед командой запуска включает вывод логов.
|
|
|
|
|
|
|
+Set the `DEBUG` variable before the run command to enable log output.
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
|
DEBUG=jsPathTrie* npm run test
|
|
DEBUG=jsPathTrie* npm run test
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-## Тестирование
|
|
|
|
|
|
|
+## Testing
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
|
npm run test
|
|
npm run test
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-## Лицензия
|
|
|
|
|
|
|
+## License
|
|
|
|
|
|
|
|
MIT
|
|
MIT
|