]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/graphviz.pm
trail: Allow unescaped punctuation in pagenames
[git.ikiwiki.info.git] / IkiWiki / Plugin / graphviz.pm
index 0889bc9fcd6720741679dec990f2d4349e866029..479da6f7382c41e664297a3ef22e665fc4cd5812 100644 (file)
@@ -95,6 +95,14 @@ sub render_graph (\%) {
 sub graph (@) {
        my %params=@_;
 
+       if (exists $params{file}) {
+               if (! exists $pagesources{$params{file}}) {
+                       error gettext("cannot find file");
+               }
+               $params{src} = readfile(srcfile($params{file}));
+               add_depends($params{page}, $params{file});
+       }
+
        # Support wikilinks in the graph source.
        my $src=$params{src};
        $src="" unless defined $src;
@@ -112,7 +120,15 @@ sub graph (@) {
                $p->handler(start => sub {
                        my %attrs=%{shift()};
                        if (exists $attrs{href}) {
-                               $s.="\"$attrs{href}\"";
+                               if ($s=~/href\s*=\s*"$/) {
+                                       $s.=$attrs{href};
+                               }
+                               elsif ($s=~/href\s*=\s*$/) {
+                                       $s.="\"$attrs{href}\"";
+                               }
+                               else {
+                                       $s.="href=\"$attrs{href}\"";
+                               }
                        }
                        $nested++;
                }, "attr");
@@ -124,6 +140,7 @@ sub graph (@) {
                }, "text");
                $p->parse($src);
                $p->eof;
+               $s=~s/\[ href= \]//g; # handle self-links
                $params{src}=$s;
        }
        else {