stencila-schema

Crates.iostencila-schema
lib.rsstencila-schema
version1.16.1
sourcesrc
created_at2021-05-11 02:05:11.171054
updated_at2022-01-24 04:35:30.87696
descriptionRust bindings for Stencila Schema
homepagehttps://schema.stenci.la
repositoryhttps://github.com/stencila/schema
max_upload_size
id395904
size323,896
Stencila Bot (stencila-ci)

documentation

README

Stencila Schema for Rust

Build Status Crates.io Docs

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).

Commit count: 1659

cargo fmt