@@ -4,6 +4,7 @@ import { P_UTILS } from '@lemons_dev/parsinom/lib/ParserUtils';
44
55export type MBLiteral = string | number | boolean | null ;
66export type MBExtendedLiteral = MBLiteral | MBLiteral [ ] ;
7+
78const 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+
1517const 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+ */
7890export 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+ */
91108export 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+ */
104126export 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+ */
108135export 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+ */
112144export function stringifyUnknown ( literal : unknown ) : string {
113145 if ( Array . isArray ( literal ) ) {
114146 return literal . map ( x => recStringifyUnknown ( x ) ) . join ( ', ' ) ;
0 commit comments