UNPKG

messageformat

Version:

Intl.MessageFormat / Unicode MessageFormat 2 parser, runtime and polyfill

28 lines (27 loc) 1.11 kB
import { MessageResolutionError } from "../errors.js"; import { getValueSource, resolveValue } from "./resolve-value.js"; export function formatMarkup(ctx, { kind, name, options }) { const source = kind === 'close' ? `/${name}` : kind === 'open' ? `#${name}` : `#${name}/`; const part = { type: 'markup', kind, source, name }; if (options?.size) { part.options = {}; for (const [name, value] of options) { if (name === 'u:dir') { const msg = `The option ${name} is not valid for markup`; const optSource = getValueSource(value); ctx.onError(new MessageResolutionError('bad-option', msg, optSource)); } else { let rv = resolveValue(ctx, value); if (typeof rv === 'object' && typeof rv?.valueOf === 'function') { rv = rv.valueOf(); } if (name === 'u:id') part.id = String(rv); else part.options[name] = rv; } } } return part; }