X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/6fc66f83deba6df8abdf4bc117f8da7efbd7cbc1..b62270dfdddac257a295d80c1a0b2d9786f9a94e:/IkiWiki/Plugin/smiley.pm?ds=inline

diff --git a/IkiWiki/Plugin/smiley.pm b/IkiWiki/Plugin/smiley.pm
index 45d00abea..932c2c4fe 100644
--- a/IkiWiki/Plugin/smiley.pm
+++ b/IkiWiki/Plugin/smiley.pm
@@ -3,27 +3,28 @@ package IkiWiki::Plugin::smiley;
 
 use warnings;
 use strict;
-use IkiWiki;
+use IkiWiki 2.00;
 
 my %smileys;
 my $smiley_regexp;
 
 sub import { #{{{
-	hook(type => "checkconfig", id => "smiley", call => \&setup);
+	add_underlay("smiley");
+	hook(type => "filter", id => "smiley", call => \&filter);
 } # }}}
 
-sub setup () { #{{{
+sub build_regexp () { #{{{
 	my $list=readfile(srcfile("smileys.mdwn"));
 	while ($list =~ m/^\s*\*\s+\\([^\s]+)\s+\[\[([^]]+)\]\]/mg) {
 		$smileys{$1}=$2;
 	}
 	
 	if (! %smileys) {
-		debug(gettext("failed to parse any smileys, disabling plugin"));
+		debug(gettext("failed to parse any smileys"));
+		$smiley_regexp='';
 		return;
 	}
 	
-	hook(type => "filter", id => "smiley", call => \&filter);
 	# sort and reverse so that substrings come after longer strings
 	# that contain them, in most cases.
 	$smiley_regexp='('.join('|', map { quotemeta }
@@ -34,9 +35,10 @@ sub setup () { #{{{
 sub filter (@) { #{{{
 	my %params=@_;
 	
+	build_regexp() unless defined $smiley_regexp;
 	$params{content} =~ s{(?:^|(?<=\s))(\\?)$smiley_regexp(?:(?=\s)|$)}{
-		$1 ? $2 : htmllink($params{page}, $params{page}, $smileys{$2}, 0, 0, $2)
-	}egs;
+		$1 ? $2 : htmllink($params{page}, $params{destpage}, $smileys{$2}, linktext => $2)
+	}egs if length $smiley_regexp;
 
 	return $params{content};
 } # }}}