@rogolev/value 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +19 -1
  3. package/docs/classes/Value/constructor.md +48 -0
  4. package/docs/classes/Value/get.md +51 -0
  5. package/docs/classes/Value/getType.md +71 -0
  6. package/docs/classes/Value/isArray.md +67 -0
  7. package/docs/classes/Value/isAssoc.md +68 -0
  8. package/docs/classes/Value/isBigInt.md +52 -0
  9. package/docs/classes/Value/isBool.md +60 -0
  10. package/docs/classes/Value/isBoolean.md +60 -0
  11. package/docs/classes/Value/isClass.md +55 -0
  12. package/docs/classes/Value/isEmpty.md +84 -0
  13. package/docs/classes/Value/isFloat.md +52 -0
  14. package/docs/classes/Value/isFunction.md +60 -0
  15. package/docs/classes/Value/isInfinity.md +60 -0
  16. package/docs/classes/Value/isInt.md +52 -0
  17. package/docs/classes/Value/isInteger.md +52 -0
  18. package/docs/classes/Value/isList.md +59 -0
  19. package/docs/classes/Value/isNaN.md +79 -0
  20. package/docs/classes/Value/isNull.md +59 -0
  21. package/docs/classes/Value/isNumber.md +80 -0
  22. package/docs/classes/Value/isNumeric.md +79 -0
  23. package/docs/classes/Value/isObject.md +68 -0
  24. package/docs/classes/Value/isScalar.md +72 -0
  25. package/docs/classes/Value/isString.md +67 -0
  26. package/docs/classes/Value/isSymbol.md +75 -0
  27. package/docs/classes/Value/isUndefined.md +67 -0
  28. package/docs/classes/Value/print.md +164 -0
  29. package/docs/classes/Value/printType.md +158 -0
  30. package/docs/classes/Value/setType.md +79 -0
  31. package/docs/classes/Value/toArray.md +85 -0
  32. package/docs/classes/Value/toAssoc.md +85 -0
  33. package/docs/classes/Value/toBool.md +71 -0
  34. package/docs/classes/Value/toBoolean.md +71 -0
  35. package/docs/classes/Value/toFloat.md +72 -0
  36. package/docs/classes/Value/toInt.md +72 -0
  37. package/docs/classes/Value/toInteger.md +72 -0
  38. package/docs/classes/Value/toList.md +77 -0
  39. package/docs/classes/Value/toObject.md +78 -0
  40. package/docs/classes/Value/toPrint.md +115 -0
  41. package/docs/classes/Value/toPrintType.md +110 -0
  42. package/docs/classes/Value/toString.md +134 -0
  43. package/docs/classes/Value.md +113 -0
  44. package/docs/classes.md +2 -0
  45. package/docs/constants.md +47 -0
  46. package/docs/helpers/value.md +95 -0
  47. package/docs/helpers.md +2 -0
  48. package/index.mjs +3 -0
  49. package/package.json +2 -2
  50. package/src/classes/Convert.mjs +818 -819
  51. package/src/classes/Type.mjs +1284 -1285
  52. package/src/classes/Value.mjs +2846 -0
  53. package/src/constants.mjs +14 -0
  54. package/src/helpers/array.mjs +107 -107
  55. package/src/helpers/empty.mjs +70 -70
  56. package/src/helpers/gettype.mjs +149 -133
  57. package/src/helpers/is_array.mjs +128 -128
  58. package/src/helpers/is_assoc.mjs +51 -51
  59. package/src/helpers/is_bigint.mjs +47 -47
  60. package/src/helpers/is_bool.mjs +43 -43
  61. package/src/helpers/is_boolean.mjs +43 -43
  62. package/src/helpers/is_class.mjs +87 -87
  63. package/src/helpers/is_float.mjs +67 -67
  64. package/src/helpers/is_function.mjs +74 -74
  65. package/src/helpers/is_infinity.mjs +52 -52
  66. package/src/helpers/is_int.mjs +57 -57
  67. package/src/helpers/is_integer.mjs +74 -74
  68. package/src/helpers/is_list.mjs +43 -43
  69. package/src/helpers/is_nan.mjs +51 -51
  70. package/src/helpers/is_null.mjs +37 -37
  71. package/src/helpers/is_number.mjs +49 -49
  72. package/src/helpers/is_numeric.mjs +64 -64
  73. package/src/helpers/is_object.mjs +72 -72
  74. package/src/helpers/is_scalar.mjs +45 -45
  75. package/src/helpers/is_string.mjs +46 -46
  76. package/src/helpers/is_symbol.mjs +46 -46
  77. package/src/helpers/is_undefined.mjs +44 -44
  78. package/src/helpers/print.mjs +245 -245
  79. package/src/helpers/print_type.mjs +261 -261
  80. package/src/helpers/settype.mjs +101 -101
  81. package/src/helpers/to_array.mjs +118 -118
  82. package/src/helpers/to_assoc.mjs +98 -98
  83. package/src/helpers/to_bool.mjs +68 -68
  84. package/src/helpers/to_boolean.mjs +64 -64
  85. package/src/helpers/to_float.mjs +72 -72
  86. package/src/helpers/to_int.mjs +93 -93
  87. package/src/helpers/to_integer.mjs +81 -81
  88. package/src/helpers/to_list.mjs +56 -56
  89. package/src/helpers/to_object.mjs +94 -94
  90. package/src/helpers/to_string.mjs +157 -157
  91. package/src/helpers/value.mjs +92 -0
  92. package/tests/classes/Convert.test.mjs +398 -399
  93. package/tests/classes/Type.test.mjs +1262 -1263
  94. package/tests/classes/Value.test.mjs +423 -0
  95. package/tests/constants.test.mjs +75 -0
  96. package/tests/helpers/array.test.mjs +58 -58
  97. package/tests/helpers/empty.test.mjs +22 -22
  98. package/tests/helpers/gettype.test.mjs +74 -74
  99. package/tests/helpers/is_array.test.mjs +404 -404
  100. package/tests/helpers/is_assoc.test.mjs +42 -42
  101. package/tests/helpers/is_bigint.test.mjs +51 -51
  102. package/tests/helpers/is_bool.test.mjs +43 -43
  103. package/tests/helpers/is_boolean.test.mjs +43 -43
  104. package/tests/helpers/is_class.test.mjs +84 -84
  105. package/tests/helpers/is_float.test.mjs +87 -87
  106. package/tests/helpers/is_function.test.mjs +83 -83
  107. package/tests/helpers/is_infinity.test.mjs +46 -46
  108. package/tests/helpers/is_int.test.mjs +45 -45
  109. package/tests/helpers/is_integer.test.mjs +64 -64
  110. package/tests/helpers/is_list.test.mjs +42 -42
  111. package/tests/helpers/is_nan.test.mjs +43 -43
  112. package/tests/helpers/is_null.test.mjs +17 -17
  113. package/tests/helpers/is_number.test.mjs +25 -25
  114. package/tests/helpers/is_numeric.test.mjs +30 -30
  115. package/tests/helpers/is_object.test.mjs +52 -52
  116. package/tests/helpers/is_scalar.test.mjs +21 -21
  117. package/tests/helpers/is_string.test.mjs +20 -20
  118. package/tests/helpers/is_symbol.test.mjs +20 -20
  119. package/tests/helpers/is_undefined.test.mjs +18 -18
  120. package/tests/helpers/print.test.mjs +62 -62
  121. package/tests/helpers/print_type.test.mjs +62 -62
  122. package/tests/helpers/settype.test.mjs +34 -34
  123. package/tests/helpers/to_array.test.mjs +38 -38
  124. package/tests/helpers/to_assoc.test.mjs +33 -33
  125. package/tests/helpers/to_bool.test.mjs +51 -51
  126. package/tests/helpers/to_boolean.test.mjs +51 -51
  127. package/tests/helpers/to_float.test.mjs +26 -26
  128. package/tests/helpers/to_int.test.mjs +48 -48
  129. package/tests/helpers/to_integer.test.mjs +48 -48
  130. package/tests/helpers/to_list.test.mjs +32 -32
  131. package/tests/helpers/to_object.test.mjs +36 -36
  132. package/tests/helpers/to_string.test.mjs +71 -71
  133. package/tests/helpers/value.test.mjs +68 -0
