#text #highlighting #serde #rich-text

ornament

创建装饰文本的辅助工具

4个版本

0.2.2 2020年10月3日
0.2.1 2019年9月8日
0.2.0 2019年9月8日
0.1.0 2019年8月25日

#1100 in 编码

MIT 许可证

18KB
405

ornament

ornament docs

创建装饰文本的辅助工具。

主要特性

  • 装饰语言无关。
  • 易于使用的构建器。
  • 小巧且可重用的API。

详细信息

查看文档以获取更多详细信息和工作示例: https://docs.rs/ornament


lib.rs:

创建装饰文本的辅助工具。

示例

此示例创建了一个 Text 并按照简单的Markdown-like进行渲染。

use ornament::Decorator;

#[derive(Clone, Debug, PartialEq)]
enum Face {
    Default,
    Emphasis,
    Strong,
}

impl Default for Face {
    fn default() -> Self {
        Face::Default
    }
}

let text = Decorator::with_text("Text can be with emphasis or even strong.")
    .set(Face::Emphasis, 17..25)
    .set(Face::Strong, 34..40)
    .build();

let rendered = text.render(|tf| {
    match tf.face {
        Face::Default => tf.text.to_owned(),
        Face::Emphasis => format!("_{}_", tf.text),
        Face::Strong => format!("**{}**", tf.text),
    }
});
assert_eq!(rendered, "Text can be with _emphasis_ or even **strong**.");

// In some cases it can be easier to build it part by part.
let other_text = Decorator::new()
    .append("Text can be with ")
    .set_face(Face::Emphasis)
    .append("emphasis")
    .reset_face()
    .append(" or even ")
    .set_face(Face::Strong)
    .append("strong")
    .reset_face()
    .append(".")
    .build();
assert_eq!(other_text, text);

// Both methods can be combined together.
let another_other_text = Decorator::new()
    .append("Text can be with ")
    .set_face(Face::Emphasis)
    .append("emphasis")
    .reset_face()
    .append(" or even strong.")
    .set(Face::Strong, 34..40)
    .build();
assert_eq!(another_other_text, text);

依赖项

~0–270KB