X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/e3c6b9bb9d6cef040f9c3f8a86337cf340966806..14a9e704c1f11510fe8b16e161de69646e869bd0:/IkiWiki/Plugin/graphviz.pm diff --git a/IkiWiki/Plugin/graphviz.pm b/IkiWiki/Plugin/graphviz.pm index ec48bad2c..23631da30 100644 --- a/IkiWiki/Plugin/graphviz.pm +++ b/IkiWiki/Plugin/graphviz.pm @@ -8,15 +8,24 @@ use strict; use IkiWiki 2.00; use IPC::Open2; -sub import { #{{{ +sub import { + hook(type => "getsetup", id => "graphviz", call => \&getsetup); hook(type => "preprocess", id => "graph", call => \&graph); -} # }}} +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => undef, + }, +} my %graphviz_programs = ( "dot" => 1, "neato" => 1, "fdp" => 1, "twopi" => 1, "circo" => 1 ); -sub render_graph (\%) { #{{{ +sub render_graph (\%) { my %params = %{(shift)}; my $src = "$params{type} g {\n"; @@ -29,10 +38,10 @@ sub render_graph (\%) { #{{{ # Use the sha1 of the graphviz code as part of its filename. eval q{use Digest::SHA1}; error($@) if $@; - my $dest=$params{destpage}."/graph-". + my $dest=$params{page}."/graph-". IkiWiki::possibly_foolish_untaint(Digest::SHA1::sha1_hex($src)). ".png"; - will_render($params{destpage}, $dest); + will_render($params{page}, $dest); if (! -e "$config{destdir}/$dest") { my $pid; @@ -55,7 +64,7 @@ sub render_graph (\%) { #{{{ waitpid $pid, 0; $SIG{PIPE}="DEFAULT"; - return "[[graph ".gettext("failed to run graphviz")."]]" if ($sigpipe); + error gettext("failed to run graphviz") if $sigpipe; if (! $params{preview}) { writefile($dest, $config{destdir}, $png, 1); @@ -75,16 +84,16 @@ sub render_graph (\%) { #{{{ else { return "\n"; } -} #}}} +} -sub graph (@) { #{{{ +sub graph (@) { my %params=@_; $params{src} = "" unless defined $params{src}; $params{type} = "digraph" unless defined $params{type}; $params{prog} = "dot" unless defined $params{prog}; - return "[[graph ".gettext("prog not a valid graphviz program")."]]" unless $graphviz_programs{$params{prog}}; + error gettext("prog not a valid graphviz program") unless $graphviz_programs{$params{prog}}; return render_graph(%params); -} # }}} +} 1