| Crates.io | pikru |
| lib.rs | pikru |
| version | 1.0.1 |
| created_at | 2025-12-28 12:36:54.748382+00 |
| updated_at | 2025-12-28 12:40:32.98903+00 |
| description | A pure Rust implementation of pikchr, a PIC-like diagram markup language that generates SVG |
| homepage | https://github.com/bearcove/pikru |
| repository | https://github.com/bearcove/pikru |
| max_upload_size | |
| id | 2008747 |
| size | 755,332 |
A Rust implementation of pikchr, a PIC-like diagram markup language for creating technical diagrams that generates SVG.
let svg = pikru::pikchr(r#"box "Hello" arrow box "World""#).unwrap();
assert!(svg.contains("<svg"));
Enable CSS variables for automatic light/dark theming:
use pikru::{pikchr_with_options, RenderOptions};
let options = RenderOptions { css_variables: true };
let svg = pikchr_with_options(r#"box "Hello""#, &options).unwrap();
assert!(svg.contains("light-dark("));
The generated SVG includes a <style> block with CSS variables using
light-dark(), so colors automatically adapt to the user's color scheme.
The test suite validates output against the original C implementation:
cargo test # Run all tests
cargo xtask compare-html # Generate visual comparison HTML
cargo xtask generate-pngs # Convert SVGs to PNGs for debugging
See comparison.html for a side-by-side visual comparison of C vs Rust output.
./hooks/install.sh
pikru is a direct Rust port of:
vendor/pikchr-c/ for reference.Also referenced during development:
Our CI runs on Depot hosted runners — huge thanks to Depot for sponsoring the compute that keeps the pikru test suite flying.
Thanks to all individual sponsors:
...along with corporate sponsors:
Licensed under either of:
at your option.