summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-26 21:54:44 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-26 21:54:44 +0000
commitd9c118dbf1753abcbf081f532aecfe8cb6ce7de7 (patch)
tree4760a558c0ab1f7cbd4d44454c3f36cd072fe78c
parent061afedb261f67731acac341811f4b086da2ab92 (diff)
* 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.
-rw-r--r--IkiWiki/CGI.pm2
-rw-r--r--IkiWiki/Plugin/camelcase.pm22
-rw-r--r--IkiWiki/Plugin/wikitext.pm11
-rw-r--r--IkiWiki/Render.pm25
-rw-r--r--debian/changelog10
-rw-r--r--doc/plugins/camelcase.mdwn7
-rw-r--r--doc/plugins/wikitext.mdwn13
7 files changed, 64 insertions, 26 deletions
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 759a49b7d..7360ca998 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -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", "");
diff --git a/IkiWiki/Plugin/camelcase.pm b/IkiWiki/Plugin/camelcase.pm
new file mode 100644
index 000000000..0934b27c2
--- /dev/null
+++ b/IkiWiki/Plugin/camelcase.pm
@@ -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
diff --git a/IkiWiki/Plugin/wikitext.pm b/IkiWiki/Plugin/wikitext.pm
index 310b86724..8b8cbe75e 100644
--- a/IkiWiki/Plugin/wikitext.pm
+++ b/IkiWiki/Plugin/wikitext.pm
@@ -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;
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 6d5ea9ee5..e5a1679f8 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -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)];
diff --git a/debian/changelog b/debian/changelog
index 69436fb41..aa139be64 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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.
diff --git a/doc/plugins/camelcase.mdwn b/doc/plugins/camelcase.mdwn
new file mode 100644
index 000000000..134460932
--- /dev/null
+++ b/doc/plugins/camelcase.mdwn
@@ -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
diff --git a/doc/plugins/wikitext.mdwn b/doc/plugins/wikitext.mdwn
index 5c5383fc5..1c2d72bb2 100644
--- a/doc/plugins/wikitext.mdwn
+++ b/doc/plugins/wikitext.mdwn
@@ -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