aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm13
-rw-r--r--IkiWiki/Plugin/trail.pm7
2 files changed, 16 insertions, 4 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index e5da04a3b..be3dfce39 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -2459,6 +2459,19 @@ sub pagespec_match ($$;@) {
return $sub->($page, @params);
}
+# e.g. @pages = sort_pages("title", \@pages, reverse => "yes")
+#
+# Not exported yet, but could be in future if it is generally useful.
+# Note that this signature is not the same as IkiWiki::SortSpec::sort_pages,
+# which is "more internal".
+sub sort_pages ($$;@) {
+ my $sort = shift;
+ my $list = shift;
+ my %params = @_;
+ $sort = sortspec_translate($sort, $params{reverse});
+ return IkiWiki::SortSpec::sort_pages($sort, @$list);
+}
+
sub pagespec_match_list ($$;@) {
my $page=shift;
my $pagespec=shift;
diff --git a/IkiWiki/Plugin/trail.pm b/IkiWiki/Plugin/trail.pm
index d5fb2b5d6..476db4dcb 100644
--- a/IkiWiki/Plugin/trail.pm
+++ b/IkiWiki/Plugin/trail.pm
@@ -319,10 +319,9 @@ sub prerender {
}
if (defined $pagestate{$trail}{trail}{sort}) {
- # re-sort
- @$members = pagespec_match_list($trail, 'internal(*)',
- list => $members,
- sort => $pagestate{$trail}{trail}{sort});
+ @$members = IkiWiki::sort_pages(
+ $pagestate{$trail}{trail}{sort},
+ $members);
}
if (IkiWiki::yesno $pagestate{$trail}{trail}{reverse}) {