ArthurSonzogni / Diagon

Interactive ASCII art diagram generators. :star2:
https://arthursonzogni.com/Diagon/
MIT License
1.47k stars 56 forks source link

Output structured data #61

Open nkh opened 1 year ago

nkh commented 1 year ago

Hi, I'm the author of https://github.com/nkh/P5-App-Asciio

A contributor ( THE contributor ;) ) uses Diagon and has been bugging me to try it, nice work, I was looking for something to replace PlantUml.

Then it hit me that we work on different parts of the documentation space which I would describe as:

.----------.               .------------.            .-----------------.
| raw data |-->transform-->| input data |-->Diagon-->| ASCII rendering |----.
'----------'               '------------'            '-----------------'    |
                    .-------------------------------------------------------'
                    |
                    v                                .---------------.
                 Asciio--------------------->Goat--->| SVG rendering |
                                                     '---------------'

The problem here is that the ASCII rendering from Diagon is just a block of codes and Asciio can only manipulate it as a block.

If Diagon was capable to output structured data describing what objects are placed were, then that input could be transformed in Asciio elements that can be manipulated before they are output as ASCII or passed to Goat/svgbob, ... to generate SVG.

So I'm seeing Diagon as some sort of Graphviz .

If you already have the layout information, could you generated a structured output?

ArthurSonzogni commented 1 year ago

Hi!

Sorry for the delay here. I did not see the question.


Diagon is a collection of "translator". Currently, it contains:

Are you talking of a particular one? Maybe GraphDAG or GraphPlanar?

From there, I am not sure what kind of structured data we could output. The node position and the edges paths?

nkh commented 1 year ago

Hi, I was thinking about any these:

Sequence Diagram GraphPlanar GraphDAG Flowchart

output in JSON or YAML would be good.

node/edges with UUID, start positions, size, text, ...

If possible the relationship between the nodes should be given, IE: if an edge is connected to a node. Asciio is interactive so when a node is moved, the edges are resized to keep the relationship.