You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/src/generators/shared/utils/walkHtml.ts

21 lines
440 B

import { Node } from '../../../interfaces';
export default function walkHtml(html: Node, visitors) {
function visit(node: Node) {
const visitor = visitors[node.type];
if (!visitor) throw new Error(`Not implemented: ${node.type}`);
if (visitor.enter) visitor.enter(node);
if (node.children) {
node.children.forEach((child: Node) => {
visit(child);
});
}
if (visitor.leave) visitor.leave(node);
}
visit(html);
}