diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-02-11 23:04:19 -0500 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-02-11 23:04:19 -0500 |
commit | 1de1fb15a0a641fcdc78f242af20f5711ad08f20 (patch) | |
tree | cc213489ade6a1c7ca878c9647a6e3811b1ae064 | |
parent | 4763514861457c295cadb7dbc7c0697ce682004f (diff) |
* camelcase: Convert to use new linkify and scan hooks rather than the old
hack.
-rw-r--r-- | IkiWiki/Plugin/camelcase.pm | 53 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | po/ikiwiki.pot | 2 |
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" |