Browse Source

docs: updates README.md

e22m4u 1 week ago
parent
commit
ce3f7f2ea4
1 changed files with 49 additions and 7 deletions
  1. 49 7
      README.md

+ 49 - 7
README.md

@@ -11,7 +11,14 @@ JavaScript модуль для работы с проекцией данных.
 - [Установка](#установка)
 - [Использование](#использование)
   - [Функция `projectData`](#функция-projectdata)
+    - [Создание проекции](#создание-проекции)
+    - [Проекция элементов массива](#проекция-элементов-массива)
+    - [Строгий режим](#строгий-режим)
+    - [Вложенные схемы](#вложенные-схемы)
+    - [Область проекции](#область-проекции)
   - [Класс `DataProjector`](#класс-dataprojector)
+    - [Именованные схемы](#именованные-схемы)
+    - [Комбинирование именованных схем](#комбинирование-именованных-схем)
 - [Тесты](#тесты)
 - [Лицензия](#лицензия)
 
@@ -30,7 +37,15 @@ npm install @e22m4u/js-data-projector
 
 ### Функция `projectData`
 
-Создание проекции с помощью схемы.
+Функция выполняет проекцию данных на основе переданного объекта схемы.
+Принимает исходные данные и дополнительные опции для управления режимом
+строгости и областью видимости.
+
+#### Создание проекции
+
+Создание проекции выполняется на основе объекта схемы. Логические значения
+определяют видимость полей. Поля, отсутствующие в схеме, остаются в
+результате по умолчанию.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projector';
@@ -54,7 +69,11 @@ console.log(result);
 // }
 ```
 
-Создание проекции элементов массива.
+#### Проекция элементов массива
+
+Если входные данные представляют собой массив, то проекция применяется к
+каждому элементу рекурсивно. Структура результата соответствует исходному
+массиву.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projector';
@@ -77,7 +96,11 @@ console.log(result);
 // ]
 ```
 
-Создание проекции в строгом режиме.
+#### Строгий режим
+
+Строгий режим исключает из результата все поля, не описанные в схеме явно.
+Поведение регулируется опцией `strict`. Данный режим позволяет гарантировать
+отсутствие лишних данных в результате.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projector';
@@ -102,7 +125,11 @@ console.log(result);
 // }
 ```
 
-Создание проекции с помощью вложенной схемы.
+#### Вложенные схемы
+
+Вложенные объекты обрабатываются с помощью свойства `schema` в настройках
+поля. Данное свойство позволяет определять правила видимости для вложенных
+структур данных.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projector';
@@ -138,7 +165,11 @@ console.log(result);
 // }
 ```
 
-Создание проекции для указанной области.
+#### Область проекции
+
+Правила видимости полей могут зависеть от области проекции. Свойство `scopes`
+определяет специфичные правила для разных контекстов, передаваемых через
+опцию `scope`.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projector';
@@ -178,7 +209,15 @@ console.log(outputData);
 
 ### Класс `DataProjector`
 
-Создание проекции с помощью именованной схемы.
+Класс управляет реестром схем и предоставляет методы для их регистрации и
+использования. Экземпляр хранит именованные схемы в памяти, что позволяет
+ссылаться на них по строковому идентификатору при создании проекций.
+
+#### Именованные схемы
+
+Класс позволяет регистрировать схемы под уникальными именами. Метод
+`defineSchema` сохраняет схему в реестре, а метод `project` использует
+имя для применения правил.
 
 ```js
 import {DataProjector} from '@e22m4u/js-data-projector';
@@ -206,7 +245,10 @@ console.log(result);
 // }
 ```
 
-Комбинирование именованных схем.
+#### Комбинирование именованных схем
+
+Именованные схемы могут быть использованы внутри других схем. Что позволяет
+комбинировать зарегистрированные схемы для комплексных структур данных.
 
 ```js
 import {DataProjector} from '@e22m4u/js-data-projector';