markup: async()

in kit/preprocessors/frameworkcontent.js [6:40]


	markup: async ({ content }) => {
		const REGEX_FRAMEWORKCONTENT = generateTagRegex("frameworkcontent", true);
		const REGEX_PYTORCH = generateTagRegex("pt");
		const REGEX_TENSORFLOW = generateTagRegex("tf");
		const REGEX_JAX = generateTagRegex("jax");

		content = await replaceAsync(content, REGEX_FRAMEWORKCONTENT, async (_, fwcontentBody) => {
			const FRAMEWORKS = [
				{ framework: "pytorch", REGEX_FW: REGEX_PYTORCH, isExist: false },
				{ framework: "tensorflow", REGEX_FW: REGEX_TENSORFLOW, isExist: false },
				{ framework: "jax", REGEX_FW: REGEX_JAX, isExist: false },
			];

			let svelteSlots = "";

			for (const [i, value] of Object.entries(FRAMEWORKS)) {
				const { framework, REGEX_FW } = value;
				if (fwcontentBody.match(REGEX_FW)) {
					FRAMEWORKS[i].isExist = true;
					const fwContent = fwcontentBody.match(REGEX_FW)[1];
					svelteSlots += `<svelte:fragment slot="${framework}">
					<Markdown>
					\n\n${fwContent}\n\n
					</Markdown>
					</svelte:fragment>`;
				}
			}

			const svelteProps = FRAMEWORKS.map((fw) => `${fw.framework}={${fw.isExist}}`).join(" ");

			return `\n\n<FrameworkContent ${svelteProps}>\n${svelteSlots}\n</FrameworkContent>\n\n`;
		});

		return { code: content };
	},