print( "KARMA: <$who> $what++\n" );
}
+KARMASET: |-
+ sub {
+ my( $kernel, $heap, $who, $what, $src, $dest, $replypath ) = @_;
+ if( !exists( $heap->{ "karma" } ) ) {
+ if( -e "karma.yaml" ) {
+ $heap->{ "karma" } = LoadFile( "karma.yaml" );
+ } else {
+ $heap->{ "karma" } = {};
+ }
+ }
+ if( $what =~ /^([^ ]+) (-?[0-9]+)$/ ) {
+ my $value = $2;
+ $what = $1;
+ $heap->{ "karma" }->{ uc( $what ) } = $value;
+ DumpFile( "karma.yaml", $heap->{ 'karma' } );
+ print( "KARMA: <$who> $what = $value\n" );
+ $kernel->post( $src, $replypath, "Set.", $dest );
+ } else {
+ $kernel->post( $src, $replypath, "Usage: KARMASET <what> <value>", $dest );
+ }
+ }
+
KARMACLEAN: |-
sub {
my( $kernel, $heap, $who, $what, $src, $dest, $replypath ) = @_;
}
if( $what =~ /^([+-])([1-9][0-9]*)$/ ) {
my $target = $2;
- my $thresh = 0;
- my $tItem = 0;
my $mult = ($1 eq "-"?-1:1);
my @response;
my %karma = %{ $heap->{ "karma" } };
}
for my $key (keys %karma) {
- my $slotted = 0;
- INNER:
- for( my $i = 0; $i < $target; $i++ ) {
- 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( !defined( $response[ 0 ]->[1] ) || $response[ 0 ]->[0]*$mult < $karma{ $key }*$mult ) {
+ $response[ 0 ] = [ $karma{ $key }, $key ];
+ if( $mult == 1 ) {
+ @response = sort { $a->[0] <=> $b->[0] } @response;
+ } else {
+ @response = sort { $b->[0] <=> $a->[0] } @response;
}
}
}
- if( $mult == 1 ) {
- @response = sort { $b->[0] <=> $a->[0] } @response;
- } else {
- @response = sort { $a->[0] <=> $b->[0] } @response;
- }
+ @response = reverse @response;
my $resp = $response[0]->[1]." (".$response[0]->[0].")";
for( my $i = 1; $i < scalar @response; $i++ ) {
next unless defined $response[ $i ]->[1];