@@ -5528,23 +5528,30 @@ sub fill_project_list_info {
55285528
55295529sub sort_projects_list {
55305530 my ($projlist , $order ) = @_ ;
5531- my @projects ;
55325531
5533- my %order_info = (
5534- project => { key => ' path' , type => ' str' },
5535- descr => { key => ' descr_long' , type => ' str' },
5536- owner => { key => ' owner' , type => ' str' },
5537- age => { key => ' age' , type => ' num' }
5538- );
5539- my $oi = $order_info {$order };
5540- return @$projlist unless defined $oi ;
5541- if ($oi -> {' type' } eq ' str' ) {
5542- @projects = sort {$a -> {$oi -> {' key' }} cmp $b -> {$oi -> {' key' }}} @$projlist ;
5543- } else {
5544- @projects = sort {$a -> {$oi -> {' key' }} <=> $b -> {$oi -> {' key' }}} @$projlist ;
5532+ sub order_str {
5533+ my $key = shift ;
5534+ return sub { $a -> {$key } cmp $b -> {$key } };
55455535 }
55465536
5547- return @projects ;
5537+ sub order_num_then_undef {
5538+ my $key = shift ;
5539+ return sub {
5540+ defined $a -> {$key } ?
5541+ (defined $b -> {$key } ? $a -> {$key } <=> $b -> {$key } : -1) :
5542+ (defined $b -> {$key } ? 1 : 0)
5543+ };
5544+ }
5545+
5546+ my %orderings = (
5547+ project => order_str(' path' ),
5548+ descr => order_str(' descr_long' ),
5549+ owner => order_str(' owner' ),
5550+ age => order_num_then_undef(' age' ),
5551+ );
5552+
5553+ my $ordering = $orderings {$order };
5554+ return defined $ordering ? sort $ordering @$projlist : @$projlist ;
55485555}
55495556
55505557# returns a hash of categories, containing the list of project
0 commit comments