[![CI](https://github.com/flying-sheep/xdot-rust/actions/workflows/rust.yml/badge.svg)](https://github.com/flying-sheep/xdot-rust/actions/workflows/rust.yml)
[![docs.rs](https://img.shields.io/docsrs/xdot)](https://docs.rs/xdot/latest/xdot/)
[![Crates.io](https://img.shields.io/crates/v/xdot)](https://crates.io/crates/xdot)
[![PyPI](https://img.shields.io/pypi/v/xdot-rs)](https://pypi.org/project/xdot-rs/)
xdot
====
The main function of this package is `parse`.
It parses node/edge attributes on graphviz graphs created by [`xdot`](https://graphviz.org/docs/attr-types/xdot/) into drawable shapes.
```rust
use xdot::{parse, ShapeDraw};
let shapes: Vec<ShapeDraw> = parse("c 7 -#ff0000 p 4 4 4 36 4 36 36 4 36");
```
Each `ShapeDraw` struct contains a `shape` with geometry and a `pen` with drawing attributes (such as color, line style, and font).
If you have the `layout` feature active, you can also use `layout_and_draw_graph` (and `draw_graph`):
```rust
use graphviz_rust::parse;
use graphviz_rust::dot_structures::Graph;
use xdot::{layout_and_draw_graph, ShapeDraw};
let graph: Graph = parse("graph { a -- b}").unwrap();
let shapes: Vec<ShapeDraw> = layout_and_draw_graph(graph).unwrap();
```
Release process
---------------
1. A commit to `main` causes creation or update of a release PR. ([`release` workflow](https://github.com/flying-sheep/xdot-rust/actions/workflows/release.yml))
2. Merging a release PR causes the creation of a Git tag and GitHub release, and the upload of a Rust crate to [crates.io](https://crates.io).(also `release` workflow)
3. Publishing this GitHub release in turn triggers building and uploading a Python package. ([`publish` workflow](https://github.com/flying-sheep/xdot-rust/actions/workflows/publish.yml))
Raw data
{
"_id": null,
"home_page": "",
"name": "xdot-rs",
"maintainer": "",
"docs_url": null,
"requires_python": ">= 3.8",
"maintainer_email": "",
"keywords": "graphviz,graph",
"author": "Philipp A. <flying-sheep@web.de>",
"author_email": "Philipp A. <flying-sheep@web.de>",
"download_url": "",
"platform": null,
"description": "[![CI](https://github.com/flying-sheep/xdot-rust/actions/workflows/rust.yml/badge.svg)](https://github.com/flying-sheep/xdot-rust/actions/workflows/rust.yml)\n[![docs.rs](https://img.shields.io/docsrs/xdot)](https://docs.rs/xdot/latest/xdot/)\n[![Crates.io](https://img.shields.io/crates/v/xdot)](https://crates.io/crates/xdot)\n[![PyPI](https://img.shields.io/pypi/v/xdot-rs)](https://pypi.org/project/xdot-rs/)\n\nxdot\n====\n\nThe main function of this package is `parse`.\nIt parses node/edge attributes on graphviz graphs created by [`xdot`](https://graphviz.org/docs/attr-types/xdot/) into drawable shapes.\n\n```rust\nuse xdot::{parse, ShapeDraw};\nlet shapes: Vec<ShapeDraw> = parse(\"c 7 -#ff0000 p 4 4 4 36 4 36 36 4 36\");\n```\n\nEach `ShapeDraw` struct contains a `shape` with geometry and a `pen` with drawing attributes (such as color, line style, and font).\nIf you have the `layout` feature active, you can also use `layout_and_draw_graph` (and `draw_graph`):\n\n```rust\nuse graphviz_rust::parse;\nuse graphviz_rust::dot_structures::Graph;\nuse xdot::{layout_and_draw_graph, ShapeDraw};\n\nlet graph: Graph = parse(\"graph { a -- b}\").unwrap();\nlet shapes: Vec<ShapeDraw> = layout_and_draw_graph(graph).unwrap();\n```\n\nRelease process\n---------------\n\n1. A commit to `main` causes creation or update of a release PR. ([`release` workflow](https://github.com/flying-sheep/xdot-rust/actions/workflows/release.yml))\n2. Merging a release PR causes the creation of a Git tag and GitHub release, and the upload of a Rust crate to [crates.io](https://crates.io).(also `release` workflow)\n3. Publishing this GitHub release in turn triggers building and uploading a Python package. ([`publish` workflow](https://github.com/flying-sheep/xdot-rust/actions/workflows/publish.yml))\n\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Parse graphviz\u2019 xdot draw instructions",
"version": "0.2.3",
"split_keywords": [
"graphviz",
"graph"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "67b1ab7736211a8a1120e4bfe6f5b26178b0f4c8e69a1496581c37e71c743fb5",
"md5": "522be65c16c8572c7441c5006630fa6d",
"sha256": "e66ec71748f20560feaabd31853e35e655c4b0ba1dcf5d5689b0a7df3b1b9909"
},
"downloads": -1,
"filename": "xdot_rs-0.2.3-cp310-cp310-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "522be65c16c8572c7441c5006630fa6d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">= 3.8",
"size": 1191054,
"upload_time": "2023-04-20T15:46:08",
"upload_time_iso_8601": "2023-04-20T15:46:08.680713Z",
"url": "https://files.pythonhosted.org/packages/67/b1/ab7736211a8a1120e4bfe6f5b26178b0f4c8e69a1496581c37e71c743fb5/xdot_rs-0.2.3-cp310-cp310-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5fa6d92d60ceb071234fa230cf0ef5dacf52f6b99ef9d9d430cb930a3b18cc2d",
"md5": "afa25d61670040590f5fddeda3f3f81a",
"sha256": "b8b27c473d49c8b4022fd8c5ce70862a9318ee78c6d738059838a6597533e9bc"
},
"downloads": -1,
"filename": "xdot_rs-0.2.3-cp311-cp311-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "afa25d61670040590f5fddeda3f3f81a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">= 3.8",
"size": 1191041,
"upload_time": "2023-04-20T15:46:10",
"upload_time_iso_8601": "2023-04-20T15:46:10.145106Z",
"url": "https://files.pythonhosted.org/packages/5f/a6/d92d60ceb071234fa230cf0ef5dacf52f6b99ef9d9d430cb930a3b18cc2d/xdot_rs-0.2.3-cp311-cp311-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "855618da42bd1a8473310dcb763b64954cfdf01afa8f11124d57e20204ee0124",
"md5": "03fc8c7b3728ff88a552ce341d177f92",
"sha256": "e51554059d07ee3b3187cbd0ffe15e5582cff54d071838b6b2fb258571e690ed"
},
"downloads": -1,
"filename": "xdot_rs-0.2.3-cp38-cp38-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "03fc8c7b3728ff88a552ce341d177f92",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">= 3.8",
"size": 1191534,
"upload_time": "2023-04-20T15:46:12",
"upload_time_iso_8601": "2023-04-20T15:46:12.430524Z",
"url": "https://files.pythonhosted.org/packages/85/56/18da42bd1a8473310dcb763b64954cfdf01afa8f11124d57e20204ee0124/xdot_rs-0.2.3-cp38-cp38-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bb193ead0c70ab81003a928f6a8f81eb8336afcd8bfe3f6d7470fdf7b5b363b6",
"md5": "fea486d339abbf904d885e093ec2d590",
"sha256": "0be52f53cfe664666930247123947c15b9b8ef41e1403719828f4dd136744116"
},
"downloads": -1,
"filename": "xdot_rs-0.2.3-cp39-cp39-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "fea486d339abbf904d885e093ec2d590",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">= 3.8",
"size": 1191492,
"upload_time": "2023-04-20T15:46:14",
"upload_time_iso_8601": "2023-04-20T15:46:14.338933Z",
"url": "https://files.pythonhosted.org/packages/bb/19/3ead0c70ab81003a928f6a8f81eb8336afcd8bfe3f6d7470fdf7b5b363b6/xdot_rs-0.2.3-cp39-cp39-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-20 15:46:08",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "xdot-rs"
}