1 个不稳定版本
0.1.0 | 2020年9月12日 |
---|
#18 在 #text-document
10KB
200 行
一个用于生成由可重用部分组成的缩进范围文本文档的库。
使用 idoc 包含三个主要步骤
- 创建文档
- 将文档添加到渲染上下文
- 渲染输出
简单示例
use std::sync::Arc;
use sidoc::{Builder, RenderContext};
fn create_doc() {
// Use a builder to generate document
let mut bldr = Builder::new();
bldr.line("<!DOCTYPE html>");
bldr.scope("<html>", Some("</html>")).exit();
let doc = bldr.build().unwrap();
// Create a render context, add document to it
let mut r = RenderContext::new();
r.doc("root", Arc::new(doc));
// Render the output
let buf = r.render("root").unwrap();
assert_eq!(buf, "<!DOCTYPE html>\n<html>\n</html>\n");
}
参考示例
use std::sync::Arc;
use sidoc::{Builder, RenderContext};
fn create_doc() {
// Use a builder to generate root document
let mut bldr = Builder::new();
bldr.scope("<html>", Some("</html>")).exit();
let doc = bldr.build().unwrap();
// Use a builder to generate sub document
let mut bldr = Builder::new();
bldr.scope("<head>", Some("</head>")).exit();
let subdoc = bldr.build().unwrap();
// Create a render context, add documents to it
let mut r = RenderContext::new();
r.doc("root", Arc::new(doc));
r.doc("head", Arc::new(subdoc));
// Render the output
let buf = r.render("root").unwrap();
assert_eq!(buf, "<html>\n <head>\n </head>\n</html>\n");
}