X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/886890b82d727385f5bb167ef7684288e98a5218..537579315af13e2408af585af15bd5bc0b209853:/IkiWiki/Plugin/headinganchors.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/headinganchors.pm b/IkiWiki/Plugin/headinganchors.pm
index 80b39ec05..ece6f4eac 100644
--- a/IkiWiki/Plugin/headinganchors.pm
+++ b/IkiWiki/Plugin/headinganchors.pm
@@ -4,19 +4,32 @@ package IkiWiki::Plugin::headinganchors;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
+use URI::Escape;
 
 sub import {
+	hook(type => "getsetup", id => "headinganchors", call => \&getsetup);
 	hook(type => "sanitize", id => "headinganchors", call => \&headinganchors);
 }
 
+sub getsetup () {
+	return
+		plugin => {
+			safe => 1,
+			rebuild => undef,
+			section => "widget",
+		},
+}
+
 sub text_to_anchor {
 	my $str = shift;
 	$str =~ s/^\s+//;
 	$str =~ s/\s+$//;
-	$str = lc($str);
-	$str =~ s/[&\?"\'\.,\(\)!]//mig;
-	$str =~ s/[^a-z]/_/mig;
+	$str =~ s/\s/_/g;
+	$str =~ s/"//g;
+	$str =~ s/^[^a-zA-Z]/z-/; # must start with an alphabetical character
+	$str = uri_escape_utf8($str);
+	$str =~ s/%/./g;
 	return $str;
 }