UNPKG

webforai

Version:

A library that provides a web interface for AI

34 lines (33 loc) 1.64 kB
// 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 };