ascaid
Version:
Hassle-free documentation generation powered by AsciiDoc
47 lines (40 loc) • 1.11 kB
JavaScript
import {
adoctor,
ASCIIDOCTOR_MESSAGE_SEVERITY,
memoryLogger,
} from "./asciidoctor.js";
const defaultAdoctorOptions = {
safe: "server",
doctype: "book",
standalone: true,
};
const getNumericAsciidoctorMessageSeverity = (message) => {
return (
ASCIIDOCTOR_MESSAGE_SEVERITY[message.getSeverity().toUpperCase()] ??
ASCIIDOCTOR_MESSAGE_SEVERITY.WARN
);
};
export const adocConvert = async (adoc, adoctorOptions = {}) => {
const mergedAdoctorOptions = { ...defaultAdoctorOptions, ...adoctorOptions };
const html = adoctor.convert(adoc, mergedAdoctorOptions);
const messages = memoryLogger.getMessages();
for (const message of messages) {
if (
getNumericAsciidoctorMessageSeverity(message) >
ASCIIDOCTOR_MESSAGE_SEVERITY.INFO
) {
console.error(message);
} else {
console.log(message);
}
}
const errors = messages.filter(
(message) =>
getNumericAsciidoctorMessageSeverity(message) >
ASCIIDOCTOR_MESSAGE_SEVERITY.WARN,
);
if (errors.length > 0) {
throw new Error("Asciidoc conversion failed");
}
return html;
};