Metadata-Version: 2.4
Name: zensical-wavedrom-plugin
Version: 0.1.0
Summary: A Zensical extension for rendering WaveDrom diagrams in Markdown
Author-email: Jiajie Chen <c@jia.je>
License-Expression: MIT
Project-URL: Homepage, https://github.com/jiegec/zensical-wavedrom-plugin
Keywords: zensical,markdown,wavedrom
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: beautifulsoup4>=4.6
Requires-Dist: markdown>=3.7
Requires-Dist: wavedrom>=2.0.3
Provides-Extra: dev
Requires-Dist: pytest>=9.0.3; extra == "dev"
Dynamic: license-file

# Zensical WaveDrom Plugin

A Zensical extension for rendering [WaveDrom](https://wavedrom.com/) diagrams in Markdown.

This is a port of the [mkdocs-wavedrom-plugin](https://github.com/kuri65536/mkdocs-wavedrom-plugin) (or, my [maintained fork](https://github.com/jiegec/mkdocs-wavedrom-plugin)) for the Zensical static site generator.

## Features

- Transform fenced code blocks with language `wavedrom` into WaveDrom script tags or embedded SVG
- Support for `pymdownx.superfences` custom fences
- Optional SVG embedding at build time (no JavaScript required)

## Installation

```bash
pip install zensical-wavedrom-plugin
```

## Configuration

Add to your `zensical.toml`:

### Default mode (JavaScript rendering)

In default mode, WaveDrom code blocks are transformed into `<script type="WaveDrom">` tags and the WaveDrom JavaScript library processes them on page load.

```toml
[project.markdown_extensions.fenced_code]
[project.markdown_extensions.wavedrom]
```

### Embed SVG mode

When `embed_svg = true` is set, WaveDrom diagrams are rendered to SVG at build time. This means no JavaScript is required on the client side.

```toml
[project.markdown_extensions.fenced_code]
[project.markdown_extensions.wavedrom]
embed_svg = true
```

### Pymdownx Integration

This plugin integrates with `pymdownx.superfences` to provide custom fence support when `pymdownx` is used instead of `fenced_code`.

```toml
[project.markdown_extensions.pymdownx.superfences]
custom_fences = [
  { name = "wavedrom", class = "wavedrom", format = "zensical_wavedrom_plugin.extension.fence_wavedrom_format" }
]
[project.markdown_extensions.wavedrom]
```

## Usage

In your Markdown files:

````markdown
```wavedrom
{ signal: [
  { name: "clk",  wave: "p....." },
  { name: "data", wave: "x.345x" }
] }
```
````

## License

This project is licensed under the MIT License.
