bugfix: record email-like links as page links
authorJoey Hess <joey@kitenet.net>
Wed, 23 Jun 2010 18:05:57 +0000 (14:05 -0400)
committerJoey Hess <joey@kitenet.net>
Wed, 23 Jun 2010 18:05:57 +0000 (14:05 -0400)
This way, an email-like link will be a mailto until a matching page
is created, then it will link to the page. And removing the page will
convert it back to a mailto.

IkiWiki/Plugin/link.pm

index 87e06ca899b51868646346a77670835caa7deb07..f6c3573f75f5508dc810464162e9fb9a1ad8f527 100644 (file)
@@ -64,21 +64,23 @@ sub checkconfig () {
        }
 }
 
-sub is_externallink ($$;$) {
+sub is_externallink ($$;$$) {
        my $page = shift;
        my $url = shift;
        my $anchor = shift;
+       my $force = shift;
        
        if (defined $anchor) {
                $url.="#".$anchor;
        }
 
-       if ($url =~ /$email_regexp/) {
+       if (! $force && $url =~ /$email_regexp/) {
                # url looks like an email address, so we assume it
                # is supposed to be an external link if there is no
                # page with that name.
                return (! (bestlink($page, linkpage($url))))
        }
+
        return ($url =~ /$url_regexp/)
 }
 
@@ -138,7 +140,7 @@ sub scan (@) {
        my $content=$params{content};
 
        while ($content =~ /(?<!\\)$link_regexp/g) {
-               if (! is_externallink($page, $2, $3)) {
+               if (! is_externallink($page, $2, $3, 1)) {
                        add_link($page, linkpage($2));
                }
        }