@@ -1,261 +1,261 @@
1
- import gettype from './gettype.mjs';
2
- import is_bool from './is_bool.mjs';
3
- import is_class from './is_class.mjs';
4
- import print from './print.mjs';
5
-
6
- function print_array_type(value) {
7
- let result = `array(${Object.values(value).length}) ${Array.isArray(value) ? '[' : '{'}`;
8
-
9
- let new_line = false;
10
-
11
- for (const [k, v] of Object.entries(value)) {
12
- new_line = true;
13
-
14
- result += `\n ${k}: ${print_type(v, true).replace(/\n/g, '\n ')},`;
15
- }
16
-
17
- return (result += `${new_line ? '\n' : ''}${Array.isArray(value) ? ']' : '}'}`);
18
- }
19
-
20
- function print_object_type(value) {
21
- let result = `object(${value.constructor.name}) (${Object.values(value).length}) {`;
22
-
23
- let new_line = false;
24
-
25
- for (const [k, v] of Object.entries(value)) {
26
- new_line = true;
27
-
28
- result += `\n ${k} = ${print_type(v, true).replace(/\n/g, '\n ')};`;
29
- }
30
-
31
- return (result += `${new_line ? '\n' : ''}}`);
32
- }
33
-
34
- function print_class_type(value) {
35
- const parent = Object.getPrototypeOf(value);
36
-
37
- let result = `class ${value.name ? `${value.name} ` : ''}${is_class(parent) ? `extends ${parent.name} ` : ''}{`;
38
-
39
- let new_line = false;
40
-
41
- for (const [k, v] of Object.entries(value)) {
42
- new_line = true;
43
-
44
- result += `\n ${k} = ${print_type(v, true).replace(/\n/g, '\n ')};`;
45
- }
46
-
47
- return (result += `${new_line ? '\n' : ''}}`);
48
- }
49
-
50
- /**
51
- * Преобразует значение переменной в строку с указанием типа и выводит его на консоль.
52
- *
53
- * ### Описание
54
- *
55
- * Функция `print_type` используется для преобразования различных типов данных в строку с указанием типа и вывода их на консоль. Она обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление с указанием типа.
56
- *
57
- * ### Параметры
58
- *
59
- * - `value` (any)
60
- * Переменная, значение которой необходимо преобразовать в строку с указанием типа и вывести на консоль.
61
- *
62
- * - `return_result` (boolean)
63
- * Если `true`, функция возвращает строковое представление значения переменной. Если `false`, функция выводит строковое представление значения переменной на консоль.
64
- *
65
- * ### Возвращаемое значение
66
- *
67
- * Возвращает строковое представление значения переменной с указанием типа, если параметр `return_result` равен `true`. В противном случае возвращает `undefined`.
68
- *
69
- * ### Примеры использования
70
- *
71
- * 1. Преобразование строки:
72
- *
73
- * ```js
74
- * print_type('example');
75
- * ```
76
- * Вывод:
77
- * ```txt
78
- * string(7) "example"
79
- * ```
80
- *
81
- * 2. Преобразование числа:
82
- *
83
- * ```js
84
- * print_type(123);
85
- * ```
86
- * Вывод:
87
- * ```txt
88
- * int(123)
89
- * ```
90
- *
91
- * ```js
92
- * print_type(123.45);
93
- * ```
94
- * Вывод:
95
- * ```txt
96
- * float(123.45)
97
- * ```
98
- *
99
- * 3. Преобразование булевых значений:
100
- *
101
- * ```js
102
- * print_type(true);
103
- * ```
104
- * Вывод:
105
- * ```txt
106
- * bool(true)
107
- * ```
108
- *
109
- * ```js
110
- * print_type(false);
111
- * ```
112
- * Вывод:
113
- * ```txt
114
- * bool(false)
115
- * ```
116
- *
117
- * 4. Преобразование null и undefined:
118
- *
119
- * ```js
120
- * print_type(null);
121
- * ```
122
- * Вывод:
123
- * ```txt
124
- * null
125
- * ```
126
- *
127
- * ```js
128
- * print_type(undefined);
129
- * ```
130
- * Вывод:
131
- * ```txt
132
- * undefined
133
- * ```
134
- *
135
- * 5. Преобразование массива:
136
- *
137
- * ```js
138
- * const arr = [1, 2, 3];
139
- * print_type(arr);
140
- * ```
141
- * Вывод:
142
- * ```txt
143
- * array(3) [
144
- * 0: int(1),
145
- * 1: int(2),
146
- * 2: int(3),
147
- * ]
148
- * ```
149
- *
150
- * 6. Преобразование ассоциативного массива:
151
- *
152
- * ```js
153
- * const obj = { key: 'value' };
154
- * print_type(obj);
155
- * ```
156
- * Вывод:
157
- * ```txt
158
- * array(1) {
159
- * key: string(5) "value",
160
- * }
161
- * ```
162
- *
163
- * 7. Преобразование функции:
164
- *
165
- * ```js
166
- * const func = function() {};
167
- * print_type(func);
168
- * ```
169
- * Вывод:
170
- * ```txt
171
- * function func() {}
172
- * ```
173
- *
174
- * 8. Преобразование символа:
175
- *
176
- * ```js
177
- * const symbol = Symbol('example');
178
- * print_type(symbol);
179
- * ```
180
- * Вывод:
181
- * ```txt
182
- * Symbol(example)
183
- * ```
184
- *
185
- * 9. Преобразование класса:
186
- *
187
- * ```js
188
- * class MyClass {
189
- * static test = 'test';
190
- * }
191
- * print_type(MyClass);
192
- * ```
193
- * Вывод:
194
- * ```txt
195
- * class MyClass {
196
- * test = string(4) "test";
197
- * }
198
- * ```
199
- *
200
- * 10. Преобразование экземпляра класса:
201
- *
202
- * ```js
203
- * class MyClass {
204
- * test = 'test';
205
- * }
206
- * const instance = new MyClass();
207
- * print_type(instance);
208
- * ```
209
- * Вывод:
210
- * ```txt
211
- * object(MyClass) (1) {
212
- * test: string(4) "test",
213
- * }
214
- * ```
215
- *
216
- * @param {any} value Переменная, значение которой необходимо преобразовать в строку с указанием типа и вывести на консоль.
217
- * @param {boolean} return_result Если `true`, функция возвращает строковое представление значения переменной. Если `false`, функция выводит строковое представление значения переменной на консоль.
218
- * @returns {string|undefined} Возвращает строковое представление значения переменной с указанием типа, если параметр `return_result` равен `true`. В противном случае возвращает `undefined`.
219
- */
220
- export default function print_type(value, return_result = false) {
221
- if (!is_bool(return_result)) {
222
- throw new TypeError('Параметр "return_result" должен иметь логический тип.');
223
- }
224
-
225
- let result = '';
226
-
227
- switch (gettype(value)) {
228
- case 'boolean':
229
- result = value ? 'bool(true)' : 'bool(false)';
230
- break;
231
- case 'integer':
232
- result = `int(${value})`;
233
- break;
234
- case 'float':
235
- result = `float(${value})`;
236
- break;
237
- case 'string':
238
- result = `string(${value.length}) "${value}"`;
239
- break;
240
- case 'array':
241
- result = print_array_type(value);
242
- break;
243
- case 'object':
244
- result = print_object_type(value);
245
- break;
246
- case 'class':
247
- result = print_class_type(value);
248
- break;
249
- default:
250
- result = print(value, true);
251
- break;
252
- }
253
-
254
- if (return_result) {
255
- return result;
256
- }
257
-
258
- console.log(result);
259
-
260
- return undefined;
261
- }
1
+ import gettype from './gettype.mjs';
2
+ import is_bool from './is_bool.mjs';
3
+ import is_class from './is_class.mjs';
4
+ import print from './print.mjs';
5
+
6
+ function print_array_type(value) {
7
+ let result = `array(${Object.values(value).length}) ${Array.isArray(value) ? '[' : '{'}`;
8
+
9
+ let new_line = false;
10
+
11
+ for (const [k, v] of Object.entries(value)) {
12
+ new_line = true;
13
+
14
+ result += `\n ${k}: ${print_type(v, true).replace(/\n/g, '\n ')},`;
15
+ }
16
+
17
+ return (result += `${new_line ? '\n' : ''}${Array.isArray(value) ? ']' : '}'}`);
18
+ }
19
+
20
+ function print_object_type(value) {
21
+ let result = `object(${value.constructor.name}) (${Object.values(value).length}) {`;
22
+
23
+ let new_line = false;
24
+
25
+ for (const [k, v] of Object.entries(value)) {
26
+ new_line = true;
27
+
28
+ result += `\n ${k} = ${print_type(v, true).replace(/\n/g, '\n ')};`;
29
+ }
30
+
31
+ return (result += `${new_line ? '\n' : ''}}`);
32
+ }
33
+
34
+ function print_class_type(value) {
35
+ const parent = Object.getPrototypeOf(value);
36
+
37
+ let result = `class ${value.name ? `${value.name} ` : ''}${is_class(parent) ? `extends ${parent.name} ` : ''}{`;
38
+
39
+ let new_line = false;
40
+
41
+ for (const [k, v] of Object.entries(value)) {
42
+ new_line = true;
43
+
44
+ result += `\n ${k} = ${print_type(v, true).replace(/\n/g, '\n ')};`;
45
+ }
46
+
47
+ return (result += `${new_line ? '\n' : ''}}`);
48
+ }
49
+
50
+ /**
51
+ * Преобразует значение переменной в строку с указанием типа и выводит его на консоль.
52
+ *
53
+ * ### Описание
54
+ *
55
+ * Функция `print_type` используется для преобразования различных типов данных в строку с указанием типа и вывода их на консоль. Она обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление с указанием типа.
56
+ *
57
+ * ### Параметры
58
+ *
59
+ * - `value` (any)
60
+ * Переменная, значение которой необходимо преобразовать в строку с указанием типа и вывести на консоль.
61
+ *
62
+ * - `return_result` (boolean)
63
+ * Если `true`, функция возвращает строковое представление значения переменной. Если `false`, функция выводит строковое представление значения переменной на консоль.
64
+ *
65
+ * ### Возвращаемое значение
66
+ *
67
+ * Возвращает строковое представление значения переменной с указанием типа, если параметр `return_result` равен `true`. В противном случае возвращает `undefined`.
68
+ *
69
+ * ### Примеры использования
70
+ *
71
+ * 1. Преобразование строки:
72
+ *
73
+ * ```js
74
+ * print_type('example');
75
+ * ```
76
+ * Вывод:
77
+ * ```txt
78
+ * string(7) "example"
79
+ * ```
80
+ *
81
+ * 2. Преобразование числа:
82
+ *
83
+ * ```js
84
+ * print_type(123);
85
+ * ```
86
+ * Вывод:
87
+ * ```txt
88
+ * int(123)
89
+ * ```
90
+ *
91
+ * ```js
92
+ * print_type(123.45);
93
+ * ```
94
+ * Вывод:
95
+ * ```txt
96
+ * float(123.45)
97
+ * ```
98
+ *
99
+ * 3. Преобразование булевых значений:
100
+ *
101
+ * ```js
102
+ * print_type(true);
103
+ * ```
104
+ * Вывод:
105
+ * ```txt
106
+ * bool(true)
107
+ * ```
108
+ *
109
+ * ```js
110
+ * print_type(false);
111
+ * ```
112
+ * Вывод:
113
+ * ```txt
114
+ * bool(false)
115
+ * ```
116
+ *
117
+ * 4. Преобразование null и undefined:
118
+ *
119
+ * ```js
120
+ * print_type(null);
121
+ * ```
122
+ * Вывод:
123
+ * ```txt
124
+ * null
125
+ * ```
126
+ *
127
+ * ```js
128
+ * print_type(undefined);
129
+ * ```
130
+ * Вывод:
131
+ * ```txt
132
+ * undefined
133
+ * ```
134
+ *
135
+ * 5. Преобразование массива:
136
+ *
137
+ * ```js
138
+ * const arr = [1, 2, 3];
139
+ * print_type(arr);
140
+ * ```
141
+ * Вывод:
142
+ * ```txt
143
+ * array(3) [
144
+ * 0: int(1),
145
+ * 1: int(2),
146
+ * 2: int(3),
147
+ * ]
148
+ * ```
149
+ *
150
+ * 6. Преобразование ассоциативного массива:
151
+ *
152
+ * ```js
153
+ * const obj = { key: 'value' };
154
+ * print_type(obj);
155
+ * ```
156
+ * Вывод:
157
+ * ```txt
158
+ * array(1) {
159
+ * key: string(5) "value",
160
+ * }
161
+ * ```
162
+ *
163
+ * 7. Преобразование функции:
164
+ *
165
+ * ```js
166
+ * const func = function() {};
167
+ * print_type(func);
168
+ * ```
169
+ * Вывод:
170
+ * ```txt
171
+ * function func() {}
172
+ * ```
173
+ *
174
+ * 8. Преобразование символа:
175
+ *
176
+ * ```js
177
+ * const symbol = Symbol('example');
178
+ * print_type(symbol);
179
+ * ```
180
+ * Вывод:
181
+ * ```txt
182
+ * Symbol(example)
183
+ * ```
184
+ *
185
+ * 9. Преобразование класса:
186
+ *
187
+ * ```js
188
+ * class MyClass {
189
+ * static test = 'test';
190
+ * }
191
+ * print_type(MyClass);
192
+ * ```
193
+ * Вывод:
194
+ * ```txt
195
+ * class MyClass {
196
+ * test = string(4) "test";
197
+ * }
198
+ * ```
199
+ *
200
+ * 10. Преобразование экземпляра класса:
201
+ *
202
+ * ```js
203
+ * class MyClass {
204
+ * test = 'test';
205
+ * }
206
+ * const instance = new MyClass();
207
+ * print_type(instance);
208
+ * ```
209
+ * Вывод:
210
+ * ```txt
211
+ * object(MyClass) (1) {
212
+ * test: string(4) "test",
213
+ * }
214
+ * ```
215
+ *
216
+ * @param {any} value Переменная, значение которой необходимо преобразовать в строку с указанием типа и вывести на консоль.
217
+ * @param {boolean} return_result Если `true`, функция возвращает строковое представление значения переменной. Если `false`, функция выводит строковое представление значения переменной на консоль.
218
+ * @returns {string|undefined} Возвращает строковое представление значения переменной с указанием типа, если параметр `return_result` равен `true`. В противном случае возвращает `undefined`.
219
+ */
220
+ export default function print_type(value, return_result = false) {
221
+ if (!is_bool(return_result)) {
222
+ throw new TypeError('Параметр "return_result" должен иметь логический тип.');
223
+ }
224
+
225
+ let result = '';
226
+
227
+ switch (gettype(value)) {
228
+ case 'boolean':
229
+ result = value ? 'bool(true)' : 'bool(false)';
230
+ break;
231
+ case 'integer':
232
+ result = `int(${value})`;
233
+ break;
234
+ case 'float':
235
+ result = `float(${value})`;
236
+ break;
237
+ case 'string':
238
+ result = `string(${value.length}) "${value}"`;
239
+ break;
240
+ case 'array':
241
+ result = print_array_type(value);
242
+ break;
243
+ case 'object':
244
+ result = print_object_type(value);
245
+ break;
246
+ case 'class':
247
+ result = print_class_type(value);
248
+ break;
249
+ default:
250
+ result = print(value, true);
251
+ break;
252
+ }
253
+
254
+ if (return_result) {
255
+ return result;
256
+ }
257
+
258
+ console.log(result);
259
+
260
+ return undefined;
261
+ }