export function mf2SerializePattern()

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
}