function patternPart()

in js/src/mf2-parse.ts [51:77]


function patternPart(part: string | MF2Expression | MF2Markup) {
  if (typeof part === 'string') return part
  if (part.type === 'expression') {
    const expr = {} as Expression
    if (part.arg) {
      if (part.arg.type === 'literal') expr._ = part.arg.value
      else expr.$ = part.arg.name
    }
    if (part.functionRef) {
      expr.fn = part.functionRef.name
      expr.opt = options(part.functionRef.options)
    }
    expr.attr = attributes(part.attributes)
    return expr
  } else {
    const opt = options(part.options)
    const attr = attributes(part.attributes)
    switch (part.kind) {
      case 'open':
        return { open: part.name, opt, attr }
      case 'close':
        return { close: part.name, opt, attr }
      default:
        return { elem: part.name, opt, attr }
    }
  }
}