Skip to main content
VelinStyle v1.2.0
⌂ Home

Syntax-Highlighting 1.2.0

Token-basiertes Syntax-Highlighting ohne Prism oder CDN. OKLCH-Tokenfarben, Lazy In-View Highlighting und velin-code-block. English: Syntax highlighting

Reifegrad

Dokumentiert als stable in VelinStyle 1.2.0. Design Intelligence (plan / review / agent meta) ist getrennt und je nach Bereich als beta / foundation markiert.

Wann sinnvoll

Wann nicht

Ueberblick

Sprachen

Jeder Lexer ist ein eigenes Modul und wird nur geladen, wenn ein Block mit dieser Sprache sichtbar wird.

SpracheAkzeptierte Namen
JavaScriptjs, javascript, jsx
TypeScriptts, typescript, tsx
HTMLhtml, markup, xml, svg
CSScss
JSONjson
Markdownmd, markdown
Shellshell, bash, sh, zsh
SQLsql
PHPphp, blade
Pythonpython, py, python3
YAMLyaml, yml
Gogo, golang
Rustrust, rs
Klartexttext, plain, txt, console

Ein language--Praefix wird ueberall akzeptiert, also loest class="language-rust" genauso auf wie rust. velinSyntax.listLanguages() liefert die aktuelle Laufzeitliste. Unbekanntes faellt auf ungestylten Klartext zurueck statt Fehler zu werfen.

<velin-code-block language="python" line-numbers>
def greet(name: str = "world") -> None:
    print(f"hello {name}")
</velin-code-block>

YAML-Hinweise

Mapping-Keys nutzen das attr-name-Token, damit sie von String-Werten unterscheidbar bleiben. Block-Scalar-Header (|, >), Anchors (&name) und Aliase (*name) werden als Operatoren tokenisiert.

Eigene Sprachen

Fuer nicht gelistete Sprachen einen eigenen Lexer registrieren. Ein Lexer bekommt Quelltext und gibt Tokens zurueck; Token-Typen mappen auf velin-token--*-Klassen.

import { registerLanguage } from '@birdapi/velinstyle/highlight';

registerLanguage('toml', (code) => [{ type: 'plain', value: code }]);

JavaScript API

import { initHighlight, velinSyntax } from '@birdapi/velinstyle/highlight';

initHighlight(document);
// velinSyntax.highlightElement(document.querySelector('pre'));

HTML-Attribut

<pre velin-code="js" language="js"><code>const x = 42;</code></pre>

Web Component

<velin-code-block language="css" line-numbers highlight="1-2">
.btn { padding: 0.5rem 1rem; }
.btn--primary { background: var(--velin-color-primary); }
</velin-code-block>

Laden mit bootFromDOM(document, { attributes: true, highlight: true }).