diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2010-04-12 12:41:32 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2010-04-12 12:41:32 -0400 |
commit | d50bd08439d5df17855b62f7c4d658027f93792d (patch) | |
tree | dda586c8949aa58057b0e86dae8d8e4ec0ee3b4a | |
parent | 0bfc364a7df124509855b8ed0b1b33ab5bc9ebbb (diff) | |
download | ikiwiki-d50bd08439d5df17855b62f7c4d658027f93792d.tar ikiwiki-d50bd08439d5df17855b62f7c4d658027f93792d.tar.gz |
refactor sortspec translation
-rw-r--r-- | IkiWiki.pm | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 74d452c50..1730e476a 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2102,6 +2102,8 @@ sub pagespec_match_list ($$;@) { my $sub=pagespec_translate($pagespec); error "syntax error in pagespec \"$pagespec\"" if ! defined $sub; + my $sort=sortspec_translate($params{sort}, $params{reverse}) + if defined $params{sort}; my @candidates; if (exists $params{list}) { @@ -2115,21 +2117,18 @@ sub pagespec_match_list ($$;@) { : keys %pagesources; } + # clear params, remainder is passed to pagespec + $depends{$page}{$pagespec} |= ($params{deptype} || $DEPEND_CONTENT); my $num=$params{num}; - my $sort=$params{sort}; - my $reverse=$params{reverse}; + delete @params{qw{num deptype reverse sort filter list}}; + # when only the top matches will be returned, it's efficient to # sort before matching to pagespec, if (defined $num && defined $sort) { @candidates=IkiWiki::SortSpec::sort_pages( - $sort, $reverse, @candidates); + $sort, @candidates); } - $depends{$page}{$pagespec} |= ($params{deptype} || $DEPEND_CONTENT); - - # clear params, remainder is passed to pagespec - delete @params{qw{num deptype reverse sort filter list}}; - my @matches; my $firstfail; my $count=0; @@ -2155,7 +2154,7 @@ sub pagespec_match_list ($$;@) { # sort after matching if (! defined $num && defined $sort) { return IkiWiki::SortSpec::sort_pages( - $sort, $reverse, @matches); + $sort, @matches); } else { return @matches; @@ -2452,7 +2451,7 @@ package IkiWiki::SortSpec; # This is in the SortSpec namespace so that the $a and $b that sort() uses # are easily available in this namespace, for cmp functions to use them. sub sort_pages { - my $f=IkiWiki::sortspec_translate(shift, shift); + my $f=shift; sort $f @_ } |