Skip to content

Instantly share code, notes, and snippets.

@silky
Forked from sordina/data.sh
Last active August 29, 2015 14:18
Show Gist options
  • Save silky/c0ae3da97fbdeab64836 to your computer and use it in GitHub Desktop.
Save silky/c0ae3da97fbdeab64836 to your computer and use it in GitHub Desktop.
#!/bin/bash
echo 'digraph {'
data="$(grep '^data' Prototype.hs | sed 's/data //; s/ .*//')"
for i in $data
do
echo "$i;"
targets="$(grep "data $i .*=" Prototype.hs -A 6 \
| sed '/^$/,$d' \
| grep '::' \
| sed 's/.*:: //; s/Maybe //; s/J.Value//; s/String//; s/ .*//')"
for j in $targets
do
echo "$i -> $j;"
done
done
types="$(grep '^type' Prototype.hs | grep -v '^type Lookup' | sed 's/type //; s/ .*//')"
for i in $types
do
echo "$i;"
targets="$(grep "type $i .*=" Prototype.hs \
| sed 's/^.*= //' \
| sed 's/[[:<:]]M.Map[[:>:]]/ /g' \
| sed 's/[[:<:]]J.Value[[:>:]]/ /g' \
| sed 's/[[:<:]]String[[:>:]]/ /g' \
| sed 's/[[:<:]]Int[[:>:]]/ /g' \
| sed 's/[[:<:]]Lookup[[:>:]]/ /g')"
for j in $targets
do
echo "$i -> $j;"
done
done
echo '}'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment