in js/src/mf2-serialize.ts [18:43]
export function mf2SerializePattern(pattern: Pattern): string {
let str = ''
for (const part of pattern) {
if (typeof part === 'string') {
str += part.replace(/[\\{}]/g, '\\$&')
} else if (isExpression(part)) {
str += '{'
let hasArg = true
if (typeof part._ === 'string') str += literal(part._)
else if (part.$) str += '$' + part.$
else hasArg = false
if (part.fn) {
if (hasArg) str += ' '
str += ':' + part.fn + options(part.opt)
}
str += attributes(part.attr) + '}'
} else {
if (part.open) str += '{#' + part.open
else if (part.elem) str += '{#' + part.elem
else str += '{/' + part.close
str += options(part.opt) + attributes(part.attr)
str += part.elem ? '/}' : '}'
}
}
return str
}