Crate arborium

Crate arborium 

Source
Expand description

Arborium — High-performance syntax highlighting

Arborium provides batteries-included syntax highlighting powered by tree-sitter. It supports 60+ languages with automatic language injection (e.g., CSS/JS in HTML).

§Quick Start

use arborium::Highlighter;

let mut hl = Highlighter::new();
let html = hl.highlight("rust", "fn main() {}")?;
// Output: <a-k>fn</a-k> <a-f>main</a-f>() {}

§HTML vs ANSI Output

Use Highlighter for HTML output (web pages, documentation):

use arborium::{Highlighter, Config, HtmlFormat};

// Default: custom elements (<a-k>, <a-f>, etc.)
let mut hl = Highlighter::new();

// Or use class-based output for CSS compatibility
let config = Config {
    html_format: HtmlFormat::ClassNames,
    ..Default::default()
};
let mut hl = Highlighter::with_config(config);

Use AnsiHighlighter for terminal output:

use arborium::AnsiHighlighter;
use arborium::theme::builtin;

let theme = builtin::catppuccin_mocha().clone();
let mut hl = AnsiHighlighter::new(theme);
let colored = hl.highlight("rust", "fn main() {}")?;
println!("{}", colored);

§Language Support

Enable languages via feature flags:

[dependencies]
arborium = { version = "0.1", features = ["lang-rust", "lang-python"] }

Or enable all languages:

[dependencies]
arborium = { version = "0.1", features = ["all-languages"] }

§Supported Languages

§Permissively Licensed (97 languages, included by default)

LanguageFeature FlagLicense
Adalang-adaMIT
Agdalang-agdaMIT
Asciidoclang-asciidocApache-2.0
Assemblylang-asmMIT
AWKlang-awkMIT
Bashlang-bashMIT
Batchlang-batchMIT
Clang-cMIT
C#lang-c-sharpMIT
Caddyfilelang-caddyMIT
Cap'n Protolang-capnpMIT
Clojurelang-clojureUnlicense
CMakelang-cmakeMIT
Common Lisplang-commonlispMIT
C++lang-cppMIT
CSSlang-cssMIT
Dlang-dMIT
Dartlang-dartMIT
Device Treelang-devicetreeMIT
Difflang-diffMIT
Dockerfilelang-dockerfileMIT
DOT/Graphvizlang-dotMIT
Emacs Lisplang-elispMIT
Elixirlang-elixirApache-2.0
Elmlang-elmMIT
Erlanglang-erlangApache-2.0
Fishlang-fishUnlicense
F#lang-fsharpMIT
Gleamlang-gleamApache-2.0
GLSLlang-glslMIT
Golang-goMIT
GraphQLlang-graphqlMIT
Groovylang-groovyMIT
Haskelllang-haskellMIT
HCLlang-hclApache-2.0
HLSLlang-hlslMIT
HTMLlang-htmlMIT
Idrislang-idrisMIT
INIlang-iniApache-2.0
Javalang-javaMIT
JavaScriptlang-javascriptMIT
Jinja2lang-jinja2Apache-2.0
jqlang-jqMIT
JSONlang-jsonMIT
Julialang-juliaMIT
KDLlang-kdlMIT OR Apache-2.0
Kotlinlang-kotlinMIT
Leanlang-leanMIT
Lualang-luaMIT
Markdownlang-markdownMIT
MATLABlang-matlabMIT
Mesonlang-mesonMIT
Ninjalang-ninjaMIT
Nixlang-nixMIT
Objective-Clang-objcMIT
OCamllang-ocamlMIT
Perllang-perlMIT
PHPlang-phpMIT
PostScriptlang-postscriptMIT
PowerShelllang-powershellMIT
Prologlang-prologMIT
Pythonlang-pythonMIT
Tree-sitter Querylang-queryApache-2.0
Rlang-rMIT
ReScriptlang-rescriptMIT
RONlang-ronMIT OR Apache-2.0
Rubylang-rubyMIT
Rustlang-rustMIT
Scalalang-scalaMIT
Schemelang-schemeMIT
SCSSlang-scssMIT
SPARQLlang-sparqlMIT
SQLlang-sqlMIT
SSH Configlang-ssh-configMIT
Starlarklang-starlarkMIT
Sveltelang-svelteMIT
Swiftlang-swiftMIT
Text Protolang-textprotoISC
Thriftlang-thriftMIT
TLA+lang-tlaplusMIT
TOMLlang-tomlMIT
TSXlang-tsxMIT
TypeScriptlang-typescriptMIT
Typstlang-typstMIT
Uiualang-uiuaMPL-2.0
Visual Basiclang-vbMIT
Veriloglang-verilogMIT
VHDLlang-vhdlMIT
Vimscriptlang-vimMIT
Vuelang-vueMIT
WITlang-witApache-2.0 WITH LLVM-exception
x86 Assemblylang-x86asmMIT
XMLlang-xmlMIT
YAMLlang-yamlMIT
Yurilang-yuriApache-2.0
Ziglang-zigMIT
Zshlang-zshMIT

§GPL Licensed (1 languages, opt-in)

These require explicit opt-in via feature flags due to their copyleft license.

LanguageFeature FlagLicense
nginxlang-nginxGPL-3.0

§Advanced Usage

For building custom grammar providers or working with raw spans, see the advanced module.

Re-exports§

pub use arborium_tree_sitter as tree_sitter;

Modules§

advanced
Advanced API for custom highlighting implementations.
theme
Theme system for ANSI output.

Structs§

AnsiHighlighter
High-level syntax highlighter for ANSI terminal output.
Config
Configuration for highlighting.
GrammarStore
Thread-safe cache of compiled grammars.
Highlighter
High-level syntax highlighter for HTML output.

Enums§

Error
Error type for highlighting operations.
HtmlFormat
HTML output format for syntax highlighting.

Constants§

HIGHLIGHT_NAMES
Standard highlight names used for syntax highlighting.

Functions§

detect_language
Detect the language from a file path or name.