@rogolev/value 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. package/.prettierignore +4 -4
  2. package/CHANGELOG.md +68 -56
  3. package/LICENSE +41 -41
  4. package/README.md +100 -91
  5. package/babel.config.json +20 -20
  6. package/docs/classes/Convert/toArray.md +100 -0
  7. package/docs/classes/Convert/toAssoc.md +90 -0
  8. package/docs/classes/Convert/toBool.md +72 -0
  9. package/docs/classes/Convert/toBoolean.md +72 -0
  10. package/docs/classes/Convert/toFloat.md +69 -0
  11. package/docs/classes/Convert/toInt.md +86 -0
  12. package/docs/classes/Convert/toInteger.md +86 -0
  13. package/docs/classes/Convert/toList.md +73 -0
  14. package/docs/classes/Convert/toObject.md +76 -0
  15. package/docs/classes/Convert/toString.md +125 -0
  16. package/docs/classes/Convert.md +44 -0
  17. package/docs/classes/Type/isArray.md +106 -0
  18. package/docs/classes/Type/isAssoc.md +57 -0
  19. package/docs/classes/Type/isBigInt.md +49 -0
  20. package/docs/classes/Type/isBool.md +51 -0
  21. package/docs/classes/Type/isBoolean.md +51 -0
  22. package/docs/classes/Type/isClass.md +60 -0
  23. package/docs/classes/Type/isEmpty.md +53 -0
  24. package/docs/classes/Type/isFloat.md +77 -0
  25. package/docs/classes/Type/isFunction.md +64 -0
  26. package/docs/classes/Type/isInfinity.md +59 -0
  27. package/docs/classes/Type/isInt.md +77 -0
  28. package/docs/classes/Type/isInteger.md +77 -0
  29. package/docs/classes/Type/isList.md +49 -0
  30. package/docs/classes/Type/isNaN.md +57 -0
  31. package/docs/classes/Type/isNull.md +49 -0
  32. package/docs/classes/Type/isNumber.md +60 -0
  33. package/docs/classes/Type/isNumeric.md +58 -0
  34. package/docs/classes/Type/isObject.md +53 -0
  35. package/docs/classes/Type/isScalar.md +54 -0
  36. package/docs/classes/Type/isString.md +54 -0
  37. package/docs/classes/Type/isSymbol.md +56 -0
  38. package/docs/classes/Type/isUndefined.md +52 -0
  39. package/docs/classes/Type.md +74 -0
  40. package/docs/classes.md +9 -0
  41. package/docs/helpers/array.md +80 -80
  42. package/docs/helpers/empty.md +77 -77
  43. package/docs/helpers/gettype.md +69 -69
  44. package/docs/helpers/is_array.md +105 -105
  45. package/docs/helpers/is_assoc.md +59 -59
  46. package/docs/helpers/is_bigint.md +57 -57
  47. package/docs/helpers/is_bool.md +50 -50
  48. package/docs/helpers/is_boolean.md +50 -50
  49. package/docs/helpers/is_class.md +73 -73
  50. package/docs/helpers/is_float.md +71 -71
  51. package/docs/helpers/is_function.md +62 -62
  52. package/docs/helpers/is_infinity.md +61 -61
  53. package/docs/helpers/is_int.md +81 -81
  54. package/docs/helpers/is_integer.md +82 -82
  55. package/docs/helpers/is_list.md +51 -51
  56. package/docs/helpers/is_nan.md +59 -59
  57. package/docs/helpers/is_null.md +49 -49
  58. package/docs/helpers/is_number.md +67 -67
  59. package/docs/helpers/is_numeric.md +76 -76
  60. package/docs/helpers/is_object.md +69 -69
  61. package/docs/helpers/is_scalar.md +60 -60
  62. package/docs/helpers/is_string.md +58 -58
  63. package/docs/helpers/is_symbol.md +58 -58
  64. package/docs/helpers/is_undefined.md +56 -56
  65. package/docs/helpers/print.md +187 -187
  66. package/docs/helpers/print_type.md +225 -225
  67. package/docs/helpers/settype.md +78 -78
  68. package/docs/helpers/to_array.md +106 -106
  69. package/docs/helpers/to_assoc.md +91 -91
  70. package/docs/helpers/to_bool.md +76 -76
  71. package/docs/helpers/to_boolean.md +77 -77
  72. package/docs/helpers/to_float.md +70 -70
  73. package/docs/helpers/to_int.md +87 -87
  74. package/docs/helpers/to_integer.md +87 -87
  75. package/docs/helpers/to_list.md +47 -47
  76. package/docs/helpers/to_object.md +76 -76
  77. package/docs/helpers/to_string.md +134 -134
  78. package/docs/helpers.md +51 -51
  79. package/docs/types/NaN.md +30 -30
  80. package/docs/types/array.md +252 -252
  81. package/docs/types/bigint.md +34 -34
  82. package/docs/types/boolean.md +47 -47
  83. package/docs/types/class.md +36 -36
  84. package/docs/types/float.md +35 -35
  85. package/docs/types/function.md +121 -121
  86. package/docs/types/infinity.md +32 -32
  87. package/docs/types/integer.md +35 -35
  88. package/docs/types/null.md +23 -23
  89. package/docs/types/object.md +62 -62
  90. package/docs/types/string.md +33 -33
  91. package/docs/types/symbol.md +29 -29
  92. package/docs/types/undefined.md +25 -25
  93. package/docs/types.md +44 -44
  94. package/eslint.config.mjs +1664 -1664
  95. package/index.mjs +40 -37
  96. package/jest.config.mjs +31 -31
  97. package/package.json +48 -47
  98. package/prettier.config.mjs +224 -224
  99. package/src/classes/Convert.mjs +819 -0
  100. package/src/classes/Type.mjs +1285 -0
  101. package/src/helpers/array.mjs +107 -107
  102. package/src/helpers/empty.mjs +70 -70
  103. package/src/helpers/gettype.mjs +133 -133
  104. package/src/helpers/is_array.mjs +128 -128
  105. package/src/helpers/is_assoc.mjs +51 -51
  106. package/src/helpers/is_bigint.mjs +47 -47
  107. package/src/helpers/is_bool.mjs +43 -43
  108. package/src/helpers/is_boolean.mjs +43 -43
  109. package/src/helpers/is_class.mjs +87 -87
  110. package/src/helpers/is_float.mjs +67 -67
  111. package/src/helpers/is_function.mjs +74 -74
  112. package/src/helpers/is_infinity.mjs +52 -52
  113. package/src/helpers/is_int.mjs +57 -57
  114. package/src/helpers/is_integer.mjs +74 -74
  115. package/src/helpers/is_list.mjs +43 -43
  116. package/src/helpers/is_nan.mjs +51 -51
  117. package/src/helpers/is_null.mjs +37 -37
  118. package/src/helpers/is_number.mjs +49 -49
  119. package/src/helpers/is_numeric.mjs +64 -64
  120. package/src/helpers/is_object.mjs +72 -72
  121. package/src/helpers/is_scalar.mjs +45 -45
  122. package/src/helpers/is_string.mjs +46 -46
  123. package/src/helpers/is_symbol.mjs +46 -46
  124. package/src/helpers/is_undefined.mjs +44 -44
  125. package/src/helpers/print.mjs +245 -245
  126. package/src/helpers/print_type.mjs +261 -261
  127. package/src/helpers/settype.mjs +101 -101
  128. package/src/helpers/to_array.mjs +118 -118
  129. package/src/helpers/to_assoc.mjs +98 -98
  130. package/src/helpers/to_bool.mjs +68 -68
  131. package/src/helpers/to_boolean.mjs +64 -64
  132. package/src/helpers/to_float.mjs +72 -72
  133. package/src/helpers/to_int.mjs +93 -93
  134. package/src/helpers/to_integer.mjs +81 -81
  135. package/src/helpers/to_list.mjs +56 -56
  136. package/src/helpers/to_object.mjs +94 -94
  137. package/src/helpers/to_string.mjs +157 -157
  138. package/tests/classes/Convert.test.mjs +399 -0
  139. package/tests/classes/Type.test.mjs +1263 -0
  140. package/tests/helpers/array.test.mjs +58 -58
  141. package/tests/helpers/empty.test.mjs +22 -22
  142. package/tests/helpers/gettype.test.mjs +74 -74
  143. package/tests/helpers/is_array.test.mjs +404 -404
  144. package/tests/helpers/is_assoc.test.mjs +42 -42
  145. package/tests/helpers/is_bigint.test.mjs +51 -51
  146. package/tests/helpers/is_bool.test.mjs +43 -43
  147. package/tests/helpers/is_boolean.test.mjs +43 -43
  148. package/tests/helpers/is_class.test.mjs +84 -84
  149. package/tests/helpers/is_float.test.mjs +87 -87
  150. package/tests/helpers/is_function.test.mjs +83 -83
  151. package/tests/helpers/is_infinity.test.mjs +46 -46
  152. package/tests/helpers/is_int.test.mjs +45 -45
  153. package/tests/helpers/is_integer.test.mjs +64 -64
  154. package/tests/helpers/is_list.test.mjs +42 -42
  155. package/tests/helpers/is_nan.test.mjs +43 -43
  156. package/tests/helpers/is_null.test.mjs +17 -17
  157. package/tests/helpers/is_number.test.mjs +25 -25
  158. package/tests/helpers/is_numeric.test.mjs +30 -30
  159. package/tests/helpers/is_object.test.mjs +52 -52
  160. package/tests/helpers/is_scalar.test.mjs +21 -21
  161. package/tests/helpers/is_string.test.mjs +20 -20
  162. package/tests/helpers/is_symbol.test.mjs +20 -20
  163. package/tests/helpers/is_undefined.test.mjs +18 -18
  164. package/tests/helpers/print.test.mjs +62 -62
  165. package/tests/helpers/print_type.test.mjs +62 -62
  166. package/tests/helpers/settype.test.mjs +34 -34
  167. package/tests/helpers/to_array.test.mjs +38 -38
  168. package/tests/helpers/to_assoc.test.mjs +33 -33
  169. package/tests/helpers/to_bool.test.mjs +51 -51
  170. package/tests/helpers/to_boolean.test.mjs +51 -51
  171. package/tests/helpers/to_float.test.mjs +26 -26
  172. package/tests/helpers/to_int.test.mjs +48 -48
  173. package/tests/helpers/to_integer.test.mjs +48 -48
  174. package/tests/helpers/to_list.test.mjs +32 -32
  175. package/tests/helpers/to_object.test.mjs +36 -36
  176. package/tests/helpers/to_string.test.mjs +71 -71
@@ -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
+ }