'use strict'; var runtimeHtmlHelpers = require('../../../../runtime/html/helpers'); var attr = runtimeHtmlHelpers.a; var escapeXmlAttr = runtimeHtmlHelpers.xa; function isStringLiteral(node) { return node.type === 'Literal' && typeof node.value === 'string'; } function isNoEscapeXml(node) { return node.type === 'AttributePlaceholder' && node.escape === false; } function flattenAttrConcats(node) { // return [node]; function flattenHelper(node) { if (node.type === 'BinaryExpression' && node.operator === '+') { let left = flattenHelper(node.left); let right = flattenHelper(node.right); var isString = left.isString || right.isString; if (isString) { return { isString: true, concats: left.concats.concat(right.concats) }; } else { return { isString: false, concats: [node] }; } } return { isString: isStringLiteral(node) || node.type === 'AttributePlaceholder', concats: [node] }; } var final = flattenHelper(node); return final.concats; } function generateCodeForExpressionAttr(name, value, escape, codegen) { var flattenedConcats = flattenAttrConcats(value); var hasLiteral = false; var builder = codegen.builder; var finalNodes = []; var context = codegen.context; function addHtml(argument) { finalNodes.push(builder.html(argument)); } function addHtmlLiteral(value) { finalNodes.push(builder.htmlLiteral(value)); } for (let i=0; i