document_tree

Crates.iodocument_tree
lib.rsdocument_tree
version
sourcesrc
created_at2019-12-26 22:44:25.936325+00
updated_at2025-04-13 16:19:23.740958+00
descriptionreStructuredText’s DocumentTree representation
homepagehttps://github.com/flying-sheep/rust-rst
repositoryhttps://github.com/flying-sheep/rust-rst
max_upload_size
id192552
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Philipp A. (flying-sheep)

documentation

https://docs.rs/document_tree

README

document_tree

Part of the rst crate family. This crate contains structs and traits mirroring Docutils’ Document Tree model. The basic structure is a tree of elements, some of which have children and/or extra attributes.

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.

Commit count: 137

cargo fmt