forked from microsoft/vscode-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutil.ts
More file actions
46 lines (42 loc) · 1.31 KB
/
util.ts
File metadata and controls
46 lines (42 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
'use strict';
export type Arguments = any[];
function valueToLogString(value: unknown, kind: string): string {
if (value === undefined) {
return 'undefined';
}
if (value === null) {
return 'null';
}
try {
if (value && (value as any).fsPath) {
return `<Uri:${(value as any).fsPath}>`;
}
return JSON.stringify(value);
} catch {
return `<${kind} cannot be serialized for logging>`;
}
}
// Convert the given array of values (func call arguments) into a string
// suitable to be used in a log message.
export function argsToLogString(args: Arguments): string {
if (!args) {
return '';
}
try {
const argStrings = args.map((item, index) => {
const valueString = valueToLogString(item, 'argument');
return `Arg ${index + 1}: ${valueString}`;
});
return argStrings.join(', ');
} catch {
return '';
}
}
// Convert the given return value into a string
// suitable to be used in a log message.
export function returnValueToLogString(returnValue: unknown): string {
const valueString = valueToLogString(returnValue, 'Return value');
return `Return Value: ${valueString}`;
}