import { createElement } from "react";
import Exercise from "./Exercise";
import { parse } from "yaml";
interface ConvertNodeProps {
node: ChildNode;
}
/**
*/
export default function ConvertNode({ node }: ConvertNodeProps): JSX.Element {
switch (node.nodeType) {
// ELEMENT_NODE
case 1: {
const element = node as Element;
const tagName = element.tagName.toLowerCase();
switch (tagName) {
case "script": {
const scriptType = element.attributes.getNamedItem("type")?.value;
console.log("script type", scriptType);
switch (scriptType) {
case "eduproj/exercise": {
console.log(element.textContent);
const data = parse(element.textContent);
console.log(data);
return ;
}
default:
break;
}
break;
}
default: {
const props = {};
const children = [...node.childNodes].map((child) => (
));
return createElement(tagName, props, children);
}
}
break;
}
// TEXT_NODE
case 3:
return <>{node.textContent}>;
default:
console.log("unknown node type", node.nodeType);
return <>>;
}
throw new Error("Something not handled");
}