@mirascript/cli 0.1.86 → 0.1.88
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/dist/index.js +180 -21
- package/dist/index.js.map +3 -3
- package/package.json +4 -3
- package/src/commands/man/index.ts +38 -0
- package/src/commands/man/lib.ts +110 -0
- package/src/commands/man/table.ts +27 -0
- package/src/index.ts +1 -0
- package/src/utils/color.ts +14 -0
- package/src/utils/print.ts +15 -24
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { program as
|
|
2
|
+
import { program as program5 } from "@commander-js/extra-typings";
|
|
3
3
|
import pkg from "#package.json" with { type: "json" };
|
|
4
4
|
|
|
5
5
|
// src/commands/run.ts
|
|
@@ -28,13 +28,23 @@ import {
|
|
|
28
28
|
// src/utils/color.ts
|
|
29
29
|
import supportsColor from "supports-color";
|
|
30
30
|
var noColor = !supportsColor.stdout;
|
|
31
|
+
function format(text2, style) {
|
|
32
|
+
if (style && !noColor) {
|
|
33
|
+
return style.open + text2 + style.close;
|
|
34
|
+
} else {
|
|
35
|
+
return text2;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function write(text2, style) {
|
|
39
|
+
process.stdout.write(format(text2, style));
|
|
40
|
+
}
|
|
31
41
|
|
|
32
42
|
// src/utils/print.ts
|
|
33
43
|
var options = {
|
|
34
44
|
maxDepth: 3,
|
|
35
|
-
serializeNil: noColor ? void 0 : () =>
|
|
36
|
-
serializeBoolean: noColor ? void 0 : (v) =>
|
|
37
|
-
serializeNumber: noColor ? void 0 : (v) =>
|
|
45
|
+
serializeNil: noColor ? void 0 : () => format(serializeNil(), styles.gray),
|
|
46
|
+
serializeBoolean: noColor ? void 0 : (v) => format(serializeBoolean(v), styles.blue),
|
|
47
|
+
serializeNumber: noColor ? void 0 : (v) => format(serializeNumber(v), styles.yellow),
|
|
38
48
|
serializeStringQuote: noColor ? void 0 : (v, open) => {
|
|
39
49
|
const q = styles.dim.open + v + styles.dim.close;
|
|
40
50
|
if (open) {
|
|
@@ -43,30 +53,27 @@ var options = {
|
|
|
43
53
|
return q + styles.green.close;
|
|
44
54
|
}
|
|
45
55
|
},
|
|
46
|
-
serializeStringEscape: noColor ? void 0 : (v) =>
|
|
47
|
-
serializePropName: noColor ? void 0 : (v) =>
|
|
48
|
-
serializeFunction:
|
|
49
|
-
serializeModule:
|
|
50
|
-
return operations.$ToString(v) + " " + options2.serializeRecord(v.value, depth, options2);
|
|
51
|
-
} : (v, depth, options2) => {
|
|
52
|
-
return styles.magenta.open + operations.$ToString(v) + styles.magenta.close + " " + options2.serializeRecord(v.value, depth, options2);
|
|
56
|
+
serializeStringEscape: noColor ? void 0 : (v) => format(v, styles.bold),
|
|
57
|
+
serializePropName: noColor ? void 0 : (v) => format(String(v), styles.whiteBright),
|
|
58
|
+
serializeFunction: (v) => format(operations.$ToString(v), styles.cyan),
|
|
59
|
+
serializeModule: (v, depth, options2) => {
|
|
60
|
+
return format(operations.$ToString(v), styles.magenta) + " " + options2.serializeRecord(v.value, depth, options2);
|
|
53
61
|
}
|
|
54
62
|
};
|
|
55
63
|
function print(value, depth = 3) {
|
|
56
64
|
if (value === void 0) {
|
|
57
|
-
|
|
58
|
-
return styles.gray.open + "<uninitialized>" + styles.gray.close;
|
|
65
|
+
return format("<undefined>", styles.gray);
|
|
59
66
|
}
|
|
60
67
|
return serialize(value, { ...options, maxDepth: depth });
|
|
61
68
|
}
|
|
62
69
|
|
|
63
70
|
// src/utils/execute.ts
|
|
64
71
|
var { panic, debug_print } = lib;
|
|
65
|
-
panic.serializer = debug_print.serializer = (arg,
|
|
66
|
-
if (!
|
|
72
|
+
panic.serializer = debug_print.serializer = (arg, format3) => {
|
|
73
|
+
if (!format3 && typeof arg == "string") {
|
|
67
74
|
return null;
|
|
68
75
|
}
|
|
69
|
-
if (
|
|
76
|
+
if (format3 === "%o" || format3 === "%O" || !format3) {
|
|
70
77
|
return print(arg);
|
|
71
78
|
}
|
|
72
79
|
return null;
|
|
@@ -316,7 +323,7 @@ async function getConfig(templateMode) {
|
|
|
316
323
|
return scriptConfig;
|
|
317
324
|
}
|
|
318
325
|
}
|
|
319
|
-
async function
|
|
326
|
+
async function format2(input, templateMode) {
|
|
320
327
|
if (!input) return "";
|
|
321
328
|
const mod = await loadModule();
|
|
322
329
|
const compiler = new mod.wasm.MonacoCompiler(input, await getConfig(templateMode));
|
|
@@ -339,7 +346,7 @@ command2.description("格式化 MiraScript 脚本").option("-w, --write", "直
|
|
|
339
346
|
for await (const chunk of process.stdin) {
|
|
340
347
|
input += chunk;
|
|
341
348
|
}
|
|
342
|
-
const output = await
|
|
349
|
+
const output = await format2(input, !!opt.template);
|
|
343
350
|
if (output == null) {
|
|
344
351
|
console.error("格式化失败");
|
|
345
352
|
process.exit(1);
|
|
@@ -349,7 +356,7 @@ command2.description("格式化 MiraScript 脚本").option("-w, --write", "直
|
|
|
349
356
|
}
|
|
350
357
|
for await (const file of fs.glob(script)) {
|
|
351
358
|
const input = await fs.readFile(file, "utf8");
|
|
352
|
-
const output = await
|
|
359
|
+
const output = await format2(input, !!opt.template);
|
|
353
360
|
if (opt.write) {
|
|
354
361
|
if (output == null) {
|
|
355
362
|
console.error(`格式化失败: ${file}`);
|
|
@@ -375,11 +382,163 @@ program3.command("repl").description("启动 MiraScript REPL(交互式命令
|
|
|
375
382
|
await startRepl();
|
|
376
383
|
});
|
|
377
384
|
|
|
385
|
+
// src/commands/man/index.ts
|
|
386
|
+
import { program as program4 } from "@commander-js/extra-typings";
|
|
387
|
+
import { lib as lib3 } from "@mirascript/mirascript/subtle";
|
|
388
|
+
import { KEYWORDS, OPERATORS } from "@mirascript/help";
|
|
389
|
+
|
|
390
|
+
// src/commands/man/lib.ts
|
|
391
|
+
import styles4 from "ansi-styles";
|
|
392
|
+
import { lib as lib2 } from "@mirascript/mirascript/subtle";
|
|
393
|
+
|
|
394
|
+
// src/commands/man/table.ts
|
|
395
|
+
import styles3 from "ansi-styles";
|
|
396
|
+
function printTable(map, title, formatter = String) {
|
|
397
|
+
if (title) {
|
|
398
|
+
write(title + "\n", styles3.bold);
|
|
399
|
+
}
|
|
400
|
+
const keys = Object.keys(map).sort();
|
|
401
|
+
const maxKeyLength = Math.max(...keys.map((k) => k.length));
|
|
402
|
+
for (const key of keys) {
|
|
403
|
+
const value = map[key];
|
|
404
|
+
if (value === void 0) continue;
|
|
405
|
+
const firstLine = formatter(value, key).split("\n")[0];
|
|
406
|
+
write(" ", styles3.dim);
|
|
407
|
+
write(key, styles3.greenBright);
|
|
408
|
+
write(" ".repeat(maxKeyLength - key.length), styles3.dim);
|
|
409
|
+
write(" " + firstLine + "\n");
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// src/commands/man/lib.ts
|
|
414
|
+
function analyzePath(path2) {
|
|
415
|
+
const segments = path2.split(".").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
416
|
+
if (segments.length === 0) return [];
|
|
417
|
+
if (segments[0] === "lib") {
|
|
418
|
+
return segments.slice(1);
|
|
419
|
+
}
|
|
420
|
+
return segments;
|
|
421
|
+
}
|
|
422
|
+
function getLibValue(path2) {
|
|
423
|
+
let value = lib2;
|
|
424
|
+
for (const seg of path2) {
|
|
425
|
+
if (value === void 0) return void 0;
|
|
426
|
+
value = value[seg.trim()];
|
|
427
|
+
}
|
|
428
|
+
return value;
|
|
429
|
+
}
|
|
430
|
+
function printKw(kw) {
|
|
431
|
+
write(kw, styles4.blueBright);
|
|
432
|
+
}
|
|
433
|
+
function printComment(comment) {
|
|
434
|
+
const lines = comment.split("\n");
|
|
435
|
+
for (const line of lines) {
|
|
436
|
+
write("// ", styles4.dim);
|
|
437
|
+
write(line, styles4.gray);
|
|
438
|
+
write("\n");
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
function printLib(name) {
|
|
442
|
+
const path2 = analyzePath(name);
|
|
443
|
+
const value = getLibValue(path2);
|
|
444
|
+
if (value === void 0) return false;
|
|
445
|
+
if ("value" in value) {
|
|
446
|
+
if (value.summary) {
|
|
447
|
+
printComment(value.summary);
|
|
448
|
+
}
|
|
449
|
+
printKw("let");
|
|
450
|
+
write(" ");
|
|
451
|
+
write(path2.join("."), styles4.cyanBright);
|
|
452
|
+
write(" = ");
|
|
453
|
+
write(print(value.value));
|
|
454
|
+
write(";\n");
|
|
455
|
+
} else if ("summary" in value) {
|
|
456
|
+
if (value.summary) {
|
|
457
|
+
printComment(value.summary);
|
|
458
|
+
}
|
|
459
|
+
const params = value.params ? Object.entries(value.params) : null;
|
|
460
|
+
for (const [name2, param] of params ?? []) {
|
|
461
|
+
if (!param.description) continue;
|
|
462
|
+
const comment = `\`${name2}\` - ${param.description}`;
|
|
463
|
+
printComment(comment);
|
|
464
|
+
}
|
|
465
|
+
if (value.returns?.description) {
|
|
466
|
+
printComment(`返回值 - ${value.returns.description}`);
|
|
467
|
+
}
|
|
468
|
+
printKw("fn");
|
|
469
|
+
write(" ");
|
|
470
|
+
write(path2.join("."), styles4.yellowBright);
|
|
471
|
+
write("(");
|
|
472
|
+
if (!params) {
|
|
473
|
+
write("..");
|
|
474
|
+
} else {
|
|
475
|
+
for (let i = 0; i < params.length; i++) {
|
|
476
|
+
const [name2, param] = params[i];
|
|
477
|
+
if (i > 0) {
|
|
478
|
+
write(", ");
|
|
479
|
+
}
|
|
480
|
+
write(format(name2, styles4.italic), styles4.cyanBright);
|
|
481
|
+
write(": ");
|
|
482
|
+
write(param.type, styles4.greenBright);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
write(")");
|
|
486
|
+
if (value.returns) {
|
|
487
|
+
write(" -> ");
|
|
488
|
+
write(value.returns.type, styles4.greenBright);
|
|
489
|
+
}
|
|
490
|
+
write(";\n");
|
|
491
|
+
if (value.examples?.length) {
|
|
492
|
+
for (const example of value.examples) {
|
|
493
|
+
printComment(example);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
} else {
|
|
497
|
+
printKw("mod");
|
|
498
|
+
write(" ");
|
|
499
|
+
write(path2.join("."), styles4.cyanBright);
|
|
500
|
+
write(" {\n");
|
|
501
|
+
printTable(value, "", (v) => v.summary);
|
|
502
|
+
write("}\n");
|
|
503
|
+
}
|
|
504
|
+
return true;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// src/commands/man/index.ts
|
|
508
|
+
var command3 = program4.command("man");
|
|
509
|
+
command3.description("显示 MiraScript 的手册").argument(
|
|
510
|
+
"<topic>",
|
|
511
|
+
'要显示的主题,可以是 "keywords"、"operators"、"libraries" 或标准库中的函数/模块名(如 "matrix.add")、关键字/操作符(如 "if"、"&&")'
|
|
512
|
+
).action((topic) => {
|
|
513
|
+
if (topic in KEYWORDS) {
|
|
514
|
+
const desc = KEYWORDS[topic];
|
|
515
|
+
console.log(desc);
|
|
516
|
+
} else if (topic in OPERATORS) {
|
|
517
|
+
const desc = OPERATORS[topic];
|
|
518
|
+
console.log(desc);
|
|
519
|
+
} else if (printLib(topic)) {
|
|
520
|
+
return;
|
|
521
|
+
} else if (topic === "keywords") {
|
|
522
|
+
printTable(KEYWORDS, "MiraScript 关键字:");
|
|
523
|
+
} else if (topic === "operators") {
|
|
524
|
+
printTable(OPERATORS, "MiraScript 操作符:");
|
|
525
|
+
} else if (topic === "libraries") {
|
|
526
|
+
printTable(lib3, "MiraScript 标准库:", (v, k) => {
|
|
527
|
+
if ("summary" in v) {
|
|
528
|
+
return v.summary ?? k;
|
|
529
|
+
}
|
|
530
|
+
return `模块 ${k}`;
|
|
531
|
+
});
|
|
532
|
+
} else {
|
|
533
|
+
command3.help({ error: true });
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
|
|
378
537
|
// src/index.ts
|
|
379
|
-
var p =
|
|
538
|
+
var p = program5;
|
|
380
539
|
var binName = Object.keys(pkg.bin)[0];
|
|
381
540
|
if (binName) {
|
|
382
|
-
p =
|
|
541
|
+
p = program5.name(binName);
|
|
383
542
|
}
|
|
384
543
|
var index_default = p.version(pkg.version).description(pkg.description);
|
|
385
544
|
export {
|
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/commands/run.ts", "../src/utils/execute.ts", "../src/utils/print.ts", "../src/utils/color.ts", "../src/utils/repl.ts", "../src/commands/format.ts", "../src/commands/repl.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["program", "styles", "supportsColor", "options", "format", "supportsColor", "styles", "compile", "CompileError", "createVmContext", "CompileError", "createVmContext", "script", "compile", "result", "p", "template", "program", "command", "program", "program", "program"]
|
|
3
|
+
"sources": ["../src/index.ts", "../src/commands/run.ts", "../src/utils/execute.ts", "../src/utils/print.ts", "../src/utils/color.ts", "../src/utils/repl.ts", "../src/commands/format.ts", "../src/commands/repl.ts", "../src/commands/man/index.ts", "../src/commands/man/lib.ts", "../src/commands/man/table.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["program", "styles", "supportsColor", "text", "options", "format", "supportsColor", "styles", "compile", "CompileError", "createVmContext", "CompileError", "createVmContext", "script", "compile", "result", "p", "template", "program", "format", "command", "program", "program", "program", "lib", "styles", "lib", "styles", "styles", "path", "lib", "styles", "name", "command", "program", "lib", "program"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirascript/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.88",
|
|
4
4
|
"author": "CloudPSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Cli for MiraScript, an expression based scripting language.",
|
|
@@ -38,8 +38,9 @@
|
|
|
38
38
|
"ansi-styles": "^7.0.0",
|
|
39
39
|
"commander": "^15.0.0",
|
|
40
40
|
"supports-color": "^11.0.0",
|
|
41
|
-
"@mirascript/bindings": "~0.1.
|
|
42
|
-
"@mirascript/mirascript": "~0.1.
|
|
41
|
+
"@mirascript/bindings": "~0.1.88",
|
|
42
|
+
"@mirascript/mirascript": "~0.1.88",
|
|
43
|
+
"@mirascript/help": "~0.1.88"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"type-fest": "^5.8.0"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { program } from '@commander-js/extra-typings';
|
|
3
|
+
import { lib } from '@mirascript/mirascript/subtle';
|
|
4
|
+
import { KEYWORDS, OPERATORS } from '@mirascript/help';
|
|
5
|
+
import { printLib } from './lib.js';
|
|
6
|
+
import { printTable } from './table.js';
|
|
7
|
+
|
|
8
|
+
const command = program.command('man');
|
|
9
|
+
command
|
|
10
|
+
.description('显示 MiraScript 的手册')
|
|
11
|
+
.argument(
|
|
12
|
+
'<topic>',
|
|
13
|
+
'要显示的主题,可以是 "keywords"、"operators"、"libraries" 或标准库中的函数/模块名(如 "matrix.add")、关键字/操作符(如 "if"、"&&")',
|
|
14
|
+
)
|
|
15
|
+
.action((topic) => {
|
|
16
|
+
if (topic in KEYWORDS) {
|
|
17
|
+
const desc = KEYWORDS[topic as keyof typeof KEYWORDS];
|
|
18
|
+
console.log(desc);
|
|
19
|
+
} else if (topic in OPERATORS) {
|
|
20
|
+
const desc = OPERATORS[topic as keyof typeof OPERATORS];
|
|
21
|
+
console.log(desc);
|
|
22
|
+
} else if (printLib(topic)) {
|
|
23
|
+
return;
|
|
24
|
+
} else if (topic === 'keywords') {
|
|
25
|
+
printTable(KEYWORDS, 'MiraScript 关键字:');
|
|
26
|
+
} else if (topic === 'operators') {
|
|
27
|
+
printTable(OPERATORS, 'MiraScript 操作符:');
|
|
28
|
+
} else if (topic === 'libraries') {
|
|
29
|
+
printTable(lib, 'MiraScript 标准库:', (v, k) => {
|
|
30
|
+
if ('summary' in v) {
|
|
31
|
+
return v.summary ?? k;
|
|
32
|
+
}
|
|
33
|
+
return `模块 ${k}`;
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
command.help({ error: true });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import styles from 'ansi-styles';
|
|
2
|
+
import { format, write } from '../../utils/color.js';
|
|
3
|
+
import { print } from '../../utils/print.js';
|
|
4
|
+
import { lib } from '@mirascript/mirascript/subtle';
|
|
5
|
+
import { printTable } from './table.js';
|
|
6
|
+
|
|
7
|
+
/** 分析路径 */
|
|
8
|
+
function analyzePath(path: string): readonly string[] {
|
|
9
|
+
const segments = path
|
|
10
|
+
.split('.')
|
|
11
|
+
.map((s) => s.trim())
|
|
12
|
+
.filter((s) => s.length > 0);
|
|
13
|
+
if (segments.length === 0) return [];
|
|
14
|
+
if (segments[0] === 'lib') {
|
|
15
|
+
return segments.slice(1);
|
|
16
|
+
}
|
|
17
|
+
return segments;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** 获取库值 */
|
|
21
|
+
function getLibValue(path: readonly string[]): (typeof lib)[keyof typeof lib] | undefined {
|
|
22
|
+
let value: object = lib;
|
|
23
|
+
for (const seg of path) {
|
|
24
|
+
if (value === undefined) return undefined;
|
|
25
|
+
value = value[seg.trim() as keyof typeof value];
|
|
26
|
+
}
|
|
27
|
+
return value as (typeof lib)[keyof typeof lib] | undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** 打印关键字 */
|
|
31
|
+
function printKw(kw: string): void {
|
|
32
|
+
write(kw, styles.blueBright);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** 打印注释 */
|
|
36
|
+
function printComment(comment: string): void {
|
|
37
|
+
const lines = comment.split('\n');
|
|
38
|
+
for (const line of lines) {
|
|
39
|
+
write('// ', styles.dim);
|
|
40
|
+
write(line, styles.gray);
|
|
41
|
+
write('\n');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** 打印库 */
|
|
46
|
+
export function printLib(name: string): boolean {
|
|
47
|
+
const path = analyzePath(name);
|
|
48
|
+
const value = getLibValue(path);
|
|
49
|
+
if (value === undefined) return false;
|
|
50
|
+
if ('value' in value) {
|
|
51
|
+
if (value.summary) {
|
|
52
|
+
printComment(value.summary);
|
|
53
|
+
}
|
|
54
|
+
printKw('let');
|
|
55
|
+
write(' ');
|
|
56
|
+
write(path.join('.'), styles.cyanBright);
|
|
57
|
+
write(' = ');
|
|
58
|
+
write(print(value.value));
|
|
59
|
+
write(';\n');
|
|
60
|
+
} else if ('summary' in value) {
|
|
61
|
+
if (value.summary) {
|
|
62
|
+
printComment(value.summary);
|
|
63
|
+
}
|
|
64
|
+
const params = value.params ? Object.entries(value.params) : null;
|
|
65
|
+
for (const [name, param] of params ?? []) {
|
|
66
|
+
if (!param.description) continue;
|
|
67
|
+
const comment = `\`${name}\` - ${param.description}`;
|
|
68
|
+
printComment(comment);
|
|
69
|
+
}
|
|
70
|
+
if (value.returns?.description) {
|
|
71
|
+
printComment(`返回值 - ${value.returns.description}`);
|
|
72
|
+
}
|
|
73
|
+
printKw('fn');
|
|
74
|
+
write(' ');
|
|
75
|
+
write(path.join('.'), styles.yellowBright);
|
|
76
|
+
write('(');
|
|
77
|
+
if (!params) {
|
|
78
|
+
write('..');
|
|
79
|
+
} else {
|
|
80
|
+
for (let i = 0; i < params.length; i++) {
|
|
81
|
+
const [name, param] = params[i]!;
|
|
82
|
+
if (i > 0) {
|
|
83
|
+
write(', ');
|
|
84
|
+
}
|
|
85
|
+
write(format(name, styles.italic), styles.cyanBright);
|
|
86
|
+
write(': ');
|
|
87
|
+
write(param.type, styles.greenBright);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
write(')');
|
|
91
|
+
if (value.returns) {
|
|
92
|
+
write(' -> ');
|
|
93
|
+
write(value.returns.type, styles.greenBright);
|
|
94
|
+
}
|
|
95
|
+
write(';\n');
|
|
96
|
+
if (value.examples?.length) {
|
|
97
|
+
for (const example of value.examples) {
|
|
98
|
+
printComment(example);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
printKw('mod');
|
|
103
|
+
write(' ');
|
|
104
|
+
write(path.join('.'), styles.cyanBright);
|
|
105
|
+
write(' {\n');
|
|
106
|
+
printTable(value as Record<string, { summary: string }>, '', (v) => v.summary);
|
|
107
|
+
write('}\n');
|
|
108
|
+
}
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import styles from 'ansi-styles';
|
|
2
|
+
import { write } from '../../utils/color.js';
|
|
3
|
+
|
|
4
|
+
/** 打印表格 */
|
|
5
|
+
export function printTable<T>(
|
|
6
|
+
map: Record<string, T>,
|
|
7
|
+
title: string,
|
|
8
|
+
formatter: (value: T, key: string) => string = String,
|
|
9
|
+
): void {
|
|
10
|
+
if (title) {
|
|
11
|
+
write(title + '\n', styles.bold);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const keys = Object.keys(map).sort();
|
|
15
|
+
const maxKeyLength = Math.max(...keys.map((k) => k.length));
|
|
16
|
+
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
const value = map[key];
|
|
19
|
+
if (value === undefined) continue;
|
|
20
|
+
|
|
21
|
+
const firstLine = formatter(value, key).split('\n')[0];
|
|
22
|
+
write(' ', styles.dim);
|
|
23
|
+
write(key, styles.greenBright);
|
|
24
|
+
write(' '.repeat(maxKeyLength - key.length), styles.dim);
|
|
25
|
+
write(' ' + firstLine + '\n');
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/index.ts
CHANGED
package/src/utils/color.ts
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
+
import type { CSPair } from 'ansi-styles';
|
|
1
2
|
import supportsColor from 'supports-color';
|
|
2
3
|
export const noColor = !supportsColor.stdout;
|
|
4
|
+
|
|
5
|
+
/** 格式化 */
|
|
6
|
+
export function format(text: string, style?: CSPair): string {
|
|
7
|
+
if (style && !noColor) {
|
|
8
|
+
return style.open + text + style.close;
|
|
9
|
+
} else {
|
|
10
|
+
return text;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** 写入 */
|
|
14
|
+
export function write(text: string, style?: CSPair): void {
|
|
15
|
+
process.stdout.write(format(text, style));
|
|
16
|
+
}
|
package/src/utils/print.ts
CHANGED
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
type SerializeOptions,
|
|
9
9
|
operations,
|
|
10
10
|
} from '@mirascript/mirascript/subtle';
|
|
11
|
-
import { noColor } from './color.js';
|
|
11
|
+
import { noColor, format } from './color.js';
|
|
12
12
|
|
|
13
13
|
const options: Partial<SerializeOptions> = {
|
|
14
14
|
maxDepth: 3,
|
|
15
|
-
serializeNil: noColor ? undefined : () =>
|
|
16
|
-
serializeBoolean: noColor ? undefined : (v) =>
|
|
17
|
-
serializeNumber: noColor ? undefined : (v) =>
|
|
15
|
+
serializeNil: noColor ? undefined : () => format(serializeNil(), styles.gray),
|
|
16
|
+
serializeBoolean: noColor ? undefined : (v) => format(serializeBoolean(v), styles.blue),
|
|
17
|
+
serializeNumber: noColor ? undefined : (v) => format(serializeNumber(v), styles.yellow),
|
|
18
18
|
serializeStringQuote: noColor
|
|
19
19
|
? undefined
|
|
20
20
|
: (v, open) => {
|
|
@@ -25,31 +25,22 @@ const options: Partial<SerializeOptions> = {
|
|
|
25
25
|
return q + styles.green.close;
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
|
-
serializeStringEscape: noColor ? undefined : (v) =>
|
|
29
|
-
serializePropName: noColor ? undefined : (v) =>
|
|
30
|
-
serializeFunction:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return (
|
|
39
|
-
styles.magenta.open +
|
|
40
|
-
operations.$ToString(v) +
|
|
41
|
-
styles.magenta.close +
|
|
42
|
-
' ' +
|
|
43
|
-
options.serializeRecord(v.value as VmRecord, depth, options)
|
|
44
|
-
);
|
|
45
|
-
},
|
|
28
|
+
serializeStringEscape: noColor ? undefined : (v) => format(v, styles.bold),
|
|
29
|
+
serializePropName: noColor ? undefined : (v) => format(String(v), styles.whiteBright),
|
|
30
|
+
serializeFunction: (v) => format(operations.$ToString(v), styles.cyan),
|
|
31
|
+
serializeModule: (v, depth, options) => {
|
|
32
|
+
return (
|
|
33
|
+
format(operations.$ToString(v), styles.magenta) +
|
|
34
|
+
' ' +
|
|
35
|
+
options.serializeRecord(v.value as VmRecord, depth, options)
|
|
36
|
+
);
|
|
37
|
+
},
|
|
46
38
|
};
|
|
47
39
|
|
|
48
40
|
/** 序列化值 */
|
|
49
41
|
export function print(value: VmAny, depth = 3): string {
|
|
50
42
|
if (value === undefined) {
|
|
51
|
-
|
|
52
|
-
return styles.gray.open + '<uninitialized>' + styles.gray.close;
|
|
43
|
+
return format('<undefined>', styles.gray);
|
|
53
44
|
}
|
|
54
45
|
return serialize(value, { ...options, maxDepth: depth });
|
|
55
46
|
}
|