173 lines
8.6 KiB
Markdown
173 lines
8.6 KiB
Markdown
# GoAT: Go ASCII Tool
|
|
|
|
This is a Go implementation of [markdeep.mini.js]'s ASCII diagram
|
|
generation.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
$ go get github.com/bep/goat
|
|
$ goat my-cool-diagram.txt > my-cool-diagram.svg
|
|
```
|
|
|
|
## TODO
|
|
|
|
- Dashed lines signaled by `:` or `=`.
|
|
- Bold lines signaled by ???.
|
|
|
|
## Examples
|
|
|
|
Here are some SVGs and the ASCII input they were generated from:
|
|
|
|
### Trees
|
|
|
|

|
|
|
|
```
|
|
. . . .--- 1 .-- 1 / 1
|
|
/ \ | | .---+ .-+ +
|
|
/ \ .---+---. .--+--. | '--- 2 | '-- 2 / \ 2
|
|
+ + | | | | ---+ ---+ +
|
|
/ \ / \ .-+-. .-+-. .+. .+. | .--- 3 | .-- 3 \ / 3
|
|
/ \ / \ | | | | | | | | '---+ '-+ +
|
|
1 2 3 4 1 2 3 4 1 2 3 4 '--- 4 '-- 4 \ 4
|
|
```
|
|
|
|
### Overlaps
|
|
|
|

|
|
|
|
```
|
|
.-. .-. .-. .-. .-. .-.
|
|
| | | | | | | | | | | |
|
|
.---------. .--+---+--. .--+---+--. .--| |--. .--+ +--. .------|--.
|
|
| | | | | | | | | | | | | | | | | |
|
|
'---------' '--+---+--' '--+---+--' '--| |--' '--+ +--' '--|------'
|
|
| | | | | | | | | | | |
|
|
'-' '-' '-' '-' '-' '-'
|
|
```
|
|
|
|
### Line Decorations
|
|
|
|

|
|
|
|
```
|
|
________ o * * .--------------.
|
|
*---+--. | | o o | ^ \ / | .----------. |
|
|
| | '--* -+- | | v / \ / | | <------. | |
|
|
| '-----> .---(---' --->*<--- / .+->*<--o----' | | | | |
|
|
<--' ^ ^ | | | | | ^ \ | '--------' | |
|
|
\/ *-----' o |<----->| '-----' |__| v '------------' |
|
|
/\ *---------------'
|
|
```
|
|
|
|
### Line Ends
|
|
|
|

|
|
|
|
```
|
|
o--o *--o / / * o o o o o * * * * o o o o * * * * o o o o * * * *
|
|
o--* *--* v v ^ ^ | | | | | | | | \ \ \ \ \ \ \ \ / / / / / / / /
|
|
o--> *--> * o / / o * v ' o * v ' o * v \ o * v \ o * v / o * v /
|
|
o--- *---
|
|
^ ^ ^ ^ . . . . ^ ^ ^ ^ \ \ \ \ ^ ^ ^ ^ / / / /
|
|
| | * o \ \ * o | | | | | | | | \ \ \ \ \ \ \ \ / / / / / / / /
|
|
v v ^ ^ v v ^ ^ o * v ' o * v ' o * v \ o * v \ o * v / o * v /
|
|
* o | | * o \ \
|
|
|
|
<--o <--* <--> <--- ---o ---* ---> ---- *<-- o<-- -->o -->*
|
|
```
|
|
|
|
### Dot Grids
|
|
|
|

|
|
|
|
```
|
|
o o o o o * * * * * * * o o * o o o * * * o o o · * · · · · · ·
|
|
o o o o o * * * * * o o o o * o o o o * * * * * o * * · * * · · · · · ·
|
|
o o o o o * * * * * o * o o o o o o o o * * * * * o o o o o · o · · o · · * * ·
|
|
o o o o o * * * * * o * o o o o o o o * * * * o * o o · · · · o · · * ·
|
|
o o o o o * * * * * * * * * o o o o * * * o * o · · · · · · · *
|
|
```
|
|
|
|
### Large Nodes
|
|
|
|

|
|
|
|
```
|
|
.---. .-. .-. .-. .-.
|
|
| A +----->| 1 +<---->| 2 |<----+ 4 +------------------. | 8 |
|
|
'---' '-' '+' '-' | '-'
|
|
| ^ | ^
|
|
v | v |
|
|
.-. .-+-. .-. .-+-. .-. .+. .---.
|
|
| 3 +---->| B |<----->| 5 +---->| C +---->| 6 +---->| 7 |<---->| D |
|
|
'-' '---' '-' '---' '-' '-' '---'
|
|
```
|
|
|
|
### Small Grids
|
|
|
|

|
|
|
|
```
|
|
___ ___ .---+---+---+---+---. .---+---+---+---. .---. .---.
|
|
___/ \___/ \ | | | | | | / \ / \ / \ / \ / | +---+ |
|
|
/ \___/ \___/ +---+---+---+---+---+ +---+---+---+---+ +---+ +---+
|
|
\___/ b \___/ \ | | | b | | | \ / \a/ \b/ \ / \ | +---+ |
|
|
/ a \___/ \___/ +---+---+---+---+---+ +---+---+---+---+ +---+ b +---+
|
|
\___/ \___/ \ | | a | | | | / \ / \ / \ / \ / | a +---+ |
|
|
\___/ \___/ '---+---+---+---+---' '---+---+---+---' '---' '---'
|
|
```
|
|
|
|
### Big Grids
|
|
|
|

|
|
|
|
```
|
|
.----. .----.
|
|
/ \ / \ .-----+-----+-----.
|
|
+ +----+ +----. | | | | .-----+-----+-----+-----+
|
|
\ / \ / \ | | | | / / / / /
|
|
+----+ B +----+ + +-----+-----+-----+ +-----+-----+-----+-----+
|
|
/ \ / \ / | | | | / / / / /
|
|
+ A +----+ +----+ | | B | | +-----+-----+-----+-----+
|
|
\ / \ / \ +-----+-----+-----+ / / A / B / /
|
|
'----+ +----+ + | | | | +-----+-----+-----+-----+
|
|
\ / \ / | A | | | / / / / /
|
|
'----' '----' '-----+-----+-----' '-----+-----+-----+-----+
|
|
```
|
|
|
|
### Complicated
|
|
|
|

|
|
|
|
```
|
|
+-------------------+ ^ .---.
|
|
| A Box |__.--.__ __.--> | .-. | |
|
|
| | '--' v | * |<--- | |
|
|
+-------------------+ '-' | |
|
|
Round *---(-. |
|
|
.-----------------. .-------. .----------. .-------. | | |
|
|
| Mixed Rounded | | | / Diagonals \ | | | | | |
|
|
| & Square Corners | '--. .--' / \ |---+---| '-)-' .--------.
|
|
'--+------------+-' .--. | '-------+--------' | | | | / Search /
|
|
| | | | '---. | '-------' | '-+------'
|
|
|<---------->| | | | v Interior | ^
|
|
' <---' '----' .-----------. ---. .--- v |
|
|
.------------------. Diag line | .-------. +---. \ / . |
|
|
| if (a > b) +---. .--->| | | | | Curved line \ / / \ |
|
|
| obj->fcn() | \ / | '-------' |<--' + / \ |
|
|
'------------------' '--' '--+--------' .--. .--. | .-. +Done?+-'
|
|
.---+-----. | ^ |\ | | /| .--+ | | \ /
|
|
| | | Join \|/ | | Curved | \| |/ | | \ | \ /
|
|
| | +----> o --o-- '-' Vertical '--' '--' '-- '--' + .---.
|
|
<--+---+-----' | /|\ | | 3 |
|
|
v not:line 'quotes' .-' '---'
|
|
.-. .---+--------. / A || B *bold* | ^
|
|
| | | Not a dot | <---+---<-- A dash--is not a line v |
|
|
'-' '---------+--' / Nor/is this. ---
|
|
```
|
|
|
|
More examples are available [here](examples).
|
|
|
|
[markdeep.mini.js]: http://casual-effects.com/markdeep/
|