@rogolev/value 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }