Add path and path_natural sort orders
These correspond to title and title_natural, but compare the entire
path: a < a/b < a/z < ab < b.
(cherry picked from commit 903a5a314f
)
master
parent
5333c113d6
commit
ea313b8133
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/perl
|
||||
use warnings;
|
||||
use strict;
|
||||
use Test::More tests => 25;
|
||||
|
||||
BEGIN { use_ok("IkiWiki"); }
|
||||
|
||||
%config=IkiWiki::defaultconfig();
|
||||
$config{srcdir}=$config{destdir}="/dev/null";
|
||||
IkiWiki::checkconfig();
|
||||
|
||||
sub test {
|
||||
my ($before, $after) = @_;
|
||||
|
||||
$IkiWiki::SortSpec::a = $before;
|
||||
$IkiWiki::SortSpec::b = $after;
|
||||
my $r = IkiWiki::SortSpec::cmp_path();
|
||||
|
||||
if ($before eq $after) {
|
||||
is($r, 0);
|
||||
}
|
||||
else {
|
||||
is($r, -1);
|
||||
}
|
||||
|
||||
$IkiWiki::SortSpec::a = $after;
|
||||
$IkiWiki::SortSpec::b = $before;
|
||||
$r = IkiWiki::SortSpec::cmp_path();
|
||||
|
||||
if ($before eq $after) {
|
||||
is($r, 0);
|
||||
}
|
||||
else {
|
||||
is($r, 1);
|
||||
}
|
||||
|
||||
is_deeply([IkiWiki::SortSpec::sort_pages(\&IkiWiki::SortSpec::cmp_path, $before, $after)],
|
||||
[$before, $after]);
|
||||
is_deeply([IkiWiki::SortSpec::sort_pages(\&IkiWiki::SortSpec::cmp_path, $after, $before)],
|
||||
[$before, $after]);
|
||||
}
|
||||
|
||||
test("a/b/c", "a/b/c");
|
||||
test("a/b", "a/c");
|
||||
test("a/z", "z/a");
|
||||
test("a", "a/b");
|
||||
test("a", "a/b");
|
||||
test("a/z", "ab");
|
|
@ -12,7 +12,7 @@ IkiWiki::checkconfig();
|
|||
{
|
||||
package IkiWiki::SortSpec;
|
||||
|
||||
sub cmp_path { $a cmp $b }
|
||||
sub cmp_raw_path { $a cmp $b }
|
||||
}
|
||||
|
||||
%pagesources=(
|
||||
|
@ -53,7 +53,7 @@ is_deeply([pagespec_match_list("foo", "post/*", sort => "title", num => 50, reve
|
|||
is_deeply([pagespec_match_list("foo", "post/*", sort => "title",
|
||||
filter => sub { $_[0] =~ /3/}) ],
|
||||
["post/1", "post/2"]);
|
||||
is_deeply([pagespec_match_list("foo", "*", sort => "path", num => 2)],
|
||||
is_deeply([pagespec_match_list("foo", "*", sort => "raw_path", num => 2)],
|
||||
["bar", "foo"]);
|
||||
is_deeply([pagespec_match_list("foo", "foo* or bar*",
|
||||
sort => "-age title")], # oldest first, break ties by title
|
||||
|
|
Loading…
Reference in New Issue