From: joey Date: Thu, 9 Aug 2007 06:34:20 +0000 (+0000) Subject: web commit by PaulWise: add headinganchors plugin X-Git-Tag: 2.6~200 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=66ada76693b3f801f3a7dce4b450095a9a1dbe37;p=ikiwiki.git web commit by PaulWise: add headinganchors plugin --- diff --git a/doc/plugins/contrib/headinganchors.mdwn b/doc/plugins/contrib/headinganchors.mdwn new file mode 100644 index 000000000..4d93714ca --- /dev/null +++ b/doc/plugins/contrib/headinganchors.mdwn @@ -0,0 +1,33 @@ +This is a simple plugin to add ids to all headings, based on their text. It works as a postprocessing filter, allowing it to work on mdwn, wiki, html, rst and any other format that produces html. The code is available here: + + #!/usr/bin/perl + # quick HTML heading id adder by Paul Wise + package IkiWiki::Plugin::headinganchors; + + use warnings; + use strict; + use IkiWiki 2.00; + + sub import { #{{{ + hook(type => "sanitize", id => "headinganchors", call => \&headinganchors); + } # }}} + + sub text_to_anchor { + my $str = shift; + $str =~ s/^\s+//; + $str =~ s/\s+$//; + $str = lc($str); + $str =~ s/[&\?"\'\.,\(\)!]//mig; + $str =~ s/[^a-z]/_/mig; + return $str; + } + + sub headinganchors (@) { #{{{ + my %params=@_; + my $content=$params{content}; + $content=~s{([^>]*)}{''.$2.''}gie; + #$content=~s/(