Crates.io | stencila-schema |
lib.rs | stencila-schema |
version | 1.16.1 |
source | src |
created_at | 2021-05-11 02:05:11.171054 |
updated_at | 2022-01-24 04:35:30.87696 |
description | Rust bindings for Stencila Schema |
homepage | https://schema.stenci.la |
repository | https://github.com/stencila/schema |
max_upload_size | |
id | 395904 |
size | 323,896 |
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.
cargo add stencila_schema
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()
};
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).