#!/usr/bin/perl

use strict;
use warnings;

use constant WINDOW => 50;

die "Usage: $0 <logfile>\n" unless @ARGV == 1;

my %moving_average;
my %points;
my %avg;

my $logfile = shift;
open(LOG, $logfile) or die "open($logfile) failed: $!\n";

open($points{ham},  '>ham.points')  or die "open(>ham.points) failed: $!\n";
open($points{spam}, '>spam.points') or die "open(>spam.points) failed: $!\n";
open($avg{ham},     '>ham.movavg')  or die "open(>ham.movavg) failed: $!\n";
open($avg{spam},    '>spam.movavg') or die "open(>spam.movavg) failed: $!\n";

my $count = 1;

while (<LOG>) {
  chomp;
  my $type = /ham/ ? 'ham' : /spam/ ? 'spam' : die "Weird line $.: $_\n";
  my ($file, $pR, $action) = split /;/, $_;
  push @{ $moving_average{$type} }, $pR;
  shift @{ $moving_average{$type} } if @{ $moving_average{$type} } > WINDOW;
  my $avg = 0;
  $avg += $_ foreach @{ $moving_average{$type} };
  $avg /= WINDOW;
  print { $points{$type} } "$count $pR\n";
  print { $avg{$type} }    "$count $avg\n";
  $count++;
}

close(LOG);

my $png = "$logfile.png";
$png =~ s/^toer_log_/toer_/;

system("gnuplot toer.gpl > $png");

