aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-02-11 23:04:19 -0500
committerJoey Hess <joey@kodama.kitenet.net>2008-02-11 23:04:19 -0500
commit1de1fb15a0a641fcdc78f242af20f5711ad08f20 (patch)
treecc213489ade6a1c7ca878c9647a6e3811b1ae064
parent4763514861457c295cadb7dbc7c0697ce682004f (diff)
downloadikiwiki-1de1fb15a0a641fcdc78f242af20f5711ad08f20.tar
ikiwiki-1de1fb15a0a641fcdc78f242af20f5711ad08f20.tar.gz
* camelcase: Convert to use new linkify and scan hooks rather than the old
hack.
-rw-r--r--IkiWiki/Plugin/camelcase.pm53
-rw-r--r--debian/changelog2
-rw-r--r--po/ikiwiki.pot2
3 files changed, 37 insertions, 20 deletions
diff --git a/IkiWiki/Plugin/camelcase.pm b/IkiWiki/Plugin/camelcase.pm
index 845a516ee..0739bb01a 100644
--- a/IkiWiki/Plugin/camelcase.pm
+++ b/IkiWiki/Plugin/camelcase.pm
@@ -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
diff --git a/debian/changelog b/debian/changelog
index cf09ff9cb..881c451a7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index 8c5876743..011ed3e98 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -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"