X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/886890b82d727385f5bb167ef7684288e98a5218..c037714b77535c849c8d8ef4807af2b59737a5c5:/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; }