X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/903213e63fd6c409046f66e73881aba33c3926de..f5c270b11dbfb2589df21388a07f55002e076d3c:/IkiWiki/Plugin/graphviz.pm?ds=inline diff --git a/IkiWiki/Plugin/graphviz.pm b/IkiWiki/Plugin/graphviz.pm index 999edd8ee..4ed8b89f1 100644 --- a/IkiWiki/Plugin/graphviz.pm +++ b/IkiWiki/Plugin/graphviz.pm @@ -5,27 +5,28 @@ package IkiWiki::Plugin::graphviz; use warnings; use strict; -use IkiWiki 2.00; +use IkiWiki 3.00; use IPC::Open2; -sub import { #{{{ +sub import { hook(type => "getsetup", id => "graphviz", call => \&getsetup); - hook(type => "preprocess", id => "graphviz", call => \&graph); -} # }}} + hook(type => "preprocess", id => "graph", call => \&graph); +} -sub getsetup () { #{{{ +sub getsetup () { return plugin => { safe => 1, rebuild => undef, + section => "widget", }, -} #}}} +} 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"; @@ -36,16 +37,16 @@ sub render_graph (\%) { #{{{ $src .= "}\n"; # Use the sha1 of the graphviz code as part of its filename. - eval q{use Digest::SHA1}; + eval q{use Digest::SHA}; error($@) if $@; my $dest=$params{page}."/graph-". - IkiWiki::possibly_foolish_untaint(Digest::SHA1::sha1_hex($src)). + IkiWiki::possibly_foolish_untaint(Digest::SHA::sha1_hex($src)). ".png"; will_render($params{page}, $dest); if (! -e "$config{destdir}/$dest") { my $pid; - my $sigpipe=0;; + my $sigpipe=0; $SIG{PIPE}=sub { $sigpipe=1 }; $pid=open2(*IN, *OUT, "$params{prog} -Tpng"); @@ -70,7 +71,8 @@ sub render_graph (\%) { #{{{ writefile($dest, $config{destdir}, $png, 1); } else { - # can't write the file, so embed it in a data uri + # in preview mode, embed the image in a data uri + # to avoid temp file clutter eval q{use MIME::Base64}; error($@) if $@; return "\n"; - } - else { - return "\n"; - } -} #}}} + return "\n"; +} -sub graph (@) { #{{{ +sub graph (@) { my %params=@_; $params{src} = "" unless defined $params{src}; $params{type} = "digraph" unless defined $params{type}; @@ -94,6 +91,6 @@ sub graph (@) { #{{{ error gettext("prog not a valid graphviz program") unless $graphviz_programs{$params{prog}}; return render_graph(%params); -} # }}} +} 1