From: Joey Hess Date: Tue, 21 Jun 2011 19:12:02 +0000 (-0400) Subject: move headinganchors out of contrib X-Git-Tag: 3.20110707~48 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/886890b82d727385f5bb167ef7684288e98a5218 move headinganchors out of contrib --- diff --git a/IkiWiki/Plugin/headinganchors.pm b/IkiWiki/Plugin/headinganchors.pm new file mode 100644 index 000000000..80b39ec05 --- /dev/null +++ b/IkiWiki/Plugin/headinganchors.pm @@ -0,0 +1,30 @@ +#!/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; + return $content; +} + +1 diff --git a/debian/changelog b/debian/changelog index cf6aff9b1..a516c0756 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,7 @@ ikiwiki (3.20110609) UNRELEASED; urgency=low (If you don't have javascript don't worry, I kept that working too.) (Sponsored by The TOVA Company.) * Add libtext-multimarkdown-perl to Suggests. Closes: #630705 + * headinganchors: Plugin by Paul Wise that adds ids to headings. -- Joey Hess Thu, 09 Jun 2011 10:06:44 -0400 diff --git a/doc/plugins/contrib/headinganchors.mdwn b/doc/plugins/contrib/headinganchors.mdwn deleted file mode 100644 index becbf89a5..000000000 --- a/doc/plugins/contrib/headinganchors.mdwn +++ /dev/null @@ -1,36 +0,0 @@ -[[!template id=plugin name=headinganchors author="[[PaulWise]]"]] - -This is a simple plugin to add ids (which will serve as [[anchor]]s) 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; - return $content; - } - - 1 diff --git a/doc/plugins/contrib/headinganchors/discussion.mdwn b/doc/plugins/contrib/headinganchors/discussion.mdwn deleted file mode 100644 index 151af8d92..000000000 --- a/doc/plugins/contrib/headinganchors/discussion.mdwn +++ /dev/null @@ -1,33 +0,0 @@ -Isn't this functionality a part of what [[plugins/toc]] needs and does? Then probably the [[plugins/toc]] plugin's code could be split into the part that implements the [[plugins/contrib/headinganchors]]'s functionality and the TOC generation itself. That will bring more order into the code and the set of available plugins. --Ivan Z. - ---- - -A patch to make it more like MediaWiki: - -
--- headinganchors.pm
-+++ headinganchors.pm
-@@ -5,6 +5,7 @@
- use warnings;
- use strict;
- use IkiWiki 2.00;
-+use URI::Escape;
- 
- sub import {
-         hook(type => "sanitize", id => "headinganchors", call => \&headinganchors);
-@@ -14,9 +15,11 @@
-         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;
- }
- 
- ---Changaco diff --git a/doc/plugins/headinganchors.mdwn b/doc/plugins/headinganchors.mdwn new file mode 100644 index 000000000..f087abdf9 --- /dev/null +++ b/doc/plugins/headinganchors.mdwn @@ -0,0 +1,7 @@ +[[!template id=plugin name=headinganchors author="[[PaulWise]]"]] +[[!tag type/html]] + +This is a simple plugin to add ids (which will serve as [[anchor]]s) to all +headings (h1, h2, etc), 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. diff --git a/doc/plugins/headinganchors/discussion.mdwn b/doc/plugins/headinganchors/discussion.mdwn new file mode 100644 index 000000000..151af8d92 --- /dev/null +++ b/doc/plugins/headinganchors/discussion.mdwn @@ -0,0 +1,33 @@ +Isn't this functionality a part of what [[plugins/toc]] needs and does? Then probably the [[plugins/toc]] plugin's code could be split into the part that implements the [[plugins/contrib/headinganchors]]'s functionality and the TOC generation itself. That will bring more order into the code and the set of available plugins. --Ivan Z. + +--- + +A patch to make it more like MediaWiki: + +
--- headinganchors.pm
++++ headinganchors.pm
+@@ -5,6 +5,7 @@
+ use warnings;
+ use strict;
+ use IkiWiki 2.00;
++use URI::Escape;
+ 
+ sub import {
+         hook(type => "sanitize", id => "headinganchors", call => \&headinganchors);
+@@ -14,9 +15,11 @@
+         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;
+ }
+ 
+ +--Changaco