export function stringifyHTMLElement()

in src/lib/server/websearch/markdown/utils/stringify.ts [44:69]


export function stringifyHTMLElement(elem: SerializedHTMLElement | string): string {
	if (typeof elem === "string") return elem;
	if (elem.tagName === "br") return "\n";

	const content = elem.content.map(stringifyHTMLElement).join("");
	if (content.length === 0) return content;

	if (elem.tagName === "strong" || elem.tagName === "b") return `**${content}**`;
	if (elem.tagName === "em" || elem.tagName === "i") return `*${content}*`;
	if (elem.tagName === "s" || elem.tagName === "strike") return `~~${content}~~`;

	if (elem.tagName === "code" || elem.tagName === "var" || elem.tagName === "tt") {
		return `\`${content}\``;
	}

	if (elem.tagName === "sup") return `<sup>${content}</sup>`;
	if (elem.tagName === "sub") return `<sub>${content}</sub>`;

	if (elem.tagName === "a" && content.trim().length > 0) {
		const href = elem.attributes.href;
		if (!href) return elem.content.map(stringifyHTMLElement).join("");
		return `[${elem.content.map(stringifyHTMLElement).join("")}](${href})`;
	}

	return elem.content.map(stringifyHTMLElement).join("");
}