@citation-js/core
Version:
Convert different bibliographic metadata sources
28 lines • 854 B
JavaScript
import Register from '../util/register.js';
function validate(name, formatter) {
if (typeof name !== 'string') {
throw new TypeError(`Invalid output format name, expected string, got ${typeof name}`);
} else if (typeof formatter !== 'function') {
throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`);
}
}
export const register = new Register();
export function add(name, formatter) {
validate(name, formatter);
register.set(name, formatter);
}
export function remove(name) {
register.remove(name);
}
export function has(name) {
return register.has(name);
}
export function list() {
return register.list();
}
export function format(name, data, ...options) {
if (!register.has(name)) {
throw new Error(`Output format "${name}" unavailable`);
}
return register.get(name)(data, ...options);
}