* 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.
master
joey 2006-07-26 21:54:44 +00:00
parent 061afedb26
commit d9c118dbf1
7 changed files with 64 additions and 26 deletions

View File

@ -417,7 +417,7 @@ sub cgi_editpage ($$) { #{{{
$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", "");

View File

@ -0,0 +1,22 @@
#!/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

View File

@ -7,20 +7,9 @@ use strict;
use Text::WikiFormat;
sub import { #{{{
IkiWiki::hook(type => "filter", id => "wiki", call => \&filter);
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;

View File

@ -250,6 +250,22 @@ sub findlinks ($$) { #{{{
}
} #}}}
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;
@ -260,14 +276,7 @@ sub render ($) { #{{{
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)];

10
debian/changelog vendored
View File

@ -1,3 +1,13 @@
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.

View File

@ -0,0 +1,7 @@
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

View File

@ -4,12 +4,13 @@ installed, enable the plugin, then files with the extention `.wiki` will be
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