1
1
mirror of https://github.com/wader/fq.git synced 2024-11-27 06:04:47 +03:00
fq/doc/formats_diagram.jq
Mattias Wadman 0863374f8c doc: Correct bencode spec URL
Also rename _tojq value_sep to object_sep and fix formats_diagram.jq to use tomd5
2022-06-13 18:49:34 +02:00

45 lines
1.2 KiB
Plaintext
Executable File

#!/usr/bin/env fq -rnf
def color:
tomd5 | [.[range(3)]] | map(band(.; 0x7f)+60 | toradix(16) | "0"[length:]+.) | join("");
def _formats_dot:
def _record($title; $fields):
[ "<"
, "<table bgcolor=\"paleturquoise\" border=\"0\" cellspacing=\"0\">"
, "<tr><td port=\"\($title)\"><font point-size=\"20\">\($title)</font></td></tr>"
, [$fields | flatten | map("<tr><td align=\"left\" bgcolor=\"lightgrey\" port=\"\(.)\">\(.)</td></tr>")]
, "</table>"
, ">"
] | flatten | join("");
( "# ... | dot -Tsvg -o formats.svg"
, "digraph formats {"
, " nodesep=0.2"
, " ranksep=1"
, " rankdir=TB"
, " node [penwidth=2 shape=\"none\" style=\"\"]"
, " edge [penwidth=2]"
, ( .[]
| . as $f
| .dependencies
| flatten?
| .[]
| " \"\($f.name)\":\(.):e -> \(.):n [color=\"#\($f.name | color)\"]"
)
, ( .[]
| .name as $name
| .groups[]?
| " \(.) -> \"\($name)\":\($name):n [color=\"#\(. | color)\"]"
)
, ( to_entries[]
| " \(.key) [color=\"paleturquoise\", label=\(_record(.key; (.value.dependencies // [])))]"
)
, ( [.[].groups[]?]
| unique[]
| " \(.) [shape=\"record\",style=\"rounded,filled\",fontsize=\"25\"color=\"palegreen\"]"
)
, "}"
);
formats | _formats_dot