1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//! A library for generating indented scoped text documents consisting of
//! reusable parts.
//!
//! There are three major steps involved in using idoc:
//! - Creating document(s)
//! - Adding document(s) to a render context
//! - Render output
//!
//!# Simple example
//! ```
//! 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");
//! }
//! ```
//!
//! # Reference example
//! ```
//! 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");
//! }
//! ```
pub use Builder;
pub use Doc;
pub use Error;
pub use RenderContext;
pub
// vim: set ft=rust et sw=2 ts=2 sts=2 cinoptions=2 tw=79 :