package Mail::Stats::Parser;

use strict;
use Mail::Stats::Record;

use vars qw($Start_Header $Status_Header $Ignore_Header $End_Header);

$Start_Header = 'From \S+\s+\w\w\w \w\w\w\s+\d+ \d+:\d+:\d+ \d+';
$Status_Header = '(X-)?Status:';
$Ignore_Header = 'Subject: DON\'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA';
$End_Header = '\s*';

sub parse {
  my $fh = shift;

  my $mail = new Mail::Stats::Record();
  
  my $header = 0;

  while(<$fh>) {
    if(/^From \S+\s+\w+ \w+\s+\d+ \d+:\d+:\d+ \d+/) {
      $header = 1;
      $mail->{MESSAGES}++;
    } elsif ($header && /^$Status_Header/og) {
      while(/(\w)/g) {
	$mail->{STATUS}->{$1}++;
      }
    } elsif ($header && /^$Ignore_Header/o) {
      $mail->{MESSAGES}--;
      $header = 0;
    } elsif ($header && /^$End_Header$/o) {
      $header = 0;
    }
  }

  return $mail;
}

1;