aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm11
-rw-r--r--IkiWiki/Plugin/sortnaturally.pm32
-rw-r--r--debian/NEWS8
-rw-r--r--doc/ikiwiki/pagespec/sorting.mdwn5
-rw-r--r--doc/plugins/sortnaturally.mdwn5
5 files changed, 48 insertions, 13 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index a89c14058..8f36f5818 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -2423,15 +2423,4 @@ sub cmp_title {
sub cmp_mtime { $IkiWiki::pagemtime{$_[1]} <=> $IkiWiki::pagemtime{$_[0]} }
sub cmp_age { $IkiWiki::pagectime{$_[1]} <=> $IkiWiki::pagectime{$_[0]} }
-sub check_cmp_title_natural {
- eval q{use Sort::Naturally};
- if ($@) {
- error(gettext("Sort::Naturally needed for title_natural sort"));
- }
-}
-sub cmp_title_natural {
- Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])),
- IkiWiki::pagetitle(IkiWiki::basename($_[1])))
-}
-
1
diff --git a/IkiWiki/Plugin/sortnaturally.pm b/IkiWiki/Plugin/sortnaturally.pm
new file mode 100644
index 000000000..0023f31f9
--- /dev/null
+++ b/IkiWiki/Plugin/sortnaturally.pm
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+# Sort::Naturally-powered title_natural sort order for IkiWiki
+package IkiWiki::Plugin::sortnaturally;
+
+use IkiWiki 3.00;
+no warnings;
+
+sub import {
+ hook(type => "getsetup", id => "sortnaturally", call => \&getsetup);
+}
+
+sub getsetup {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 1,
+ },
+}
+
+sub checkconfig () {
+ eval q{use Sort::Naturally};
+ error $@ if $@;
+}
+
+package IkiWiki::PageSpec;
+
+sub cmp_title_natural {
+ Sort::Naturally::ncmp(IkiWiki::pagetitle(IkiWiki::basename($_[0])),
+ IkiWiki::pagetitle(IkiWiki::basename($_[1])))
+}
+
+1;
diff --git a/debian/NEWS b/debian/NEWS
index 50332670f..614eb11f8 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,11 @@
+ikiwiki (3.20100320) UNRELEASED; urgency=low
+
+ The sort="title_natural" option on [[!inline]] etc. now requires the
+ new sortnaturally plugin. This is not enabled by default, because it requires
+ the Sort::Naturally module.
+
+ -- Simon McVittie <smcv@debian.org> Sat, 03 Apr 2010 13:46:08 +0100
+
ikiwiki (3.20091017) unstable; urgency=low
To take advantage of significant performance improvements, all
diff --git a/doc/ikiwiki/pagespec/sorting.mdwn b/doc/ikiwiki/pagespec/sorting.mdwn
index f27972d4e..ba995a521 100644
--- a/doc/ikiwiki/pagespec/sorting.mdwn
+++ b/doc/ikiwiki/pagespec/sorting.mdwn
@@ -6,9 +6,10 @@ orders can be specified.
* `age` - List pages from the most recently created to the oldest.
* `mtime` - List pages with the most recently modified first.
* `title` - Order by title (page name).
-* `title_natural` - Only available if [[!cpan Sort::Naturally]] is
- installed. Orders by title, but numbers in the title are treated
+[[!if test="enabled(sortnaturally)" then="""
+* `title_natural` - Orders by title, but numbers in the title are treated
as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
+"""]]
[[!if test="enabled(meta)" then="""
* `meta_title` - Order according to the `\[[!meta title="foo" sort="bar"]]`
or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
diff --git a/doc/plugins/sortnaturally.mdwn b/doc/plugins/sortnaturally.mdwn
new file mode 100644
index 000000000..91f373f6b
--- /dev/null
+++ b/doc/plugins/sortnaturally.mdwn
@@ -0,0 +1,5 @@
+[[!template id=plugin name=sortnaturally core=1 author="[[chrysn]], [[smcv]]"]]
+[[!tag type/meta]]
+
+This plugin provides the `title_natural` [[ikiwiki/pagespec/sorting]] order,
+which uses Sort::Naturally to sort numbered pages in a more natural order.