messageformat
Version:
Intl.MessageFormat / Unicode MessageFormat 2 parser, runtime and polyfill
28 lines (27 loc) • 1.05 kB
JavaScript
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;
}