diff options
| author | Philipp A | 2020-01-08 20:13:56 +0100 | 
|---|---|---|
| committer | Philipp A | 2020-01-08 20:13:56 +0100 | 
| commit | 2634a083a58e15935ce57eb0077f736309e78aae (patch) | |
| tree | 73324f7255a960218e3648ce1b8703ac7af7b45a /document_tree/README.md | |
| parent | 06e7d81088e33d7ee03e7088e1ec2289e9c2bf5c (diff) | |
| download | rust-rst-2634a083a58e15935ce57eb0077f736309e78aae.tar.bz2 | |
Added READMEs
Diffstat (limited to 'document_tree/README.md')
| -rw-r--r-- | document_tree/README.md | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/document_tree/README.md b/document_tree/README.md new file mode 100644 index 0000000..a6acb9c --- /dev/null +++ b/document_tree/README.md @@ -0,0 +1,49 @@ +`document_tree` +=============== + +Part of the [`rst`][rst] crate family. +This crate contains structs and traits mirroring [Docutils’ Document Tree][doctree] model. +The basic structure is a tree of [elements][], some of which [have children][] and/or [extra attributes][]. + +```rust +use document_tree::*; +use document_tree::{extra_attributes as a, element_categories as c, attribute_types as t}; + +#[test] +fn imperative() { +    let mut doc = Document::default(); +    let mut title = Title::default(); +    let url = "https://example.com/image.jpg".parse().unwrap(); +    let image = ImageInline::with_extra(a::ImageInline::new(url)); +    title.append_child("Hi"); +    title.append_child(image); +    doc.append_child(title); +    println!("{:?}", doc); +} + +#[test] +fn descriptive() { +    let doc = Document::with_children(vec![ +        Title::with_children(vec![ +            "Hi".into(), +            ImageInline::with_extra(a::ImageInline::new( +                "https://example.com/image.jpg".parse().unwrap() +            )).into(), +        ]).into() +    ]); +    println!("{:?}", doc); +} +``` + +Check out the other crates in the family on how to create one from rST markup or render it! + +The advantages of this approach are that it’s convenient to have the children interface, +as well as to trivially map elements to XML. +The disadvantage is that a “vector of children” is not a well-defined model for the more structured elements +like e.g. a section, which always contains a title followed by blocks. + +[rst]: https://github.com/flying-sheep/rust-rst/#readme +[doctree]: https://docutils.sourceforge.io/docs/ref/doctree.html +[elements]: https://docs.rs/document_tree/0/document_tree/elements/trait.Element.html +[have children]: https://docs.rs/document_tree/0/document_tree/element_categories/trait.HasChildren.html +[extra attributes]: https://docs.rs/document_tree/0/document_tree/extra_attributes/trait.ExtraAttributes.html | 
