@rogolev/value 0.0.1
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.
- package/.prettierignore +4 -0
- package/CHANGELOG.md +56 -0
- package/LICENSE +41 -0
- package/README.md +91 -0
- package/babel.config.json +20 -0
- package/docs/helpers/array.md +80 -0
- package/docs/helpers/empty.md +77 -0
- package/docs/helpers/gettype.md +69 -0
- package/docs/helpers/is_array.md +105 -0
- package/docs/helpers/is_assoc.md +59 -0
- package/docs/helpers/is_bigint.md +57 -0
- package/docs/helpers/is_bool.md +50 -0
- package/docs/helpers/is_boolean.md +50 -0
- package/docs/helpers/is_class.md +73 -0
- package/docs/helpers/is_float.md +71 -0
- package/docs/helpers/is_function.md +62 -0
- package/docs/helpers/is_infinity.md +61 -0
- package/docs/helpers/is_int.md +81 -0
- package/docs/helpers/is_integer.md +82 -0
- package/docs/helpers/is_list.md +51 -0
- package/docs/helpers/is_nan.md +59 -0
- package/docs/helpers/is_null.md +49 -0
- package/docs/helpers/is_number.md +67 -0
- package/docs/helpers/is_numeric.md +76 -0
- package/docs/helpers/is_object.md +69 -0
- package/docs/helpers/is_scalar.md +60 -0
- package/docs/helpers/is_string.md +58 -0
- package/docs/helpers/is_symbol.md +58 -0
- package/docs/helpers/is_undefined.md +56 -0
- package/docs/helpers/print.md +187 -0
- package/docs/helpers/print_type.md +225 -0
- package/docs/helpers/settype.md +78 -0
- package/docs/helpers/to_array.md +106 -0
- package/docs/helpers/to_assoc.md +91 -0
- package/docs/helpers/to_bool.md +76 -0
- package/docs/helpers/to_boolean.md +77 -0
- package/docs/helpers/to_float.md +70 -0
- package/docs/helpers/to_int.md +87 -0
- package/docs/helpers/to_integer.md +87 -0
- package/docs/helpers/to_list.md +47 -0
- package/docs/helpers/to_object.md +76 -0
- package/docs/helpers/to_string.md +134 -0
- package/docs/helpers.md +51 -0
- package/docs/types/NaN.md +30 -0
- package/docs/types/array.md +252 -0
- package/docs/types/bigint.md +34 -0
- package/docs/types/boolean.md +47 -0
- package/docs/types/class.md +36 -0
- package/docs/types/float.md +35 -0
- package/docs/types/function.md +121 -0
- package/docs/types/infinity.md +32 -0
- package/docs/types/integer.md +35 -0
- package/docs/types/null.md +23 -0
- package/docs/types/object.md +62 -0
- package/docs/types/string.md +33 -0
- package/docs/types/symbol.md +29 -0
- package/docs/types/undefined.md +25 -0
- package/docs/types.md +44 -0
- package/eslint.config.mjs +1664 -0
- package/index.mjs +37 -0
- package/jest.config.mjs +31 -0
- package/package.json +47 -0
- package/prettier.config.mjs +224 -0
- package/src/helpers/array.mjs +107 -0
- package/src/helpers/empty.mjs +70 -0
- package/src/helpers/gettype.mjs +133 -0
- package/src/helpers/is_array.mjs +128 -0
- package/src/helpers/is_assoc.mjs +51 -0
- package/src/helpers/is_bigint.mjs +47 -0
- package/src/helpers/is_bool.mjs +43 -0
- package/src/helpers/is_boolean.mjs +43 -0
- package/src/helpers/is_class.mjs +87 -0
- package/src/helpers/is_float.mjs +67 -0
- package/src/helpers/is_function.mjs +74 -0
- package/src/helpers/is_infinity.mjs +52 -0
- package/src/helpers/is_int.mjs +57 -0
- package/src/helpers/is_integer.mjs +74 -0
- package/src/helpers/is_list.mjs +43 -0
- package/src/helpers/is_nan.mjs +51 -0
- package/src/helpers/is_null.mjs +37 -0
- package/src/helpers/is_number.mjs +49 -0
- package/src/helpers/is_numeric.mjs +64 -0
- package/src/helpers/is_object.mjs +72 -0
- package/src/helpers/is_scalar.mjs +45 -0
- package/src/helpers/is_string.mjs +46 -0
- package/src/helpers/is_symbol.mjs +46 -0
- package/src/helpers/is_undefined.mjs +44 -0
- package/src/helpers/print.mjs +245 -0
- package/src/helpers/print_type.mjs +261 -0
- package/src/helpers/settype.mjs +101 -0
- package/src/helpers/to_array.mjs +118 -0
- package/src/helpers/to_assoc.mjs +98 -0
- package/src/helpers/to_bool.mjs +68 -0
- package/src/helpers/to_boolean.mjs +64 -0
- package/src/helpers/to_float.mjs +72 -0
- package/src/helpers/to_int.mjs +93 -0
- package/src/helpers/to_integer.mjs +81 -0
- package/src/helpers/to_list.mjs +56 -0
- package/src/helpers/to_object.mjs +94 -0
- package/src/helpers/to_string.mjs +157 -0
- package/tests/helpers/array.test.mjs +58 -0
- package/tests/helpers/empty.test.mjs +22 -0
- package/tests/helpers/gettype.test.mjs +74 -0
- package/tests/helpers/is_array.test.mjs +404 -0
- package/tests/helpers/is_assoc.test.mjs +42 -0
- package/tests/helpers/is_bigint.test.mjs +51 -0
- package/tests/helpers/is_bool.test.mjs +43 -0
- package/tests/helpers/is_boolean.test.mjs +43 -0
- package/tests/helpers/is_class.test.mjs +84 -0
- package/tests/helpers/is_float.test.mjs +87 -0
- package/tests/helpers/is_function.test.mjs +83 -0
- package/tests/helpers/is_infinity.test.mjs +46 -0
- package/tests/helpers/is_int.test.mjs +45 -0
- package/tests/helpers/is_integer.test.mjs +64 -0
- package/tests/helpers/is_list.test.mjs +42 -0
- package/tests/helpers/is_nan.test.mjs +43 -0
- package/tests/helpers/is_null.test.mjs +17 -0
- package/tests/helpers/is_number.test.mjs +25 -0
- package/tests/helpers/is_numeric.test.mjs +30 -0
- package/tests/helpers/is_object.test.mjs +52 -0
- package/tests/helpers/is_scalar.test.mjs +21 -0
- package/tests/helpers/is_string.test.mjs +20 -0
- package/tests/helpers/is_symbol.test.mjs +20 -0
- package/tests/helpers/is_undefined.test.mjs +18 -0
- package/tests/helpers/print.test.mjs +62 -0
- package/tests/helpers/print_type.test.mjs +62 -0
- package/tests/helpers/settype.test.mjs +34 -0
- package/tests/helpers/to_array.test.mjs +38 -0
- package/tests/helpers/to_assoc.test.mjs +33 -0
- package/tests/helpers/to_bool.test.mjs +51 -0
- package/tests/helpers/to_boolean.test.mjs +51 -0
- package/tests/helpers/to_float.test.mjs +26 -0
- package/tests/helpers/to_int.test.mjs +48 -0
- package/tests/helpers/to_integer.test.mjs +48 -0
- package/tests/helpers/to_list.test.mjs +32 -0
- package/tests/helpers/to_object.test.mjs +36 -0
- package/tests/helpers/to_string.test.mjs +71 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import gettype from './gettype.mjs';
|
|
2
|
+
import is_bool from './is_bool.mjs';
|
|
3
|
+
import is_class from './is_class.mjs';
|
|
4
|
+
import to_string from './to_string.mjs';
|
|
5
|
+
|
|
6
|
+
function print_array(value) {
|
|
7
|
+
let result = Array.isArray(value) ? '[' : '{';
|
|
8
|
+
|
|
9
|
+
for (const [k, v] of Object.entries(value)) {
|
|
10
|
+
result += `\n ${k}: ${print(v, true).replace(/\n/g, '\n ')},`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return (result += (result.length > 1 ? '\n' : '') + (Array.isArray(value) ? ']' : '}'));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function print_object(value) {
|
|
17
|
+
let result = `${to_string(value)} {`;
|
|
18
|
+
|
|
19
|
+
let new_line = false;
|
|
20
|
+
|
|
21
|
+
for (const [k, v] of Object.entries(value)) {
|
|
22
|
+
new_line = true;
|
|
23
|
+
|
|
24
|
+
result += `\n ${k} = ${print(v, true).replace(/\n/g, '\n ')};`;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return (result += `${new_line ? '\n' : ''}${Array.isArray(value) ? ']' : '}'}`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function print_class(value) {
|
|
31
|
+
const parent = Object.getPrototypeOf(value);
|
|
32
|
+
|
|
33
|
+
let result = `class ${value.name ? `${value.name} ` : ''}${is_class(parent) ? `extends ${parent.name} ` : ''}{`;
|
|
34
|
+
|
|
35
|
+
let new_line = false;
|
|
36
|
+
|
|
37
|
+
for (const [k, v] of Object.entries(value)) {
|
|
38
|
+
new_line = true;
|
|
39
|
+
|
|
40
|
+
result += `\n ${k} = ${print(v, true).replace(/\n/g, '\n ')};`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return (result += `${new_line ? '\n' : ''}}`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function print_string(value) {
|
|
47
|
+
return `"${value}"`;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Преобразует значение переменной в строку и выводит его на консоль.
|
|
52
|
+
*
|
|
53
|
+
* ### Описание
|
|
54
|
+
*
|
|
55
|
+
* Функция `print` используется для преобразования различных типов данных в строку и вывода их на консоль. Она обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
56
|
+
*
|
|
57
|
+
* ### Параметры
|
|
58
|
+
*
|
|
59
|
+
* - `value` (any)
|
|
60
|
+
* Переменная, значение которой необходимо преобразовать в строку и вывести на консоль.
|
|
61
|
+
*
|
|
62
|
+
* - `return_result` (boolean)
|
|
63
|
+
* Если `true`, функция возвращает строковое представление значения переменной.
|
|
64
|
+
* Если `false`, функция выводит строковое представление значения переменной на консоль.
|
|
65
|
+
*
|
|
66
|
+
* ### Возвращаемое значение
|
|
67
|
+
*
|
|
68
|
+
* Возвращает строковое представление значения переменной, если параметр `return_result` равен `true`. В противном случае возвращает `undefined`.
|
|
69
|
+
*
|
|
70
|
+
* ### Примеры использования
|
|
71
|
+
*
|
|
72
|
+
* 1. Преобразование строки:
|
|
73
|
+
*
|
|
74
|
+
* ```js
|
|
75
|
+
* print('example');
|
|
76
|
+
* ```
|
|
77
|
+
* Вывод:
|
|
78
|
+
* ```txt
|
|
79
|
+
* "example"
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* 2. Преобразование числа:
|
|
83
|
+
*
|
|
84
|
+
* ```js
|
|
85
|
+
* print(123);
|
|
86
|
+
* ```
|
|
87
|
+
* Вывод:
|
|
88
|
+
* ```txt
|
|
89
|
+
* 123
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* 3. Преобразование булевых значений:
|
|
93
|
+
*
|
|
94
|
+
* ```js
|
|
95
|
+
* print(true);
|
|
96
|
+
* ```
|
|
97
|
+
* Вывод:
|
|
98
|
+
* ```txt
|
|
99
|
+
* true
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* ```js
|
|
103
|
+
* print(false);
|
|
104
|
+
* ```
|
|
105
|
+
* Вывод:
|
|
106
|
+
* ```txt
|
|
107
|
+
* false
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* 4. Преобразование null и undefined:
|
|
111
|
+
*
|
|
112
|
+
* ```js
|
|
113
|
+
* print(null);
|
|
114
|
+
* ```
|
|
115
|
+
* Вывод:
|
|
116
|
+
* ```txt
|
|
117
|
+
* null
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* ```js
|
|
121
|
+
* print(undefined);
|
|
122
|
+
* ```
|
|
123
|
+
* Вывод:
|
|
124
|
+
* ```txt
|
|
125
|
+
* undefined
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* 5. Преобразование массива:
|
|
129
|
+
*
|
|
130
|
+
* ```js
|
|
131
|
+
* const arr = [1, 2, 3];
|
|
132
|
+
* print(arr);
|
|
133
|
+
* ```
|
|
134
|
+
* Вывод:
|
|
135
|
+
* ```txt
|
|
136
|
+
* [
|
|
137
|
+
* 0: 1,
|
|
138
|
+
* 1: 2,
|
|
139
|
+
* 2: 3,
|
|
140
|
+
* ]
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* 6. Преобразование ассоциативного массива:
|
|
144
|
+
*
|
|
145
|
+
* ```js
|
|
146
|
+
* const obj = { key: 'value' };
|
|
147
|
+
* print(obj);
|
|
148
|
+
* ```
|
|
149
|
+
* Вывод:
|
|
150
|
+
* ```txt
|
|
151
|
+
* {
|
|
152
|
+
* key: "value",
|
|
153
|
+
* }
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* 7. Преобразование функции:
|
|
157
|
+
*
|
|
158
|
+
* ```js
|
|
159
|
+
* const func = function() {};
|
|
160
|
+
* print(func);
|
|
161
|
+
* ```
|
|
162
|
+
* Вывод:
|
|
163
|
+
* ```txt
|
|
164
|
+
* function func() {}
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* 8. Преобразование символа:
|
|
168
|
+
*
|
|
169
|
+
* ```js
|
|
170
|
+
* const symbol = Symbol('example');
|
|
171
|
+
* print(symbol);
|
|
172
|
+
* ```
|
|
173
|
+
* Вывод:
|
|
174
|
+
* ```txt
|
|
175
|
+
* Symbol(example)
|
|
176
|
+
* ```
|
|
177
|
+
*
|
|
178
|
+
* 9. Преобразование класса:
|
|
179
|
+
*
|
|
180
|
+
* ```js
|
|
181
|
+
* class MyClass {
|
|
182
|
+
* static test = 'test';
|
|
183
|
+
* }
|
|
184
|
+
* print(MyClass);
|
|
185
|
+
* ```
|
|
186
|
+
* Вывод:
|
|
187
|
+
* ```txt
|
|
188
|
+
* class MyClass {
|
|
189
|
+
* test = "test";
|
|
190
|
+
* }
|
|
191
|
+
* ```
|
|
192
|
+
*
|
|
193
|
+
* 10. Преобразование экземпляра класса:
|
|
194
|
+
*
|
|
195
|
+
* ```js
|
|
196
|
+
* class MyClass {
|
|
197
|
+
* test = 'test';
|
|
198
|
+
* }
|
|
199
|
+
* const instance = new MyClass();
|
|
200
|
+
* print(instance);
|
|
201
|
+
* ```
|
|
202
|
+
* Вывод:
|
|
203
|
+
* ```txt
|
|
204
|
+
* object MyClass {
|
|
205
|
+
* test = "test";
|
|
206
|
+
* }
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* @param {any} value Переменная, значение которой необходимо преобразовать в строку и вывести на консоль.
|
|
210
|
+
* @param {boolean} return_result Если `true`, функция возвращает строковое представление значения переменной. Если `false`, функция выводит строковое представление значения переменной на консоль.
|
|
211
|
+
* @returns {string|undefined} Возвращает строковое представление значения переменной, если параметр `return_result` равен `true`. В противном случае возвращает `undefined`.
|
|
212
|
+
*/
|
|
213
|
+
export default function print(value, return_result = false) {
|
|
214
|
+
if (!is_bool(return_result)) {
|
|
215
|
+
throw new TypeError('Параметр "return_result" должен быть логическим типом.');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
let result = '';
|
|
219
|
+
|
|
220
|
+
switch (gettype(value)) {
|
|
221
|
+
case 'array':
|
|
222
|
+
result = print_array(value);
|
|
223
|
+
break;
|
|
224
|
+
case 'object':
|
|
225
|
+
result =
|
|
226
|
+
value.toString() === '[object Object]' ? print_object(value) : value.toString();
|
|
227
|
+
break;
|
|
228
|
+
case 'class':
|
|
229
|
+
result = print_class(value);
|
|
230
|
+
break;
|
|
231
|
+
case 'string':
|
|
232
|
+
result = print_string(value);
|
|
233
|
+
break;
|
|
234
|
+
default:
|
|
235
|
+
result = to_string(value);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (return_result) {
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
console.log(result);
|
|
243
|
+
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
@@ -0,0 +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
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import to_array from './to_array.mjs';
|
|
2
|
+
import to_bool from './to_bool.mjs';
|
|
3
|
+
import to_float from './to_float.mjs';
|
|
4
|
+
import to_int from './to_int.mjs';
|
|
5
|
+
import to_object from './to_object.mjs';
|
|
6
|
+
import to_string from './to_string.mjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Приводит значение переменной к указанному типу.
|
|
10
|
+
*
|
|
11
|
+
* ### Описание
|
|
12
|
+
*
|
|
13
|
+
* Функция `settype` используется для преобразования значения переменной к указанному типу. Поддерживаются типы: `boolean`, `integer`, `float`, `string`, `array`, `object`.
|
|
14
|
+
*
|
|
15
|
+
* ### Параметры
|
|
16
|
+
*
|
|
17
|
+
* - `value` (any)
|
|
18
|
+
* Переменная, значение которой необходимо привести к указанному типу.
|
|
19
|
+
*
|
|
20
|
+
* - `type` (string)
|
|
21
|
+
* Тип, к которому необходимо привести значение переменной.
|
|
22
|
+
*
|
|
23
|
+
* ### Возвращаемое значение
|
|
24
|
+
*
|
|
25
|
+
* Возвращает значение переменной, приведенное к указанному типу.
|
|
26
|
+
*
|
|
27
|
+
* ### Примеры использования
|
|
28
|
+
*
|
|
29
|
+
* 1. Преобразование в булевое значение:
|
|
30
|
+
*
|
|
31
|
+
* ```js
|
|
32
|
+
* const result = settype('true', 'boolean');
|
|
33
|
+
* // Результат: true
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* 2. Преобразование в целое число:
|
|
37
|
+
*
|
|
38
|
+
* ```js
|
|
39
|
+
* const result = settype('123', 'integer');
|
|
40
|
+
* // Результат: 123
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* 3. Преобразование в число с плавающей точкой:
|
|
44
|
+
*
|
|
45
|
+
* ```js
|
|
46
|
+
* const result = settype('123.45', 'float');
|
|
47
|
+
* // Результат: 123.45
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* 4. Преобразование в строку:
|
|
51
|
+
*
|
|
52
|
+
* ```js
|
|
53
|
+
* const result = settype(123, 'string');
|
|
54
|
+
* // Результат: '123'
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* 5. Преобразование в массив:
|
|
58
|
+
*
|
|
59
|
+
* ```js
|
|
60
|
+
* const result = settype('example', 'array');
|
|
61
|
+
* // Результат: ['example']
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* 6. Преобразование в объект:
|
|
65
|
+
*
|
|
66
|
+
* ```js
|
|
67
|
+
* const result = settype('example', 'object');
|
|
68
|
+
* // Результат: { value: 'example' }
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @param {any} value Переменная, значение которой необходимо привести к указанному типу.
|
|
72
|
+
* @param {string} type Тип, к которому необходимо привести значение переменной.
|
|
73
|
+
* @returns {any} Возвращает значение переменной, приведенное к указанному типу.
|
|
74
|
+
*/
|
|
75
|
+
export default function settype(value, type) {
|
|
76
|
+
if (type === 'boolean' || type === 'bool') {
|
|
77
|
+
return to_bool(value);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (type === 'integer' || type === 'int') {
|
|
81
|
+
return to_int(value);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (type === 'float') {
|
|
85
|
+
return to_float(value);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (type === 'string') {
|
|
89
|
+
return to_string(value);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (type === 'array') {
|
|
93
|
+
return to_array(value);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (type === 'object') {
|
|
97
|
+
return to_object(value);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return value;
|
|
101
|
+
}
|