Browse Source

docs: updates README.md

e22m4u 3 weeks ago
parent
commit
0a25ab2649
1 changed files with 146 additions and 26 deletions
  1. 146 26
      README.md

+ 146 - 26
README.md

@@ -35,35 +35,32 @@ const {DataValidator} = require('@e22m4u/js-data-schema');
 
 ### Схема данных
 
труктура:
войства схемы (далее параметры):
 
-```ts
-{
-  type?: DataType;
-  items?: DataSchemaObject | DataSchemaFactory | string;
-  properties?: DataSchemaProperties | DataSchemaFactory | string;
-  required?: boolean;
-}
-```
+- `type` тип значения;
+- `items` схема элементов массива;
+- `properties` схема свойств объекта;
+- `required` исключение [пустых значений](#пустые-значения);
 
 #### type
 
-Параметр `type` определяет тип допустимых значений.
+Параметр `type` определяет тип допустимых значений. При определении схемы можно
+использовать константу или название типа в виде строки.
 
 | константа          | значение    |
 |--------------------|-------------|
-| `DataType.ANY`     | `"any"`     |
-| `DataType.STRING`  | `"string"`  |
-| `DataType.NUMBER`  | `"number"`  |
-| `DataType.BOOLEAN` | `"boolean"` |
-| `DataType.ARRAY`   | `"array"`   |
-| `DataType.OBJECT`  | `"object"`  |
+| `DataType.ANY`     | `'any'`     |
+| `DataType.STRING`  | `'string'`  |
+| `DataType.NUMBER`  | `'number'`  |
+| `DataType.BOOLEAN` | `'boolean'` |
+| `DataType.ARRAY`   | `'array'`   |
+| `DataType.OBJECT`  | `'object'`  |
 
 
 #### items
 
 Параметр `items` позволяет указать схему для элементов массива. Параметр можно
-использовать, только если явно указан тип `array` текущей схемы.
+использовать, только если явно указан тип `array`.
 
 ```js
 {
@@ -78,7 +75,7 @@ const {DataValidator} = require('@e22m4u/js-data-schema');
 #### properties
 
 Параметр `properties` позволяет указать схему каждого свойства объекта.
-Параметр можно использовать, только если явно указан тип `object` текущей схемы.
+Параметр можно использовать, только если явно указан тип `object`.
 
 ```js
 {
@@ -108,7 +105,131 @@ const {DataValidator} = require('@e22m4u/js-data-schema');
   required: true
 }
 // запрещает '', undefined и null
-// см. раздел «Пустые значения»
+```
+
+#### Примеры
+
+Определение типа значения.
+
+```js
+{
+  type: DataType.STRING // только строки
+}
+
+// допустимо:
+//   'str'
+//   ''
+//   undefined
+//   null
+```
+
+Исключение [пустых значений](#пустые-значения).
+
+```js
+{
+  type: DataType.STRING, // допускает только строки
+  required: true         // исключает пустые значения
+}
+
+// допустимо:
+//   'str'
+
+// исключено:
+//   ''
+//   undefined
+//   null
+```
+
+Определение схемы для элементов массива.
+
+```js
+{
+  type: DataType.ARRAY,
+  items: { // схема элементов
+    type: DataType.NUMBER // только числа
+  }
+}
+
+// допустимо:
+//   [1, 2, 3]
+//   [undefined, null]
+//   []
+//   undefined
+//   null
+```
+
+Исключение [пустых значений](#пустые-значения) для массива и его элементов.
+
+```js
+{
+  type: DataType.ARRAY,
+  items: { // схема элементов
+    type: DataType.NUMBER, // допускает только числа
+    required: true         // исключает пустые значения
+  },
+  required: true // массив является обязательным
+}
+
+// допустимо:
+//   [1, 2, 3]
+//   []
+
+// исключено:
+//   [undefined, null]
+//   undefined
+//   null
+```
+
+Определение схемы для свойств объекта.
+
+```js
+{
+  type: DataType.OBJECT,
+  items: {
+    foo: { // схема свойства foo
+      type: DataType.STRING // только строки
+    },
+    bar: { // схема свойства bar
+      type: DataType.NUMBER // только числа
+    }
+  }
+}
+
+// допустимо:
+//   {foo: 'str', bar: 10}
+//   {foo: null, bar: null}
+//   {}
+//   undefined
+//   null
+```
+
+Исключение [пустых значений](#пустые-значения) для объекта и его свойств.
+
+```js
+{
+  type: DataType.OBJECT,
+  properties: {
+    foo: { // схема свойства foo
+      type: DataType.STRING, // допускает только строки
+      required: true         // исключает пустые значения
+    },
+    bar: { // схема свойства bar
+      type: DataType.NUMBER  // допускает только числа
+    }
+  },
+  required: true // объект является обязательным
+}
+
+// допустимо:
+//   {foo: 'str', bar: 10}
+//   {foo: 'str'}
+
+// исключено:
+//   {foo: '', bar: 10}
+//   {foo: null}
+//   {}
+//   undefined
+//   null
 ```
 
 ## Использование
@@ -117,19 +238,18 @@ const {DataValidator} = require('@e22m4u/js-data-schema');
 
 ### Проверка данных
 
-Проверка примитивных значений.
+Проверка типа значения.
 
 ```js
 import {DataValidator, DataType} from '@e22m4u/js-data-schema';
 
+const validator = new DataValidator();
+
 // определение схемы
 const schema = {
-  type: DataType.STRING, // <= только строки
+  type: DataType.STRING, // только строки
 };
 
-// создание экземпляра сервиса
-const validator = new DataValidator();
-
 // значение "str" соответствует схеме
 validator.validate('str', schema); // OK
 
@@ -153,7 +273,7 @@ const validator = new DataValidator();
 // определение схемы
 const schema = {
   type: DataType.NUMBER, // только числа
-  required: true,        // <= исключает undefined, null
+  required: true,        // исключает пустые значения
 };
 
 // значение 10 соответствует схеме
@@ -236,7 +356,7 @@ validator.validate([1, 2, 3], schema); // error: DataValidationError
 
 ### Парсинг данных
 
-Приведение типа данных.
+Приведение типа согласно схеме.
 
 ```js
 import {DataParser, DataType} from '@e22m4u/js-data-schema';