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
--- /dev/null
+#!/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;
+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
* `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
--- /dev/null
+[[!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.