summaryrefslogtreecommitdiffstats
path: root/src/server/template/syntax.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/template/syntax.ts')
-rw-r--r--src/server/template/syntax.ts18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/server/template/syntax.ts b/src/server/template/syntax.ts
new file mode 100644
index 0000000..82b37e8
--- /dev/null
+++ b/src/server/template/syntax.ts
@@ -0,0 +1,18 @@
+import hljs from "highlight.js"
+import { data, Attribute, code as Code } from "./html.js"
+import { c } from "./vdom.js"
+
+interface Syntax extends Attribute {
+ lang: string
+}
+
+export default function code({ lang, ...attr }: Syntax, content: string) {
+ return c(
+ Code,
+ {
+ class: attr.class ?? "hljs",
+ ...attr
+ },
+ data(hljs.highlight(content,{ language: lang }).value)
+ )
+} \ No newline at end of file