### Setup Development Environment Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/developer.rst Installs necessary Python tools including pip and tox, and configures git pre-commit hooks for code linting using flake8. ```sh wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py sudo pip3 install tox sudo pip3 install flake8 pep8-naming flake8 --install-hook git config flake8.strict true ``` -------------------------------- ### Setup Local PlantUML Server Source: https://context7.com/carlos-jenkins/plantweb/llms.txt Run a local PlantUML server using Docker and configure Plantweb to utilize it for faster, offline rendering. ```bash docker run -d --name plantuml -p 8080:8080 plantuml/plantuml-server:tomcat cat > .plantwebrc << 'EOF' { "server": "http://localhost:8080/plantuml/", "format": "svg", "use_cache": true, "cache_dir": ".cache/plantweb" } EOF ``` ```python from plantweb.render import render output, fmt, engine, sha = render( content, server='http://localhost:8080/plantuml/' ) ``` -------------------------------- ### Install Plantweb via Pip Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Installs the Plantweb package using the Python package manager. ```bash sudo pip3 install plantweb ``` -------------------------------- ### Create PlantUML Sequence Diagrams Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Demonstrates how to define sequence diagrams using PlantUML syntax. These examples cover basic interactions, actor definitions, and automatic numbering configurations. ```PlantUML Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response ``` ```PlantUML actor Foo1 boundary Foo2 control Foo3 entity Foo4 database Foo5 Foo1 -> Foo2 : To boundary Foo1 -> Foo3 : To control Foo1 -> Foo4 : To entity Foo1 -> Foo5 : To database ``` ```PlantUML autonumber 10 10 "[000]" Bob -> Alice : Authentication Request Bob <- Alice : Authentication Response autonumber stop Bob -> Alice : dummy autonumber resume "Message 0 " Bob -> Alice : Yet another authentication Request Bob <- Alice : Yet another authentication Response ``` -------------------------------- ### Create PlantUML Use Case Diagrams Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Examples of use case diagrams showing relationships between actors and system functionality. Includes usage of include/extend relationships and package styling. ```PlantUML :Main Admin: as Admin (Use the application) as (Use) User <|-- Admin (Start) <|-- (Use) ``` ```PlantUML left to right direction skinparam packageStyle rect actor customer actor clerk rectangle checkout { customer -- (checkout) (checkout) .> (payment) : include (help) .> (checkout) : extends (checkout) -- clerk } ``` -------------------------------- ### Render Diagrams via Python API Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Examples of using the render and render_file functions to generate diagrams from strings or files using PlantUML or Graphviz engines. ```python from plantweb.render import render CONTENT = """ actor Foo1 ... """ output = render( CONTENT, engine='plantuml', format='svg', cacheopts={'use_cache': False} ) ``` ```python from plantweb.render import render_file outfile = render_file( infile, renderopts={'engine': 'graphviz', 'format': 'png'}, cacheopts={'use_cache': False} ) ``` -------------------------------- ### Embed Diagrams in Sphinx Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Examples of using Sphinx directives to embed PlantUML diagrams directly or by referencing external files. ```rst .. uml:: Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response .. uml:: my_uml_diagram.uml .. uml:: /diagrams/my_uml_diagram.uml ``` -------------------------------- ### Ditaa ASCII Diagram with Nested Elements Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst A Ditaa diagram example showcasing nested elements and color coding. This snippet demonstrates how to represent complex components like 'Ext-Foo' and 'Foo' with different styles and connections. ```ditaa +---+-----+ +----------+ | cBLU | | {io} | | Ext-Foo | | S-ATA | | +-----+ | cFEA | | |cPNK | +----------+ | | Foo | +---+-----+ ``` -------------------------------- ### Ditaa ASCII Diagram with Color Blocks Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Illustrates Ditaa diagramming with distinct color blocks for different sections. This example uses color codes like 'cRED', 'cBLU', 'cGRE', 'cPNK', 'cAAA', 'cCCC', 'cBLK', and 'cYEL' to visually separate areas. ```ditaa +-------------+-------------+ |cRED RED |cBLU BLU | +-------------+-------------+ |cGRE GRE |cPNK PNK | +-------------+-------------+ |cAAA AAA | +-------------+-------------+ |cCCC CCC | +-------------+-------------+ |cBLK BLK |cYEL YEL | +-------------+------------- / ``` -------------------------------- ### Ditaa ASCII Diagram with Data Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst An example of a Ditaa diagram using ASCII art, illustrating a data structure. This snippet shows a 'Data Base' connected to a 'Version' component, with specific formatting for colors and types. ```ditaa /--------\ +-------+ |cAAA +---+Version| | Data | | V3 | | Base | |cRED{d}| | {s}| +-------+ \---+----/ ``` -------------------------------- ### Ditaa ASCII Diagram with Flow Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst A Ditaa diagram example demonstrating a simple flow or connection between elements using ASCII art. This snippet shows a text element leading to another text element via a connecting line. ```ditaa +---------------+ +----------+ | This was | | And it is| | created with +-----------+---------->+ great! | | asciiflow.com | | | | +---------------+ | +----------+ | | +-----------+ | | | | ``` -------------------------------- ### Build and Serve Documentation Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/developer.rst Uses tox to build the project documentation and the webdev package to serve the generated HTML files locally. ```sh tox -e doc sudo pip3 install webdev webdev .tox/doc/tmp/html ``` -------------------------------- ### Create Component Diagram with PlantUML Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Demonstrates how to define components, groups, nodes, and clouds to illustrate system architecture and dependencies. ```PlantUML package "Some Group" { HTTP - [First Component] [Another Component] } node "Other Groups" { FTP - [Second Component] [First Component] --> FTP } cloud { [Example 1] } database "MySql" { folder "This is my folder" { [Folder 3] } frame "Foo" { [Frame 4] } } [Another Component] --> [Example 1] [Example 1] --> [Folder 3] [Folder 3] --> [Frame 4] ``` -------------------------------- ### Render Diagram via CLI Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Demonstrates how to render a Graphviz diagram file using the Plantweb command line interface. ```bash plantweb mydotfile.dot plantweb --engine=graphviz unwrappeddotfile.dot ``` -------------------------------- ### Configure Sphinx for Plantweb Source: https://context7.com/carlos-jenkins/plantweb/llms.txt Enable the plantweb extension and define global rendering defaults within the Sphinx conf.py file. ```python extensions = ['plantweb.directive'] plantweb_defaults = { 'server': 'http://plantuml.com/plantuml/', 'format': 'svg', 'use_cache': True, 'cache_dir': '_build/.plantweb-cache' } ``` -------------------------------- ### Render Diagrams via CLI Source: https://context7.com/carlos-jenkins/plantweb/llms.txt Use the plantweb command-line tool to batch render diagram files. Supports specifying engines, formats, custom servers, and cache management. ```bash plantweb diagram.uml plantweb --engine plantuml --format svg *.uml plantweb --engine graphviz --format png architecture.dot workflow.dot plantweb --server http://localhost:8080/plantuml/ diagram.uml plantweb --no-cache diagram.uml plantweb --cache-dir /tmp/my-cache diagram.uml plantweb -vvv diagram.uml ``` -------------------------------- ### Model Object Relationships with PlantUML Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Illustrates how to define objects and their static relationships, such as inheritance, composition, and association. ```PlantUML object Object01 Object01 : name = "Dummy" Object01 : id = 123 object Object02 object Object03 object Object04 object Object05 object Object06 object Object07 object Object08 Object01 <|-- Object02 Object03 *-- Object04 Object05 o-- "4" Object06 Object07 .. Object08 : some labels ``` -------------------------------- ### POST /render Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Renders diagram content directly from a string input. ```APIDOC ## POST /render ### Description Render diagram content directly from a provided string using specified engines and formats. ### Method POST ### Endpoint plantweb.render.render ### Parameters #### Request Body - **content** (string) - Required - The diagram source code (e.g., PlantUML or Graphviz syntax). - **engine** (string) - Optional - The rendering engine to use (e.g., 'plantuml', 'graphviz'). - **format** (string) - Optional - The output format (e.g., 'svg', 'png'). - **cacheopts** (dict) - Optional - Configuration for caching behavior. ### Request Example { "content": "actor Foo1\nFoo1 -> Foo2 : Action", "engine": "plantuml", "format": "svg", "cacheopts": {"use_cache": false} } ### Response #### Success Response (200) - **output** (string) - The rendered diagram data. #### Response Example { "output": "..." } ``` -------------------------------- ### Create PlantUML Activity Diagrams Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Shows how to model workflows and processes using activity diagrams, including conditional logic and parallel execution (forks). ```PlantUML start :Hello world; :This is on defined on several **lines**; stop ``` ```PlantUML start if (condition A) then (yes) :Text 1; elseif (condition B) then (yes) :Text 2; stop elseif (condition C) then (yes) :Text 3; elseif (condition D) then (yes) :Text 4; else (nothing) :Text else; endif ``` ```PlantUML start if (multiprocessor?) then (yes) fork :Treatment 1; fork again ``` -------------------------------- ### POST /render_file Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Renders a diagram from a specified file path. ```APIDOC ## POST /render_file ### Description Reads a file containing diagram definitions and renders it into the desired format. ### Method POST ### Endpoint plantweb.render.render_file ### Parameters #### Request Body - **infile** (string) - Required - Path to the input file containing diagram source. - **renderopts** (dict) - Optional - Rendering options including engine and format. - **cacheopts** (dict) - Optional - Configuration for caching behavior. ### Request Example { "infile": "mygraph.dot", "renderopts": {"engine": "graphviz", "format": "png"}, "cacheopts": {"use_cache": false} } ### Response #### Success Response (200) - **outfile** (string) - Path or content of the generated output file. #### Response Example { "outfile": "mygraph.png" } ``` -------------------------------- ### Render Diagram from File with Plantweb Source: https://context7.com/carlos-jenkins/plantweb/llms.txt The `render_file` function simplifies rendering diagrams directly from source files. It can automatically determine the output filename and supports specifying rendering options like engine, format, and server through `renderopts`. Caching can also be configured via `cacheopts`. ```python from plantweb.render import render_file # Render a Graphviz DOT file to PNG outfile = render_file( 'architecture.dot', outfile='architecture.png', # None for auto-generated filename renderopts={ 'engine': 'graphviz', 'format': 'png', 'server': 'http://plantuml.com/plantuml/' }, cacheopts={ 'use_cache': True, 'cache_dir': '~/.cache/plantweb' } ) print(f'Rendered diagram saved to: {outfile}') # Auto-detect engine and format from file content outfile = render_file( 'sequence.uml', renderopts={ 'engine': None, # Auto-detect from @startXXX tag 'format': None # Use default format (svg) } ) ``` -------------------------------- ### Visualize Graph Clusters with Graphviz Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Demonstrates the use of subgraphs with the 'cluster' prefix to group nodes and edges into distinct layout regions. ```Graphviz digraph G { subgraph cluster_0 { style=filled; color=lightgrey; node [style=filled,color=white]; a0 -> a1 -> a2 -> a3; label = "process #1"; } subgraph cluster_1 { node [style=filled]; b0 -> b1 -> b2 -> b3; label = "process #2"; color=blue } start -> a0; start -> b0; a1 -> b3; b2 -> a3; a3 -> a0; a3 -> end; b3 -> end; start [shape=Mdiamond]; end [shape=Msquare]; } ``` -------------------------------- ### Configure Plantweb Directive Options Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst Demonstrates how to use Plantweb directives in reStructuredText with alt text, alignment, and target hyperlinks for diagrams. ```rst .. uml:: :alt: This is a nice UML diagram. Indeed. :align: left :target: #options actor Foo1 boundary Foo2 control Foo3 entity Foo4 database Foo5 Foo1 -> Foo2 : To boundary Foo1 -> Foo3 : To control Foo1 -> Foo4 : To entity Foo1 -> Foo5 : To database ``` -------------------------------- ### Create PlantUML Class Diagrams Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Demonstrates structural modeling using class diagrams, including class attributes, methods, grouping, and package organization. ```PlantUML class Foo1 { You can use several lines .. as you want and group == things together. __ You can have as many groups as you want -- End of class } class User { .. Simple Getter .. + getName() + getAddress() .. Some setter .. + setName() __ private data __ int age -- encrypted -- String password } ``` ```PlantUML package "Classic Collections" #DDDDDD { Object <|-- ArrayList } package net.sourceforge.plantuml { Object <|-- Demo1 Demo1 *- Demo2 } package foo6 <> { class Class6 } ``` -------------------------------- ### Run PlantUML Server with Docker Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst This shell command demonstrates how to pull the official PlantUML server Docker image and run it as a detached container, exposing port 8080. This is useful for guaranteed uptime, rendering confidential diagrams, or speeding up rendering. ```sh docker pull plantuml/plantuml-server docker run --detach --publish 8080:8080 plantuml/plantuml-server ``` -------------------------------- ### Define State Machine Diagram with PlantUML Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Shows how to model object states and transitions, including nested states and event triggers. ```PlantUML scale 350 width [*] --> NotShooting state NotShooting { [*] --> Idle Idle --> Configuring : EvConfig Configuring --> Idle : EvConfig } state Configuring { [*] --> NewValueSelection NewValueSelection --> NewValuePreview : EvNewValue NewValuePreview --> NewValueSelection : EvNewValueRejected NewValuePreview --> NewValueSelection : EvNewValueSaved state NewValuePreview { State1 -> State2 } } ``` -------------------------------- ### Run Test Suite and Coverage Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/developer.rst Executes the project test suite across multiple Python versions using tox and generates a coverage report. ```sh tox -e py27,py34 tox -e coverage ``` -------------------------------- ### Read Configuration Defaults with Plantweb Source: https://context7.com/carlos-jenkins/plantweb/llms.txt The `read_defaults` function manages configuration settings for Plantweb. It reads defaults from built-in values, user-specific configuration files (`.plantwebrc` in home or project root), and applies them. The `cached` parameter controls whether to refresh the configuration from providers. ```python from plantweb.defaults import read_defaults, DEFAULT_CONFIG # Get current configuration (cached by default) config = read_defaults() print(config) # { # 'engine': 'plantuml', # 'format': 'svg', # 'server': 'http://plantuml.com/plantuml/', # 'use_cache': True, # 'cache_dir': '~/.cache/plantweb' # } # Force refresh configuration from providers config = read_defaults(cached=False) # Create custom .plantwebrc in project root or home directory: # { ``` -------------------------------- ### Configure Plantweb Defaults with JSON Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst This JSON configuration allows users to override the default settings for Plantweb. It specifies parameters like the PlantUML server URL, cache directory, rendering engine, output format, and cache usage. ```json { "server": "http://mydomain.com/plantuml/", "cache_dir": "~/.cache/plantweb", "engine": "plantuml", "format": "svg", "use_cache": true } ``` -------------------------------- ### Plantweb Project License Information Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst This text block contains the Apache License 2.0, which governs the use of the Plantweb software. It outlines the terms under which the software can be used, distributed, and modified. ```text Copyright (C) 2016-2017 Carlos Jenkins Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. you may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` -------------------------------- ### Apply Responsive CSS for Diagrams Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/index.rst CSS snippet to ensure SVG and image elements scale correctly within responsive web layouts. ```css /* Responsive images */ object[type="image/svg+xml"], img { max-width: 100%; height: auto; } ``` -------------------------------- ### Render Diagram Content with Plantweb Python API Source: https://context7.com/carlos-jenkins/plantweb/llms.txt The `render` function is the primary method for rendering diagram content directly from a string. It supports PlantUML, Graphviz, and Ditaa, automatically detects the engine, handles caching, and allows specifying output format (SVG/PNG) and server. It returns the rendered image bytes, format, detected engine, and cache SHA. ```python from plantweb.render import render # Render a PlantUML sequence diagram content = """ @startuml actor User participant "Web Server" as Server database "Database" as DB User -> Server: HTTP Request Server -> DB: Query DB --> Server: Results Server --> User: HTTP Response @enduml """ output, format, engine, sha = render( content, engine='plantuml', # 'plantuml', 'graphviz', 'ditaa', or None for auto-detect format='svg', # 'svg' or 'png' (ditaa only supports 'png') server=None, # Custom PlantUML server URL, or None for default cacheopts={ 'use_cache': True, 'cache_dir': '~/.cache/plantweb' } ) # output: bytes of the rendered SVG/PNG image # format: 'svg' or 'png' # engine: 'plantuml', 'graphviz', or 'ditaa' # sha: SHA256 hash for cache identification with open('diagram.svg', 'wb') as f: f.write(output) ``` -------------------------------- ### PlantUML Finite State Machine Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Defines a finite state machine using PlantUML syntax. This is commonly used for modeling sequential logic or processes. It specifies states (nodes) and transitions (edges) with labels. ```plantuml digraph finite_state_machine { rankdir=LR; size="8,5" node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; node [shape = circle]; LR_0 -> LR_2 [ label = "SS(B)" ]; LR_0 -> LR_1 [ label = "SS(S)" ]; LR_1 -> LR_3 [ label = "S($end)" ]; LR_2 -> LR_6 [ label = "SS(b)" ]; LR_2 -> LR_5 [ label = "SS(a)" ]; LR_2 -> LR_4 [ label = "S(A)" ]; LR_5 -> LR_7 [ label = "S(b)" ]; LR_5 -> LR_5 [ label = "S(a)" ]; LR_6 -> LR_6 [ label = "S(b)" ]; LR_6 -> LR_5 [ label = "S(a)" ]; LR_7 -> LR_8 [ label = "S(b)" ]; LR_7 -> LR_5 [ label = "S(a)" ]; LR_8 -> LR_6 [ label = "S(b)" ]; LR_8 -> LR_5 [ label = "S(a)" ]; } ``` -------------------------------- ### Auto-detect Diagram Engine with Plantweb Source: https://context7.com/carlos-jenkins/plantweb/llms.txt The `determine_engine` function analyzes the provided diagram content to automatically identify the rendering engine (PlantUML, Graphviz, or Ditaa) based on the `@startXXX` directive. It returns the engine name as a string or `None` if the content is not recognized. ```python from plantweb.render import determine_engine # PlantUML detection content1 = "@startuml\nAlice -> Bob: Hello\n@enduml" engine = determine_engine(content1) # Returns 'plantuml' # Graphviz detection content2 = "@startdot\ndigraph G { A -> B }\n@enddot" engine = determine_engine(content2) # Returns 'graphviz' # Ditaa detection content3 = "@startditaa\n+---+ | A | +---+ @endditaa" engine = determine_engine(content3) # Returns 'ditaa' # Unknown content content4 = "digraph G { A -> B }" engine = determine_engine(content4) # Returns None ``` -------------------------------- ### Low-level Cached Rendering with Plantweb Source: https://context7.com/carlos-jenkins/plantweb/llms.txt The `render_cached` function provides low-level access to Plantweb's caching mechanism. It checks for existing cached results before rendering via the PlantUML server and storing the output. This function is suitable for direct integration with custom caching logic and returns the rendered output and a SHA hash for cache identification. ```python from plantweb.render import render_cached content = """ @startditaa +--------+ +-------+ +-------+ | +---+ ditaa +--> | | | Text | +-------+ |diagram| |Document| |!magic!| | | +---+----+ +-------+ @endditaa """ output, sha = render_cached( server='http://plantuml.com/plantuml/', format='png', # ditaa only supports PNG content=content, use_cache=True, cache_dir='~/.cache/plantweb' ) # sha can be used to identify the cached file: ~/.cache/plantweb/{sha}.png print(f'Diagram hash: {sha}') ``` -------------------------------- ### Embed Diagrams in Sphinx Source: https://context7.com/carlos-jenkins/plantweb/llms.txt Use reStructuredText directives to embed PlantUML, Graphviz, and Ditaa diagrams directly into Sphinx documentation. Diagrams are rendered automatically during the build process. ```rst .. uml:: @startuml actor User participant "Auth Service" as Auth @enduml .. graph:: digraph G { Client -> LoadBalancer; } .. diagram:: +--------+ +-------+ | Source | | Build | +--------+ +-------+ ``` -------------------------------- ### PlantUML Graph Definition Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Defines a directed graph structure using PlantUML syntax. This is useful for visualizing data structures or relationships between nodes. It specifies node shapes, labels, and the connections between them. ```plantuml digraph g { graph [ rankdir = "LR" ]; node [ fontsize = "16" shape = "ellipse" ]; edge []; "node0" [ label = " 0x10ba8| " shape = "record" ]; "node1" [ label = " 0xf7fc4380| | |-1" shape = "record" ]; "node2" [ label = " 0xf7fc44b8| | |2" shape = "record" ]; "node3" [ label = " 3.43322790286038071e-06|44.79998779296875|0" shape = "record" ]; "node4" [ label = " 0xf7fc4380| | |2" shape = "record" ]; "node5" [ label = " (nil)| | |-1" shape = "record" ]; "node6" [ label = " 0xf7fc4380| | |1" shape = "record" ]; "node7" [ label = " 0xf7fc4380| | |2" shape = "record" ]; "node8" [ label = " (nil)| | |-1" shape = "record" ]; "node9" [ label = " (nil)| | |-1" shape = "record" ]; "node10" [ label = " (nil)| | |-1" shape = "record" ]; "node11" [ label = " (nil)| | |-1" shape = "record" ]; "node12" [ label = " 0xf7fc43e0| | |1" shape = "record" ]; "node0":f0 -> "node1":f0 [id = 0]; "node0":f1 -> "node2":f0 [id = 1]; "node1":f0 -> "node3":f0 [id = 2]; "node1":f1 -> "node4":f0 [id = 3]; "node1":f2 -> "node5":f0 [id = 4]; "node4":f0 -> "node3":f0 [id = 5]; "node4":f1 -> "node6":f0 [id = 6]; "node4":f2 -> "node10":f0 [id = 7]; "node6":f0 -> "node3":f0 [id = 8]; "node6":f1 -> "node7":f0 [id = 9]; "node6":f2 -> "node9":f0 [id = 10]; "node7":f0 -> "node3":f0 [id = 11]; "node7":f1 -> "node1":f0 [id = 12]; "node7":f2 -> "node8":f0 [id = 13]; "node10":f1 -> "node11":f0 [id = 14]; "node10":f2 -> "node12":f0 [id = 15]; "node11":f2 -> "node1":f0 [id = 16]; } ``` -------------------------------- ### Ditaa ASCII Diagram Source: https://github.com/carlos-jenkins/plantweb/blob/master/doc/examples.rst Represents a Ditaa diagram using ASCII characters. Ditaa is a tool that converts ASCII art diagrams into graphical representations. This snippet shows a simple text document connected to a Ditaa diagram. ```ditaa +--------+ +-------+ +-------+ | +---+ ditaa +--> | | | Text | +-------+ |diagram| |Document| |!magic!| | | | {d}| | | | | +---+----+ +-------+ +-------+ : ^ | Lots of work | +-------------------------+ ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.