bugfix: record email-like links as page links

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.
master
Joey Hess 2010-06-23 14:05:57 -04:00
parent 6e67219eff
commit 82789e39aa
1 changed files with 5 additions and 3 deletions

View File

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