1 个不稳定版本
0.0.1 | 2023年5月30日 |
---|---|
0.0.0 |
|
#20 in #专用
在 3 个crate中使用 (通过 glossa-codegen)
215KB
347 行
hlight
输出语法高亮的库。
快速入门
添加依赖项
cargo add hlight
打印到标准输出
use hlight::{gen_syntax_highlight, theme::theme_ayu_dark, HighLightRes};
let s: &str = r#"
[main]
enabled = false
"😎" = "🍥"
float = nan
"#;
let mut res = HighLightRes::default().with_background(false);
// theme_ayu_dark: Cow::from("ayu-dark")
*res.get_name_mut() = theme_ayu_dark();
gen_syntax_highlight("toml", s, Some(&res), None)
.expect("Failed to get highlighted toml text");
输出
写入文件
use std::fs::File;
let mut file = File::create("test.txt").expect("Failed to create test.txt");
gen_syntax_highlight("toml", s, Some(&res), Some(&mut file))
.expect("Unable to write syntax-highlighted text to file.")
高级
加载自定义集合
默认启用
["preset-syntax-set", "preset-theme-set"]
功能。如果您想自定义集合,则不需要加载这些功能。
添加依赖项
cargo add hlight --no-default-features
cargo add once_cell
主题集合
use std::borrow::Cow;
use hlight::{theme::load_theme_set, HighLightRes};
fn main() {
const THEMES: &[u8] = include_bytes!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/assets/theme-set.packdump"
));
let set = load_theme_set(Some(THEMES));
let mut res = HighLightRes::default();
*res.get_theme_set_mut() = &set;
*res.get_name_mut() = Cow::from("Custom-theme-name");
}
语法集合
use hlight::{
syntax::{load_syntax_set, SyntaxSet},
HighLightRes,
};
// use std::cell::OnceCell;
use once_cell::sync::OnceCell;
const SYNTAXES: &[u8] = include_bytes!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/assets/theme-syntax-set/syntax-set.packdump"
));
fn static_syntax_set() -> &'static SyntaxSet {
static S: OnceCell<SyntaxSet> = OnceCell::new();
S.get_or_init(|| load_syntax_set(Some(SYNTAXES)))
}
fn main() {
let set = static_syntax_set();
let mut res = HighLightRes::default();
*res.get_syntax_set_mut() = set;
}
依赖项
~5–14MB
~158K SLoC