UNPKG

@mintlify/scraping

Version:

Scrape documentation frameworks to Mintlify docs

53 lines (47 loc) 1.23 kB
import type { Root as HastRoot, Element } from 'hast'; import { visit, EXIT } from 'unist-util-visit'; import { framework } from '../utils/detectFramework.js'; export function retrieveRootContent(rootNode: HastRoot): Element | undefined { let rootTagName = 'main'; switch (framework.vendor) { case 'docusaurus': rootTagName = 'article'; break; case 'gitbook': rootTagName = 'main'; break; case 'readme': rootTagName = 'article'; break; } let rootSelector = 'break-anywhere'; switch (framework.vendor) { case 'docusaurus': rootSelector = ''; break; case 'gitbook': rootSelector = ''; break; case 'readme': rootSelector = 'rm-Article'; break; } let element: Element | undefined = undefined; visit(rootNode, 'element', function (node) { if (node.tagName === rootTagName) { if (rootSelector) { if ( node.properties.className && Array.isArray(node.properties.className) && node.properties.className.includes(rootSelector) ) { element = node; } } else { element = node; return EXIT; } } }); return element; }