diff --git a/app/javascript/template_builder/dynamic_variables_schema.js b/app/javascript/template_builder/dynamic_variables_schema.js index f085b0b4..64869bc3 100644 --- a/app/javascript/template_builder/dynamic_variables_schema.js +++ b/app/javascript/template_builder/dynamic_variables_schema.js @@ -417,10 +417,8 @@ function buildOperators (tags) { break } case 'end': { - const popped = stack.pop() - - if (popped.operator) { - popped.operator.endTag = tag + if (stack.length > 1) { + stack.pop().operator.endTag = tag } break @@ -434,7 +432,13 @@ function buildOperators (tags) { return operators } +function hasBlankKey (keyString) { + return !keyString || keyString.split('.').some((key) => !key.trim()) +} + function assignNestedSchema (propertiesHash, parentProperties, keyString, value) { + if (hasBlankKey(keyString)) return + const keys = keyString.split('.') const lastKey = keys.pop() @@ -460,6 +464,8 @@ function assignNestedSchema (propertiesHash, parentProperties, keyString, value) } function assignNestedSchemaWithPriority (propertiesHash, parentProperties, keyString, newType) { + if (hasBlankKey(keyString)) return + const keys = keyString.split('.') const lastKey = keys.pop() @@ -523,6 +529,8 @@ function processOperators (operators, propertiesHash = {}, parentProperties = {} processOperators(op.elseChildren, propertiesHash, parentProperties) break case 'for': { + if (hasBlankKey(op.variableName)) break + const parts = op.variableName.split('.') const singularKey = singularize(parts[parts.length - 1])