jinja2_mermaid_extension


Namejinja2_mermaid_extension JSON
Version 1.5.2 PyPI version JSON
download
home_pagehttps://github.com/AdamGagorik/jinja2-mermaid-extension
SummaryA jinja2 block to render a mermaid diagram
upload_time2024-09-02 18:52:38
maintainerNone
docs_urlNone
authorAdam Gagorik
requires_python<4.0,>=3.12
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # jinja2-mermaid-extension

[![Release](https://img.shields.io/github/v/release/AdamGagorik/jinja2-mermaid-extension)](https://img.shields.io/github/v/release/AdamGagorik/jinja2-mermaid-extension)
[![Build status](https://img.shields.io/github/actions/workflow/status/AdamGagorik/jinja2-mermaid-extension/main.yml?branch=main)](https://github.com/AdamGagorik/jinja2-mermaid-extension/actions/workflows/main.yml?query=branch%3Amain)
[![codecov](https://codecov.io/gh/AdamGagorik/jinja2-mermaid-extension/branch/main/graph/badge.svg)](https://codecov.io/gh/AdamGagorik/jinja2-mermaid-extension)
[![Commit activity](https://img.shields.io/github/commit-activity/m/AdamGagorik/jinja2-mermaid-extension)](https://img.shields.io/github/commit-activity/m/AdamGagorik/jinja2-mermaid-extension)
[![License](https://img.shields.io/github/license/AdamGagorik/jinja2-mermaid-extension)](https://img.shields.io/github/license/AdamGagorik/jinja2-mermaid-extension)

A jinja2 block to render a mermaid or tikz diagram.

1. Mermaid diagrams are rendered using the `mermaid-cli` tool in a `Docker` container.
2. TikZ diagrams are rendered using the `tectonic` tool on your host machine.
3. The diagram is saved to the current directory or `mermaid_output_root` or `tikz_output_root` (if defined).
4. The block is then replaced with a configurable string (markdown, etc).

## Setup

- `Docker` must be installed to run the `mermaid` command line tool.
- The extension should be installed in your `Python` environment.
- `tectonic` must be installed to render `tikz` diagrams.

```bash
pip install jinja2-mermaid-extension
```

- The extension should be added to the `jinja2` environment.

```python
from jinja2 import Environment
from jinja2_mermaid_extension import MermaidExtension

env = Environment(extensions=[MermaidExtension])
```

- You should pass the `mermaid_output_root` to the render method.

```python
out_path = Path().cwd() / "example.md"
template = env.get_template("example.md.jinja2")
rendered = template.render(mermaid_input_root=Path.cwd(), mermaid_output_root=out_path.parent)
out_path.write_text(rendered)
```

## Usage : mermaid

The following `jinaj2` block will render a mermaid diagram.

```jinja2
{% mermaid -%}
ext: .png
name: test
mode: myst
scale: 3
width: 75
align: center
caption: |
    An example mermaid diagram!
diagram: |
    graph TD
        A --> B
        B --> C
        A --> C
{% endmermaid %}
```

The output will be replaced with a `MyST` formatted markdown image.

```markdown
:::{figure} test.png
:align: center
:witdh: 75

An example mermaid diagram!
:::
```

The following arguments are available:

| Argument                   | Kind               | Description                                                                         | Default                |
| -------------------------- | ------------------ | ----------------------------------------------------------------------------------- | ---------------------- |
| **diagram** or **inp**     | Input              | The raw mermaid diagram code or the path to an `mmd` file.                          | `None`                 |
| **ext**                    | Output             | The file extension of the generated diagram.                                        | `".png"`               |
| **mode**                   | Replacement Option | How to render the output after processing.                                          | `"path"`               |
| **alt_text**               | Replacement Option | The alt text of the diagram.                                                        | `None`                 |
| **align**                  | Replacement Option | The alignment of the diagram only valid for MyST output)                            | `"center"`             |
| **caption**                | Replacement Option | A caption to add to the diagram only valid for MyST output).                        | `None`                 |
| **just_name**              | Replacement Option | Whether to only output the name of the generated diagram.                           | `False`                |
| **full_path**              | Replacement Option | Whether to output the full path of the generated diagram.                           | `False`                |
| **use_cached**             | Processing Option  | Whether to use a cached version of the diagram.                                     | `True`                 |
| **parallel**               | Processing Option  | Whether to render the diagram in parallel.                                          | `False`                |
| **temp_dir**               | Processing Option  | A temporary directory to use for intermediate files.                                | `None`                 |
| **delete_temp_dir**        | Processing Option  | Whether to delete the temporary directory after execution.                          | `True`                 |
| **mermaid_docker_image**   | Processing Option  | The docker image containing the mermaid-cli tool.                                   | `"minlag/mermaid-cli"` |
| **mermaid_volume_mount**   | Processing Option  | The directory in the docker container to mount the temporary directory to.          | `"/data"`              |
| **use_local_mmdc_instead** | Processing Option  | Whether to use the docker image or a locally installed mermaid-cli tool named mmdc. | `False`                |

The following mermaid specific arguments are available:

| Argument       | Kind               | Description                                    | Default     |
| -------------- | ------------------ | ---------------------------------------------- | ----------- |
| **theme**      | Mermaid CLI Option | The theme to use for the diagram.              | `"default"` |
| **scale**      | Mermaid CLI Option | A scaling factor for the diagram.              | `3`         |
| **width**      | Mermaid CLI Option | The width of the diagram in pixels.            | `800 `      |
| **height**     | Mermaid CLI Option | The height of the diagram in pixels.           | `None`      |
| **background** | Mermaid CLI Option | The background color of the generated diagram. | `"white"`   |

The block will be replaced by a string based on the `mode` argument.

- `path`: Output the path to the generated image.
- `markdown`: Output a simple markdown image link.
- `restructured`: Output a restructured text image link.
- `myst_markdown`: Output a MyST formatted markdown image.

For example, when using `mode: markdown`, the example above will be replaced with:

```markdown
![An example mermaid diagram!](./test.png)
```

## Usage : tikz

The following `jinaj2` block will render a `tikz` diagram (any LaTeX document really).

```jinja2
{% tikz -%}
ext: .pdf
name: test
mode: path
diagram: |
    \documentclass[margin=0pt]{standalone}
    \usepackage{tikz}
    \begin{document}
    \begin{tikzpicture}[remember picture]
    \coordinate (SE) at (0,0) {};
    \coordinate (NW) at (5,5) {};
    \draw (SE) rectangle (NW);
    \node[draw, rectangle, anchor=south west] at (SE) {SE};
    \node[draw, rectangle, anchor=north east] at (NW) {NW};
    \end{tikzpicture}
    \end{document}
{% endtikz %}
```

The following tikz specific arguments are available:

| Argument                    | Kind        | Description                                        | Default                                |
| --------------------------- | ----------- | -------------------------------------------------- | -------------------------------------- |
| **allow_missing**           | TikZ Option | Allow commands to be missing?                      | `False`                                |
| **latex_command**           | TikZ Option | The command to use to compile tikz diagrams.       | `"tectonic {inp_tex}"`                 |
| **pdf2svg_command**         | TikZ Option | The command to use to convert pdf to svg diagrams. | `"pdf2svg {inp_pdf} {out_svg}"`        |
| **convert_command**         | TikZ Option | The command to use to convert pdf to png diagrams. | `"magick convert {inp_pdf} {out_png}"` |
| **convert_command_density** | TikZ Option | The density of the png diagram.                    | `300`                                  |
| **package**                 | TikZ Option | The LaTeX package to use for the diagram.          | `(xcolor, tikz)`                       |
| **preable**                 | TikZ Option | The LaTeX preable to use for the diagram.          | ``                                     |
| **libraries**               | TikZ Option | The TikZ libraries to use for the diagram.         | `(shapes, arrows, etc)`                |
| **tikz_options**            | TikZ Option | The TikZ picture options to use for the diagram.   | `(scale=1, remember picture)`          |

---

- **Github repository**: <https://github.com/AdamGagorik/jinja2-mermaid-extension/>
- **Documentation** <https://AdamGagorik.github.io/jinja2-mermaid-extension/>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/AdamGagorik/jinja2-mermaid-extension",
    "name": "jinja2_mermaid_extension",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.12",
    "maintainer_email": null,
    "keywords": null,
    "author": "Adam Gagorik",
    "author_email": "fadam.gagorik@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e9/03/e95f5df5ac21fc180eae7e58e3cf00a3b6cfa677bb84af63e446b2ac6889/jinja2_mermaid_extension-1.5.2.tar.gz",
    "platform": null,
    "description": "# jinja2-mermaid-extension\n\n[![Release](https://img.shields.io/github/v/release/AdamGagorik/jinja2-mermaid-extension)](https://img.shields.io/github/v/release/AdamGagorik/jinja2-mermaid-extension)\n[![Build status](https://img.shields.io/github/actions/workflow/status/AdamGagorik/jinja2-mermaid-extension/main.yml?branch=main)](https://github.com/AdamGagorik/jinja2-mermaid-extension/actions/workflows/main.yml?query=branch%3Amain)\n[![codecov](https://codecov.io/gh/AdamGagorik/jinja2-mermaid-extension/branch/main/graph/badge.svg)](https://codecov.io/gh/AdamGagorik/jinja2-mermaid-extension)\n[![Commit activity](https://img.shields.io/github/commit-activity/m/AdamGagorik/jinja2-mermaid-extension)](https://img.shields.io/github/commit-activity/m/AdamGagorik/jinja2-mermaid-extension)\n[![License](https://img.shields.io/github/license/AdamGagorik/jinja2-mermaid-extension)](https://img.shields.io/github/license/AdamGagorik/jinja2-mermaid-extension)\n\nA jinja2 block to render a mermaid or tikz diagram.\n\n1. Mermaid diagrams are rendered using the `mermaid-cli` tool in a `Docker` container.\n2. TikZ diagrams are rendered using the `tectonic` tool on your host machine.\n3. The diagram is saved to the current directory or `mermaid_output_root` or `tikz_output_root` (if defined).\n4. The block is then replaced with a configurable string (markdown, etc).\n\n## Setup\n\n- `Docker` must be installed to run the `mermaid` command line tool.\n- The extension should be installed in your `Python` environment.\n- `tectonic` must be installed to render `tikz` diagrams.\n\n```bash\npip install jinja2-mermaid-extension\n```\n\n- The extension should be added to the `jinja2` environment.\n\n```python\nfrom jinja2 import Environment\nfrom jinja2_mermaid_extension import MermaidExtension\n\nenv = Environment(extensions=[MermaidExtension])\n```\n\n- You should pass the `mermaid_output_root` to the render method.\n\n```python\nout_path = Path().cwd() / \"example.md\"\ntemplate = env.get_template(\"example.md.jinja2\")\nrendered = template.render(mermaid_input_root=Path.cwd(), mermaid_output_root=out_path.parent)\nout_path.write_text(rendered)\n```\n\n## Usage : mermaid\n\nThe following `jinaj2` block will render a mermaid diagram.\n\n```jinja2\n{% mermaid -%}\next: .png\nname: test\nmode: myst\nscale: 3\nwidth: 75\nalign: center\ncaption: |\n    An example mermaid diagram!\ndiagram: |\n    graph TD\n        A --> B\n        B --> C\n        A --> C\n{% endmermaid %}\n```\n\nThe output will be replaced with a `MyST` formatted markdown image.\n\n```markdown\n:::{figure} test.png\n:align: center\n:witdh: 75\n\nAn example mermaid diagram!\n:::\n```\n\nThe following arguments are available:\n\n| Argument                   | Kind               | Description                                                                         | Default                |\n| -------------------------- | ------------------ | ----------------------------------------------------------------------------------- | ---------------------- |\n| **diagram** or **inp**     | Input              | The raw mermaid diagram code or the path to an `mmd` file.                          | `None`                 |\n| **ext**                    | Output             | The file extension of the generated diagram.                                        | `\".png\"`               |\n| **mode**                   | Replacement Option | How to render the output after processing.                                          | `\"path\"`               |\n| **alt_text**               | Replacement Option | The alt text of the diagram.                                                        | `None`                 |\n| **align**                  | Replacement Option | The alignment of the diagram only valid for MyST output)                            | `\"center\"`             |\n| **caption**                | Replacement Option | A caption to add to the diagram only valid for MyST output).                        | `None`                 |\n| **just_name**              | Replacement Option | Whether to only output the name of the generated diagram.                           | `False`                |\n| **full_path**              | Replacement Option | Whether to output the full path of the generated diagram.                           | `False`                |\n| **use_cached**             | Processing Option  | Whether to use a cached version of the diagram.                                     | `True`                 |\n| **parallel**               | Processing Option  | Whether to render the diagram in parallel.                                          | `False`                |\n| **temp_dir**               | Processing Option  | A temporary directory to use for intermediate files.                                | `None`                 |\n| **delete_temp_dir**        | Processing Option  | Whether to delete the temporary directory after execution.                          | `True`                 |\n| **mermaid_docker_image**   | Processing Option  | The docker image containing the mermaid-cli tool.                                   | `\"minlag/mermaid-cli\"` |\n| **mermaid_volume_mount**   | Processing Option  | The directory in the docker container to mount the temporary directory to.          | `\"/data\"`              |\n| **use_local_mmdc_instead** | Processing Option  | Whether to use the docker image or a locally installed mermaid-cli tool named mmdc. | `False`                |\n\nThe following mermaid specific arguments are available:\n\n| Argument       | Kind               | Description                                    | Default     |\n| -------------- | ------------------ | ---------------------------------------------- | ----------- |\n| **theme**      | Mermaid CLI Option | The theme to use for the diagram.              | `\"default\"` |\n| **scale**      | Mermaid CLI Option | A scaling factor for the diagram.              | `3`         |\n| **width**      | Mermaid CLI Option | The width of the diagram in pixels.            | `800 `      |\n| **height**     | Mermaid CLI Option | The height of the diagram in pixels.           | `None`      |\n| **background** | Mermaid CLI Option | The background color of the generated diagram. | `\"white\"`   |\n\nThe block will be replaced by a string based on the `mode` argument.\n\n- `path`: Output the path to the generated image.\n- `markdown`: Output a simple markdown image link.\n- `restructured`: Output a restructured text image link.\n- `myst_markdown`: Output a MyST formatted markdown image.\n\nFor example, when using `mode: markdown`, the example above will be replaced with:\n\n```markdown\n![An example mermaid diagram!](./test.png)\n```\n\n## Usage : tikz\n\nThe following `jinaj2` block will render a `tikz` diagram (any LaTeX document really).\n\n```jinja2\n{% tikz -%}\next: .pdf\nname: test\nmode: path\ndiagram: |\n    \\documentclass[margin=0pt]{standalone}\n    \\usepackage{tikz}\n    \\begin{document}\n    \\begin{tikzpicture}[remember picture]\n    \\coordinate (SE) at (0,0) {};\n    \\coordinate (NW) at (5,5) {};\n    \\draw (SE) rectangle (NW);\n    \\node[draw, rectangle, anchor=south west] at (SE) {SE};\n    \\node[draw, rectangle, anchor=north east] at (NW) {NW};\n    \\end{tikzpicture}\n    \\end{document}\n{% endtikz %}\n```\n\nThe following tikz specific arguments are available:\n\n| Argument                    | Kind        | Description                                        | Default                                |\n| --------------------------- | ----------- | -------------------------------------------------- | -------------------------------------- |\n| **allow_missing**           | TikZ Option | Allow commands to be missing?                      | `False`                                |\n| **latex_command**           | TikZ Option | The command to use to compile tikz diagrams.       | `\"tectonic {inp_tex}\"`                 |\n| **pdf2svg_command**         | TikZ Option | The command to use to convert pdf to svg diagrams. | `\"pdf2svg {inp_pdf} {out_svg}\"`        |\n| **convert_command**         | TikZ Option | The command to use to convert pdf to png diagrams. | `\"magick convert {inp_pdf} {out_png}\"` |\n| **convert_command_density** | TikZ Option | The density of the png diagram.                    | `300`                                  |\n| **package**                 | TikZ Option | The LaTeX package to use for the diagram.          | `(xcolor, tikz)`                       |\n| **preable**                 | TikZ Option | The LaTeX preable to use for the diagram.          | ``                                     |\n| **libraries**               | TikZ Option | The TikZ libraries to use for the diagram.         | `(shapes, arrows, etc)`                |\n| **tikz_options**            | TikZ Option | The TikZ picture options to use for the diagram.   | `(scale=1, remember picture)`          |\n\n---\n\n- **Github repository**: <https://github.com/AdamGagorik/jinja2-mermaid-extension/>\n- **Documentation** <https://AdamGagorik.github.io/jinja2-mermaid-extension/>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A jinja2 block to render a mermaid diagram",
    "version": "1.5.2",
    "project_urls": {
        "Documentation": "https://AdamGagorik.github.io/jinja2-mermaid-extension/",
        "Homepage": "https://github.com/AdamGagorik/jinja2-mermaid-extension",
        "Repository": "https://github.com/AdamGagorik/jinja2-mermaid-extension"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d617c6d8dced5387bf16dde9dd95ec34d53d9d0eac403304af73a963c5ef7dd5",
                "md5": "6ae7998d032811cc38c6a083b11ac112",
                "sha256": "0225e0686dc4c6cf6317730c908b1b80e0adb6db78a19d4774c7f3922bc96034"
            },
            "downloads": -1,
            "filename": "jinja2_mermaid_extension-1.5.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6ae7998d032811cc38c6a083b11ac112",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.12",
            "size": 13037,
            "upload_time": "2024-09-02T18:52:36",
            "upload_time_iso_8601": "2024-09-02T18:52:36.947084Z",
            "url": "https://files.pythonhosted.org/packages/d6/17/c6d8dced5387bf16dde9dd95ec34d53d9d0eac403304af73a963c5ef7dd5/jinja2_mermaid_extension-1.5.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e903e95f5df5ac21fc180eae7e58e3cf00a3b6cfa677bb84af63e446b2ac6889",
                "md5": "0a9ece110aace1837454a04c55d0d04b",
                "sha256": "bd711f5792e2c284795691607dec4924ceef253238e78f29ca498f5236acbfca"
            },
            "downloads": -1,
            "filename": "jinja2_mermaid_extension-1.5.2.tar.gz",
            "has_sig": false,
            "md5_digest": "0a9ece110aace1837454a04c55d0d04b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.12",
            "size": 12542,
            "upload_time": "2024-09-02T18:52:38",
            "upload_time_iso_8601": "2024-09-02T18:52:38.217368Z",
            "url": "https://files.pythonhosted.org/packages/e9/03/e95f5df5ac21fc180eae7e58e3cf00a3b6cfa677bb84af63e446b2ac6889/jinja2_mermaid_extension-1.5.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-02 18:52:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "AdamGagorik",
    "github_project": "jinja2-mermaid-extension",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "jinja2_mermaid_extension"
}
        
Elapsed time: 1.08128s