* camelcase: Convert to use new linkify and scan hooks rather than the old
authorJoey Hess <joey@kodama.kitenet.net>
Tue, 12 Feb 2008 04:04:19 +0000 (23:04 -0500)
committerJoey Hess <joey@kodama.kitenet.net>
Tue, 12 Feb 2008 04:04:19 +0000 (23:04 -0500)
  hack.

IkiWiki/Plugin/camelcase.pm
debian/changelog
po/ikiwiki.pot

index 845a516ee5e0d02d4080e08fab386d009db31c52..0739bb01ae3c2d0498c58fa428451afb208fcfdf 100644 (file)
@@ -6,32 +6,47 @@ use warnings;
 use strict;
 use IkiWiki 2.00;
 
+# This regexp is based on the one in Text::WikiFormat.
+my $link_regexp=qr{
+       (?<![^A-Za-z0-9\s])     # try to avoid expanding non-links with a
+                               # zero width negative lookbehind for
+                               # characters that suggest it's not a link
+       \b                      # word boundry
+       (
+               (?:
+                       [A-Z]           # Uppercase start
+                       [a-z0-9]        # followed by lowercase
+                       \w*             # and rest of word
+               )
+               {2,}                    # repeated twice
+       )
+}x;
+
 sub import { #{{{
-       hook(type => "filter", id => "camelcase", call => \&filter);
+       hook(type => "linkify", id => "camelcase", call => \&linkify);
+       hook(type => "scan", id => "camelcase", call => \&scan);
 } # }}}
 
-sub filter (@) { #{{{
+sub linkify (@) { #{{{
        my %params=@_;
+       my $page=$params{page};
+       my $destpage=$params{destpage};
 
-       # Make CamelCase links work by promoting them to fullfledged
-       # WikiLinks. This regexp is based on the one in Text::WikiFormat.
-       $params{content}=~s{
-               (?<![^A-Za-z0-9\s])     # try to avoid expanding non-links
-                                       # with a zero width negative
-                                       # lookbehind for characters that
-                                       # suggest it's not a link
-               \b                      # word boundry
-               (
-                       (?:
-                               [A-Z]           # Uppercase start
-                               [a-z0-9]        # followed by lowercase
-                               \w*             # and rest of word
-                       )
-                       {2,}                    # repeated twice
-               )
-       }{[[$1]]}gx;
+       $params{content}=~s{$link_regexp}{
+               htmllink($page, $destpage, IkiWiki::linkpage($1))
+       }eg;
 
        return $params{content};
 } #}}}
 
+sub scan (@) { #{{{
+        my %params=@_;
+        my $page=$params{page};
+        my $content=$params{content};
+
+       while ($content =~ /$link_regexp/g) {
+               push @{$links{$page}}, IkiWiki::linkpage($1);
+       }
+}
+
 1
index cf09ff9cb49cc4c83f9ec2f15a6bf9ca67e1b22f..881c451a74a89ea3e7ccea8b2893425d7eaa98f6 100644 (file)
@@ -18,6 +18,8 @@ ikiwiki (2.40) UNRELEASED; urgency=low
     custom, first-class types of wikilinks.
   * Move standard wikilink implementation to a new wikilink plugin, which
     will of course be enabled by default.
+  * camelcase: Convert to use new linkify and scan hooks rather than the old
+    hack.
 
  -- Josh Triplett <josh@freedesktop.org>  Sun, 10 Feb 2008 13:18:58 -0800
 
index 8c5876743ecbebb1ec2e5e23e83543fa554443bb..011ed3e986cd3fcb69e1b852fafe82dab914318a 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-11 22:46-0500\n"
+"POT-Creation-Date: 2008-02-11 23:03-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"