@@ -69,7 +69,7 @@ export function isLiteral(literal: unknown): literal is MBLiteral {
6969 * @param literal
7070 */
7171export function parseUnknownToLiteralArray ( literal : unknown ) : MBLiteral [ ] | undefined {
72- if ( literal === undefined || literal === null ) {
72+ if ( literal === undefined ) {
7373 return undefined ;
7474 }
7575
@@ -109,7 +109,7 @@ export function parseUnknownToFloat(literal: unknown): number | undefined {
109109 */
110110export function parseUnknownToInt ( literal : unknown ) : number | undefined {
111111 if ( typeof literal === 'number' ) {
112- return literal ;
112+ return Number . isInteger ( literal ) ? literal : undefined ;
113113 } else if ( typeof literal === 'string' ) {
114114 const v = intParser . tryParse ( literal ) ;
115115 if ( v . success ) {
@@ -126,7 +126,7 @@ export function parseUnknownToInt(literal: unknown): number | undefined {
126126 * @param literal
127127 */
128128export function parseUnknownToString ( literal : unknown ) : string | undefined {
129- return isLiteral ( literal ) ? literal ?. toString ( ) : undefined ;
129+ return isLiteral ( literal ) ? stringifyLiteral ( literal ) : undefined ;
130130}
131131
132132/**
@@ -146,14 +146,26 @@ export function parseUnknownToLiteral(literal: unknown): MBLiteral | undefined {
146146 */
147147export function stringifyUnknown ( literal : unknown , nullAsEmpty : boolean ) : string {
148148 if ( Array . isArray ( literal ) ) {
149- return literal . map ( x => recStringifyUnknown ( x , nullAsEmpty ) ) . join ( ', ' ) ;
149+ return literal
150+ . map ( x => recStringifyUnknown ( x , nullAsEmpty ) )
151+ . filter ( x => x !== '' )
152+ . join ( ', ' ) ;
150153 }
151154 return recStringifyUnknown ( literal , nullAsEmpty ) ;
152155}
153156
154157function recStringifyUnknown ( literal : unknown , nullAsEmpty : boolean ) : string {
155- if ( typeof literal === 'object' ) {
158+ if ( literal === null || literal === undefined ) {
159+ return nullAsEmpty ? '' : 'null' ;
160+ }
161+ if ( typeof literal === 'function' ) {
162+ return '<function>' ;
163+ }
164+
165+ if ( typeof literal === 'object' || Array . isArray ( literal ) ) {
156166 return JSON . stringify ( literal ) ;
157167 }
158- return literal ?. toString ( ) ?? ( nullAsEmpty ? '' : 'null' ) ;
168+
169+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
170+ return literal . toString ( ) ;
159171}
0 commit comments