Split out sortnaturally into a plugin

master
Simon McVittie 2010-04-03 13:48:30 +01:00
parent b86276ffed
commit a875ee8be7
5 changed files with 48 additions and 13 deletions

View File

@ -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

View File

@ -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;

8
debian/NEWS vendored
View File

@ -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

View File

@ -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

View File

@ -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.