Skip to content

Repository files navigation

Quillmark

Crates.io PyPI npm CI License

Quills define document presentation and schema. Use a quill to generate a formatted document from markdown or code.

Maintained by borb-sh.

UNDER DEVELOPMENT: APIs may change.

Documentation

Installation

cargo add quillmark

Quick Start (Rust)

use quillmark::{quill_from_path, OutputFormat, Quillmark, RenderOptions};

// A `Quill` is declarative data: no engine needed to load it.
let quill = quill_from_path("path/to/quill")?;
let engine = Quillmark::new();

let markdown = r#"~~~
$quill: my_quill
$kind: main
title: Example
~~~

# Hello World
"#;

// The bound door: parse and conform against the quill that will render it.
let doc = quill.parse(markdown)?.document;
let result = engine.render(
    &quill,
    &doc,
    &RenderOptions::default().with_output_format(OutputFormat::Pdf),
)?;

let pdf_bytes = &result.artifacts[0].bytes;

Examples

cargo run --example usaf_memo
cargo run --example taro

Project Structure

  • crates/core - Core parsing, schema, and backend traits
  • crates/content - Document content model
  • crates/quillmark - Rust orchestration API
  • crates/backends/typst - Typst backend
  • crates/quillmark-pdf - Typst-free AcroForm PDF-stamping spine
  • crates/backends/pdfform - Typst-free PDF-form backend (built on quillmark-pdf)
  • crates/bindings/python - Python bindings
  • crates/bindings/wasm - WebAssembly bindings
  • crates/bindings/cli - Command-line interface
  • crates/fixtures - Test fixtures and sample Quill templates
  • crates/fuzz - Property-based fuzzing tests
  • prose/canon - Design documentation

Contributing

See CONTRIBUTING.md.

License

Licensed under the Apache License, Version 2.0. See LICENSE.

About

Schema-driven document engine

Resources

Contributing

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages