diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-08-09 06:34:20 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-08-09 06:34:20 +0000 |
commit | 66ada76693b3f801f3a7dce4b450095a9a1dbe37 (patch) | |
tree | 917a98a39144d26a4a2d563900a632ccc5c51050 | |
parent | c1f720522cc210bc00a5325ba324a937eb306b91 (diff) |
web commit by PaulWise: add headinganchors plugin
-rw-r--r-- | doc/plugins/contrib/headinganchors.mdwn | 33 |
1 files changed, 33 insertions, 0 deletions
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{<h([0-9])>([^>]*)</h([0-9])>}{'<h'.$1.' id="'.text_to_anchor($2).'">'.$2.'</h'.$3.'>'}gie; + #$content=~s/(<img(?:\s+(?:class|id|width|height)\s*="?\w+"?)*)\s+src=\s*"\/([^"]*)"/$1 src="$baseurl$2"/mig; + return $content; + } # }}} + + 1 |