From 66ada76693b3f801f3a7dce4b450095a9a1dbe37 Mon Sep 17 00:00:00 2001 From: joey Date: Thu, 9 Aug 2007 06:34:20 +0000 Subject: [PATCH] web commit by PaulWise: add headinganchors plugin --- doc/plugins/contrib/headinganchors.mdwn | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/plugins/contrib/headinganchors.mdwn 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/(