#document #text-document #text #html

sidoc

生成结构化/范围缩进的文档的库

1 个不稳定版本

0.1.0 2020年9月12日

#18#text-document


用于 3 个crate(2个直接使用)

0BSD 许可证

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");
}

无运行时依赖