diff --git a/src/twigFunctions.js b/src/twigFunctions.js index d184356c..1d49c321 100644 --- a/src/twigFunctions.js +++ b/src/twigFunctions.js @@ -144,16 +144,33 @@ OverpassLayer.twig.extendFilter('debug', function (value, param) { OverpassLayer.twig.extendFilter('json_pp', function (value, param) { const options = param[0] || {} - value = JSON.parse(JSON.stringify(value)) - delete value._keys // remove TwigJS artefact + if (value === 'undefined') { + return 'null' + } + + value = twigClear(value) return JSON.stringify(value, null, 'indent' in options ? ' '.repeat(options.indent) : ' ') }) OverpassLayer.twig.extendFilter('yaml', function (value, param) { const options = param[0] || {} - value = JSON.parse(JSON.stringify(value)) - delete value._keys // remove TwigJS artefact + value = twigClear(value) return yaml.dump(value, options) }) + +function twigClear (value) { + if (value === null || typeof value !== 'object') { + return value + } + + const v = {} + for (let k in value) { + if (k !== '_keys') { + v[k] = value[k] + } + } + + return v +}