Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/coastalwhite/wavedrom-rs
Beautiful Digital Timing Diagrams with Rust
https://github.com/coastalwhite/wavedrom-rs
diagrams digital logic svg timing wasm wavedrom waveform
Last synced: 17 days ago
JSON representation
Beautiful Digital Timing Diagrams with Rust
- Host: GitHub
- URL: https://github.com/coastalwhite/wavedrom-rs
- Owner: coastalwhite
- License: apache-2.0
- Created: 2023-04-22T21:51:42.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-04T09:56:41.000Z (7 months ago)
- Last Synced: 2024-10-14T03:04:59.432Z (30 days ago)
- Topics: diagrams, digital, logic, svg, timing, wasm, wavedrom, waveform
- Language: Rust
- Homepage: https://coastalwhite.github.io/wavedrom-rs
- Size: 1.42 MB
- Stars: 71
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
wavedrom-rs
A Rust Digital Timing Diagram generator based on WaveDrom
---
[Demo][demo] | [Tutorial][book]
The `wavedrom-rs` crate provides an interface to shape beautiful [Digital Timing
Diagrams][dtd] into an [SVG][svg]. It is almost completely compatible with the
[WaveDrom][wavedrom-js] project. It can be merged into document build tools,
continuous integration or be used as a one off to generate beautiful
diagrams.
There are currently four ways to use `wavedrom-rs`:
- [On the editor website][demo]
- [As a Rust crate][cratesio]
- [As a Command-Line Application][cli]
- [As a MdBook Preprocessor][mdbook-wavedrom]## Features
- [x] All original WaveDrom Signal Types
- [x] Signal Groups
- [x] Arrows and Indicator Markers
- [x] Headers and Footers
- [x] Cycle Enumeration Markers
- [x] Editor Website through WASM
- [x] MdBook Preprocessor
- [x] Full Customization via Skins## Documentation
This project uses the same syntax for WaveJson as the original
[WaveDrom][wavedrom-js] project. Therefore, the original [Hitchhiker's Guide to
WaveDrom][hitchhiker] is still a good introduction into several concepts of
of WaveJson. Additionally, this repository maintains a [reference book][book].## Testing
Tests are written in the [`./tests`](./tests) directory and can be generated
using the [`./tests/run.py`](./tests/run.py) scripts. This will generate a
`result.html` in the `tests` directory that contains all the rendered SVGs for
each `json5` file in the `./tests` directory.```bash
# Usage:
cd ./tests
./run [path/to/skin.json5]
```## Fuzzing
This project is fuzzed with [`cargo-fuzz`][cargo-fuzz]. This improves the
stability of the project.```bash
cargo +nightly fuzz run wavejson-render
```## MSRV
This crate currently only compiles with Rust 1.70. To select that version use:
```bash
rustup update 1.70 --no-self-update && rustup default 1.70
```## Contribution
Please report any bugs and possible improvements as an issue within this
repository. Pull requests are also welcome.## License
Licensed under a [MIT License](./LICENSE). The demo website utilizes icons from
[Lucide][lucide] which are licensed under an ISC license.[demo]: https://gburghoorn.com/wavedrom
[svg]: https://en.wikipedia.org/wiki/SVG
[wavedrom-js]: https://wavedrom.com/
[tutorial]: https://wavedrom.com/tutorial.html
[lucide]: https://lucide.dev/
[hitchhiker]: https://wavedrom.com/tutorial.html
[cratesio]: https://crates.io/crates/wavedrom-rs
[cli]: ./wavedrom
[mdbook-wavedrom]: ./mdbook-wavedrom
[dtd]: https://en.wikipedia.org/wiki/Digital_timing_diagram
[book]: https://coastalwhite.github.io/wavedrom-rs
[cargo-fuzz]: https://github.com/rust-fuzz/cargo-fuzz