webforai
Version:
A library that provides a web interface for AI
34 lines (33 loc) • 1.64 kB
JavaScript
// src/html-to-mdast.ts
import { fromHtml } from "hast-util-from-html";
import { toMdast } from "hast-util-to-mdast";
import { extractMdast } from "./extract-mdast.js";
import { pipeExtractors } from "./extractors/index.js";
import { customAHandler } from "./mdast-handlers/custom-a-handler.js";
import { customCodeHandler } from "./mdast-handlers/custom-code-handler.js";
import { customDivHandler } from "./mdast-handlers/custom-div-handler.js";
import { customImgHandler } from "./mdast-handlers/custom-img-handler.js";
import { customTableHandler } from "./mdast-handlers/custom-table-handler.js";
import { mathHandler } from "./mdast-handlers/math-handler.js";
import { getLangFromHast, getLangFromStr, getUrlFromHast } from "./utils/hast-utils.js";
var htmlToMdast = (htmlOrHast, options) => {
const { extractors, url: defaultUrl, lang: defaultLang } = options || {};
const [lang, hast] = typeof htmlOrHast === "string" ? [defaultLang || getLangFromStr(htmlOrHast), fromHtml(htmlOrHast, { fragment: true })] : [defaultLang || getLangFromHast(htmlOrHast), htmlOrHast];
const url = defaultUrl || getUrlFromHast(hast);
const extractedHast = pipeExtractors({ hast, lang, url }, extractors);
const mdast = toMdast(extractedHast, {
handlers: {
math: mathHandler,
div: customDivHandler,
pre: customCodeHandler,
a: customAHandler({ asText: options?.linkAsText }),
img: customImgHandler({ hideImage: options?.hideImage }),
table: customTableHandler({ asText: options?.tableAsText })
}
});
const extractedMdast = extractMdast(mdast);
return extractedMdast;
};
export {
htmlToMdast
};