Skip to content

Commit 7d94235

Browse files
committed
some more comments
1 parent ad658c3 commit 7d94235

File tree

1 file changed

+38
-6
lines changed

1 file changed

+38
-6
lines changed

src/utils/Literal.ts

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { P_UTILS } from '@lemons_dev/parsinom/lib/ParserUtils';
44

55
export type MBLiteral = string | number | boolean | null;
66
export type MBExtendedLiteral = MBLiteral | MBLiteral[];
7+
78
const floatParser: Parser<number> = P.sequenceMap(
89
(sign, number) => (sign === undefined ? number : -number),
910
P.string('-').optional(),
@@ -12,6 +13,7 @@ const floatParser: Parser<number> = P.sequenceMap(
1213
P_UTILS.digits().map(x => Number(x)),
1314
),
1415
).thenEof();
16+
1517
const intParser: Parser<number> = P.sequenceMap(
1618
(sign, number) => (sign === undefined ? number : -number),
1719
P.string('-').optional(),
@@ -59,22 +61,32 @@ export function isLiteral(literal: unknown): literal is MBLiteral {
5961
return literal === null || typeof literal === 'string' || typeof literal === 'boolean' || typeof literal === 'number';
6062
}
6163

62-
export function parseUnknownToLiteralArray(value: unknown): MBLiteral[] | undefined {
63-
if (value === undefined || value === null) {
64+
/**
65+
* Turns a value into an array of literals. If it can't convert, it returns undefined.
66+
*
67+
* @param literal
68+
*/
69+
export function parseUnknownToLiteralArray(literal: unknown): MBLiteral[] | undefined {
70+
if (literal === undefined || literal === null) {
6471
return undefined;
6572
}
6673

67-
if (isLiteral(value)) {
68-
return [value];
74+
if (isLiteral(literal)) {
75+
return [literal];
6976
}
7077

71-
if (typeof value === 'object' && Array.isArray(value)) {
72-
return value.filter(x => isLiteral(x)) as MBLiteral[];
78+
if (typeof literal === 'object' && Array.isArray(literal)) {
79+
return literal.filter(x => isLiteral(x)) as MBLiteral[];
7380
}
7481

7582
return undefined;
7683
}
7784

85+
/**
86+
* Turns a value into a float. If it can't convert, it returns undefined.
87+
*
88+
* @param literal
89+
*/
7890
export function parseUnknownToFloat(literal: unknown): number | undefined {
7991
if (typeof literal === 'number') {
8092
return literal;
@@ -88,6 +100,11 @@ export function parseUnknownToFloat(literal: unknown): number | undefined {
88100
return undefined;
89101
}
90102

103+
/**
104+
* Turns a value into an int. If it can't convert, it returns undefined.
105+
*
106+
* @param literal
107+
*/
91108
export function parseUnknownToInt(literal: unknown): number | undefined {
92109
if (typeof literal === 'number') {
93110
return literal;
@@ -101,14 +118,29 @@ export function parseUnknownToInt(literal: unknown): number | undefined {
101118
return undefined;
102119
}
103120

121+
/**
122+
* Turns a value into a string. If it can't convert, it returns undefined.
123+
*
124+
* @param literal
125+
*/
104126
export function parseUnknownToString(literal: unknown): string | undefined {
105127
return isLiteral(literal) ? literal?.toString() : undefined;
106128
}
107129

130+
/**
131+
* Turns a value into a literal. If it can't convert, it returns undefined.
132+
*
133+
* @param literal
134+
*/
108135
export function parseUnknownToLiteral(literal: unknown): MBLiteral | undefined {
109136
return isLiteral(literal) ? literal : undefined;
110137
}
111138

139+
/**
140+
* Turns a value into a pretty string. Objects get turned to JSON.
141+
*
142+
* @param literal
143+
*/
112144
export function stringifyUnknown(literal: unknown): string {
113145
if (Array.isArray(literal)) {
114146
return literal.map(x => recStringifyUnknown(x)).join(', ');

0 commit comments

Comments
 (0)