const { LITERAL_MARKER } = require("../helpers/constants") const PostProcessorNames = { CONVERT_LITERALS: "convert-literals", } /* eslint-disable no-unused-vars */ class Postprocessor { constructor(name, fn) { this.name = name this.fn = fn } process(statement) { return this.fn(statement) } } module.exports.processors = [ new Postprocessor(PostProcessorNames.CONVERT_LITERALS, statement => { if (typeof statement !== "string" || !statement.includes(LITERAL_MARKER)) { return statement } const splitMarkerIndex = statement.indexOf("-") const type = statement.substring(12, splitMarkerIndex) const value = statement.substring( splitMarkerIndex + 1, statement.length - 2 ) switch (type) { case "string": return value case "number": return parseFloat(value) case "boolean": return value === "true" case "object": return JSON.parse(value) } return value }), ]