23 stable releases
1.16.1 | Jan 24, 2022 |
---|---|
1.16.0 | Jan 17, 2022 |
1.12.0 | Sep 26, 2021 |
1.11.1 | Aug 29, 2021 |
1.7.2 | May 27, 2021 |
#24 in #documents
162 downloads per month
315KB
3K
SLoC
Stencila Schema for Rust
This crate provides Rust bindings for the Stencila Schema. It is primarily aimed at Rust developers wanting to programmatically generate or modify documents, particularly executable documents. For example, it is used in the Stencila Rust library.
Install
cargo add stencila_schema
Use
This package exports a struct
for each type of document node in the Stencila Schema e.g. Article
, Paragraph
, CodeChunk
.
Note that all node properties e.g. familyNames
are made snake case e.g. family_names
for consistency with Rust conventions.
let article = Article {
title: Some(ArticleTitle::String("The article title".into())),
authors: Some(vec![ArticleAuthors::Person({
Person {
given_names: Some(vec!["Jane".into()]),
family_names: Some(vec!["Jones".into()]),
..Default::default()
}
})]),
content: Some(vec![BlockContent::Paragraph(Paragraph {
content: vec![
InlineContent::String("A paragraph with a ".into()),
InlineContent::CodeExpression(CodeExpression {
programming_language: Some("r".into()),
text: "2^2".into(),
..Default::default()
}),
],
..Default::default()
})]),
..Default::default()
};
Develop
Get started by cloning this repository and using cargo
to run the tests,
git clone git@github.com:stencila/schema
cd schema/rust
cargo test
Of course, you need to have Rust installed. If you want to re-generate src/types.rs
, you'll also need to have Node.js installed (to generate the Rust code from the schema's YAML files).
Dependencies
~2.7–4MB
~71K SLoC