UNPKG

messageformat

Version:

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

28 lines (27 loc) 1.05 kB
import { MessageFunctionError } from "../errors.js"; import { getValueSource, resolveValue } from "./resolve-value.js"; export function formatMarkup(ctx, { kind, name, options }) { const part = { type: 'markup', kind, name }; const entries = options ? Object.entries(options) : null; if (entries?.length) { part.options = {}; for (const [name, value] of entries) { if (name === 'u:dir') { const error = new MessageFunctionError('bad-option', `The option ${name} is not valid for markup`); error.source = getValueSource(value); ctx.onError(error); } 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; }