Mirror of the sourcecode for my blog, original repo: https://github.com/NobbZ/blog-nobbz-dev
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556// SPDX-FileCopyrightText: 2025 Norbert Melzer// SPDX-FileContributor: Norbert Melzer//// SPDX-License-Identifier: MIT
import type { ShikiTransformer } from "shiki";import type { Element } from "hast";
export function filenameTransformer(): ShikiTransformer { const transformer: ShikiTransformer = { name: "filenameTransformer",
pre(code: Element) { const meta: string = this.options?.meta?.__raw || ""; const pattern = /(?:data-)?filename="(.*?)"/;
const filename = pattern.exec(meta)?.[1] || null;
if (filename) { code.properties.dataFilename = filename;
const titlebar_class = [ "relative", "!pt-[2.5rem]", "before:content-[attr(data-filename)]", "before:absolute", "before:top-0", "before:left-0", "before:w-full", "before:bg-gradient-to-b", "before:from-crust", "before:to-base", "before:rounded-t", "before:border-t-2", "before:border-l-2", "before:border-r-2", "before:border-base", "before:border-solid", "before:font-bold", "before:px-4", "before:py-1", "before:whitespace-nowrap", "before:overflow-x-auto", ].join(" ");
code.properties.class = (code.properties.class ?? false) ? code.properties.class + " " + titlebar_class : titlebar_class; } }, };
return transformer;}