2 个版本
0.1.1-alpha | 2022 年 8 月 28 日 |
---|---|
0.1.0-alpha | 2022 年 8 月 28 日 |
在 编程语言 中排名 839
25KB
261 行
高亮器
用 Rust 编写的可扩展语法高亮器。
安装
只需将高亮器添加到您的依赖项中
[dependencies]
highlighter = "0.1.1-alpha"
基本用法
use highlighter::{highlight_language, HighlightTargetHtml};
fn main() {
let result = highlight_language("brainheck", "++++++++ set current cell to 8").unwrap().unwrap();
let html = HighlightTargetHtml::new()
.build(result);
println!(html);
}
实现语言
要扩展 Highlighter,创建一个实现了 Language
特性的结构。
extern crate highlighter;
use highlighter::{core::language::{Language, Scope}, highlight, HighlighterTargetHtml};
/// My example programming language
pub struct MyLanguage;
impl Language for MyLanguage {
fn name(&self) -> String {
"my-language".to_string()
}
fn init(&self, cx: &mut highlighter::core::LexerContext) -> Result<(), highlighter::core::Error> {
// Initialize the tokens in your language.
cx.token(Scope::KeywordControl, "\\b(if|else|while|continue|break|return)\\b")?;
cx.token(Scope::StorageType, "\\b(var|function)\\b")?;
cx.token(Scope::ConstantNumber, "\\b([0-9][0-9_]*)\\b")?;
cx.token(Scope::ConstantLanguage, "\\b(true|false)\\b")?;
Ok(())
}
}
fn main() {
let tokens = highlight(MyLanguage, "var i = 0;").unwrap();
let html = HighlighterTargetHtml::new()
.build(tokens);
println!("{}", html);
}
依赖项
~2–3MB
~53K SLoC