* Noticed a bug in the wikitext markup plugin -- it made CamelCase links the
default throughout the wiki, not only on wikitext pages. Decided to call
this a feature, and split the camelcase support out into a separate plugin
that is independant of wikitext.
$form->field(name => "comments",
value => $comments, force => 1);
$form->tmpl_param("page_preview",
$form->field(name => "comments",
value => $comments, force => 1);
$form->tmpl_param("page_preview",
- htmlize($type, linkify($page, $page, $content)));
+ htmlize($type, linkify($page, $page, filter($page, $content))));
}
else {
$form->tmpl_param("page_preview", "");
}
else {
$form->tmpl_param("page_preview", "");
--- /dev/null
+#!/usr/bin/perl
+# CamelCase links
+package IkiWiki::Plugin::camelcase;
+
+use warnings;
+use strict;
+
+sub import { #{{{
+ IkiWiki::hook(type => "filter", id => "camelcase", call => \&filter);
+} # }}}
+
+sub filter (@) { #{{{
+ my %params=@_;
+
+ # Make CamelCase links work by promoting them to fullfledged
+ # WikiLinks. This regexp is based on the one in Text::WikiFormat.
+ $params{content}=~s#(?<![["/>=])\b((?:[A-Z][a-z0-9]\w*){2,})#[[$1]]#g;
+
+ return $params{content};
+} #}}}
+
+1
use Text::WikiFormat;
sub import { #{{{
use Text::WikiFormat;
sub import { #{{{
- IkiWiki::hook(type => "filter", id => "wiki", call => \&filter);
IkiWiki::hook(type => "htmlize", id => "wiki", call => \&htmlize);
} # }}}
IkiWiki::hook(type => "htmlize", id => "wiki", call => \&htmlize);
} # }}}
-sub filter (@) { #{{{
- my %params=@_;
-
- # Make CamelCase links work by promoting them to fullfledged
- # WikiLinks. This regexp is based on the one in Text::WikiFormat.
- $params{content}=~s#(?<![["/>=])\b((?:[A-Z][a-z0-9]\w*){2,})#[[$1]]#g;
-
- return $params{content};
-} #}}}
-
sub htmlize ($) { #{{{
my $content = shift;
sub htmlize ($) { #{{{
my $content = shift;
+sub filter ($$) {
+ my $page=shift;
+ my $content=shift;
+
+ if (exists $hooks{filter}) {
+ foreach my $id (keys %{$hooks{filter}}) {
+ $content=$hooks{filter}{$id}{call}->(
+ page => $page,
+ content => $content
+ );
+ }
+ }
+
+ return $content;
+}
+
sub render ($) { #{{{
my $file=shift;
sub render ($) { #{{{
my $file=shift;
my $page=pagename($file);
delete $depends{$page};
my $page=pagename($file);
delete $depends{$page};
- if (exists $hooks{filter}) {
- foreach my $id (keys %{$hooks{filter}}) {
- $content=$hooks{filter}{$id}{call}->(
- page => $page,
- content => $content
- );
- }
- }
+ $content=filter($page, $content);
$links{$page}=[findlinks($page, $content)];
$links{$page}=[findlinks($page, $content)];
+ikiwiki (1.10) UNRELEASED; urgency=low
+
+ * Run page through any relevant filters when generating a page preview.
+ * Noticed a bug in the wikitext markup plugin -- it made CamelCase links the
+ default throughout the wiki, not only on wikitext pages. Decided to call
+ this a feature, and split the camelcase support out into a separate plugin
+ that is independant of wikitext.
+
+ -- Joey Hess <joeyh@debian.org> Wed, 26 Jul 2006 17:44:25 -0400
+
ikiwiki (1.9) unstable; urgency=low
* Improve display of parentlinks and page title of toplevel index page.
ikiwiki (1.9) unstable; urgency=low
* Improve display of parentlinks and page title of toplevel index page.
--- /dev/null
+This plugin makes words in CamelCase be treated as [[WikiLinks]]. That is
+to say, any two or more words capitalised and mashed together are assumed
+to be the name of some other page on the wiki, and so become a link.
+
+This plugin is included in ikiwiki, but is not enabled by default.
+
+If this plugin is enabled, here is a link: SandBox
processed as wiki text.
Wiki formatting is very simple. An item wrapped in three single quotes is
processed as wiki text.
Wiki formatting is very simple. An item wrapped in three single quotes is
-strong. An item wrapped in two single quotes is emphasized. Any word with
-multiple CapitalLetters (e. g., StudlyCaps) will become a link (standard
-[[WikiLinks|WikiLink]] work too). Four or more
-hyphen characters at the start of a line create a horizontal line.
-Newlines turn into the appropriate tags. Headers are matching equals signs
-around the header text -- the more signs, the lesser the header.
+strong. An item wrapped in two single quotes is emphasized. Four or more
+hyphen characters at the start of a line create a horizontal line. Newlines
+turn into the appropriate tags. Headers are matching equals signs around
+the header text -- the more signs, the lesser the header.
+
+Links are standard [[WikiLinks|WikiLink]], although you can also enable
+[[CamelCase]] links.
Lists are indented text, by one tab or four spaces. In unordered lists,
where each item has its own bullet point, each item needs a leading
Lists are indented text, by one tab or four spaces. In unordered lists,
where each item has its own bullet point, each item needs a leading