X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=contrib%2Fdump-asy.pl;h=9bb2db3aa4641385d2f6c7ba05fe8bbe5d5d1924;hb=a4b07b2c5e689de97c4290c3993694c857ccb40e;hp=47239f2d41e5ef274c014005c8a76fec373fe362;hpb=e025f3b9e63c6e737e848bc824f7bcdaef66dd58;p=i3%2Fi3 diff --git a/contrib/dump-asy.pl b/contrib/dump-asy.pl index 47239f2d..9bb2db3a 100755 --- a/contrib/dump-asy.pl +++ b/contrib/dump-asy.pl @@ -13,7 +13,14 @@ use warnings; use Data::Dumper; use AnyEvent::I3; use File::Temp; +use File::Basename; use v5.10; +use IPC::Cmd qw[can_run]; + +# prerequisites check so we can be specific about failures caused +# by not having these tools in the path +can_run('asy') or die 'Please install asymptote'; +can_run('gv') or die 'Please install gv'; my $i3 = i3(); @@ -30,15 +37,17 @@ sub dump_node { my $o = ($n->{orientation} eq 'none' ? "u" : ($n->{orientation} eq 'horizontal' ? "h" : "v")); my $w = (defined($n->{window}) ? $n->{window} : "N"); - my $na = $n->{name}; + my $na = ($n->{name} or "[Empty]"); $na =~ s/#/\\#/g; + $na =~ s/\$/\\\$/g; + $na =~ s/&/\\&/g; $na =~ s/_/\\_/g; $na =~ s/~/\\textasciitilde{}/g; my $type = 'leaf'; if (!defined($n->{window})) { - $type = $n->{orientation} . '-split'; + $type = $n->{layout}; } - my $name = qq|\\"$na\\" ($type)|; + my $name = qq|``$na'' ($type)|; print $tmp "TreeNode n" . $n->{id} . " = makeNode("; @@ -73,4 +82,5 @@ say $tmp "draw(n" . $root->{id} . ", (0, 0));"; close($tmp); my $rep = "$tmp"; $rep =~ s/asy$/eps/; -system("cd /tmp && asy $tmp && gv --scale=-1000 --noresize --widgetless $rep && rm $rep"); +my $tmp_dir = dirname($rep); +system("cd $tmp_dir && asy $tmp && gv --scale=-1000 --noresize --widgetless $rep && rm $rep");