UNPKG

genezio

Version:

Command line utility to interact with Genezio infrastructure.

92 lines (91 loc) 3.5 kB
import { AstNodeType, } from "../models/genezioModels.js"; function castNodeRecursively(node) { let implementation = ""; switch (node.type) { case AstNodeType.StringLiteral: implementation += `e.toString().substring(1, e.toString().length - 1)`; break; case AstNodeType.DoubleLiteral: implementation += `e.toDouble()`; break; case AstNodeType.BooleanLiteral: implementation += `e.toString().toBoolean()`; break; case AstNodeType.IntegerLiteral: implementation += `Integer.parseInt(e.toString())`; break; case AstNodeType.CustomNodeLiteral: implementation += `Json.decodeFromString<${node.rawValue}>(e.toString())`; break; case AstNodeType.ArrayType: implementation += castArrayRecursively(node.generic); break; case AstNodeType.MapType: implementation += castMapRecursively(node.genericValue); } return implementation; } export function castMapRecursivelyInitial(mapType, name) { let implementation = "run {"; implementation += `var map = mutableMapOf<${getParamType(mapType.genericKey)}, ${getParamType(mapType.genericValue)}>(`; implementation += `*${name}.jsonObject.map{map_entry -> `; implementation += `var key = map_entry.key; var e = map_entry.value;`; implementation += `Pair(key, `; implementation += castNodeRecursively(mapType.genericValue); implementation += `)`; implementation += `}.toTypedArray())`; implementation += `;map`; implementation += "}"; return implementation; } export function castArrayRecursivelyInitial(arrayType, name) { let implementation = ""; implementation += `(${name}.jsonArray.map{e -> `; implementation += castNodeRecursively(arrayType.generic); implementation += ` } )`; return implementation; } function castArrayRecursively(node) { let implementation = ""; implementation += "(e.jsonArray.map{e -> "; implementation += castNodeRecursively(node); implementation += "} )"; return implementation; } function castMapRecursively(node) { let implementation = "run {"; implementation += `var map = mutableMapOf<String, Any>(`; implementation += `*e.jsonObject.map{map_entry -> `; implementation += `var key = map_entry.key; var e = map_entry.value;`; implementation += `Pair(key, `; implementation += castNodeRecursively(node); implementation += `)`; implementation += `}.toTypedArray())`; implementation += `;map`; implementation += "}"; return implementation; } export function getParamType(elem) { switch (elem.type) { case AstNodeType.StringLiteral: return "String"; case AstNodeType.DoubleLiteral: return "Double"; case AstNodeType.BooleanLiteral: return "Boolean"; case AstNodeType.IntegerLiteral: return "Int"; case AstNodeType.AnyLiteral: return "Any"; case AstNodeType.ArrayType: return `List<${getParamType(elem.generic)}>`; case AstNodeType.MapType: return `Map<${getParamType(elem.genericKey)}, ${getParamType(elem.genericValue)}>`; case AstNodeType.CustomNodeLiteral: return elem.rawValue; case AstNodeType.PromiseType: return getParamType(elem.generic); default: return "Any"; } }