From 1fd54309610497e58d3ab017024c12d0f829b875 Mon Sep 17 00:00:00 2001 From: pdbogen Date: Tue, 10 Mar 2009 12:55:39 +0000 Subject: [PATCH] Fix karma ranking. Also allow karmaclean to remove a specific karma entry. git-svn-id: https://www.cernu.us/~pdbogen/svn/destult2@86 088b83a4-0077-4247-935c-42ec02c2848b --- commands.yaml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/commands.yaml b/commands.yaml index b7548dd..30de8b5 100644 --- a/commands.yaml +++ b/commands.yaml @@ -1736,9 +1736,13 @@ KARMACLEAN: |- return; } } - for my $k( keys %{ $heap->{ "karma" } } ) { - if( $k =~ /[[:space:]]/ || $k =~ /^$/ ) { - delete $heap->{ "karma" }->{ $k }; + if( exists( $heap->{ "karma" }->{ $what } ) ) { + delete $heap->{ "karma" }->{ $what }; + } else { + for my $k( keys %{ $heap->{ "karma" } } ) { + if( $k =~ /[[:space:]]/ || $k =~ /^$/ ) { + delete $heap->{ "karma" }->{ $k }; + } } } $kernel->post( $src, $replypath, "Squeak squeak.", $dest ); @@ -1777,13 +1781,24 @@ KARMA: |- } for my $key (keys %karma) { + my $slotted = 0; INNER: for( my $i = 0; $i < $target; $i++ ) { - if( !defined( $response[ $i ]->[1] ) || $response[ $i ]->[0]*$mult < $karma{ $key }*$mult ) { + if( !defined( $response[ $i ]->[1] ) ) { $response[ $i ] = [ $karma{ $key }, $key ]; + $slotted = 1; last INNER; } } + if( $slotted == 0 ) { + INNER: + for( my $i = 0; $i < $target; $i++ ) { + if( $response[ $i ]->[0]*$mult < $karma{ $key }*$mult ) { + $response[ $i ] = [ $karma{ $key }, $key ]; + last INNER; + } + } + } } if( $mult == 1 ) { @response = sort { $b->[0] <=> $a->[0] } @response; @@ -1792,6 +1807,7 @@ KARMA: |- } my $resp = $response[0]->[1]." (".$response[0]->[0].")"; for( my $i = 1; $i < scalar @response; $i++ ) { + next unless defined $response[ $i ]->[1]; $resp .= ", ".$response[ $i ]->[1]." (".$response[ $i ]->[0].")"; } $kernel->post( $src, $replypath, ($mult eq "-1"?"Bottom":"Top")." $target: $resp", $dest ); -- 2.11.0