fb55/htmlparser2

htmlparser2-parse5-tree-adapter

milahu opened this issue · 1 comments

im looking for the inverse of parse5-htmlparser2-tree-adapter

aka

  • htmlparser2-parse5-tree-adapter
  • htmlparser2-to-parse5-tree-adapter

does it exist?
if no, contributions welcome?

why

add htmlparser2 to a project that is currently using only parse5
so the internals are based on parse5

see rehypejs/rehype#112

cheerio

projects like cheerio use both parsers, parse5 for html, htmlparser2 for xhtml

cheerio internals are based on htmlparser2, so parse5 is used via adapter

cheerio/src/index.ts

import { parseDocument as parseWithHtmlparser2 } from 'htmlparser2';
import { renderWithParse5, parseWithParse5 } from './parsers/parse5-adapter.js';

const parse = getParse((content, options, isDocument, context) =>
  options.xmlMode || options._useHtmlParser2
    ? parseWithHtmlparser2(content, options)
    : parseWithParse5(content, options, isDocument, context)
);

export const load = getLoad(parse, (dom, options) =>
  options.xmlMode || options._useHtmlParser2
    ? renderWithHtmlparser2(dom, options)
    : renderWithParse5(dom)
);

cheerio/src/parsers/parse5-adapter.ts

import { adapter as htmlparser2Adapter } from 'parse5-htmlparser2-tree-adapter';

const renderOpts = { treeAdapter: htmlparser2Adapter };

related

closing, i dont need this