The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Bot::Infobot::Importer::Factpack;
use strict;
use Fcntl qw(:seek);

sub handle {
    return $_[0] =~ m!\.fact$!i;
}

sub new {
	my $class = shift;
    my $file  = shift;
    my $fh;
    open($fh, $file) || die "Couldn't open $file for reading : $!\n";
    my $rows = 0;
    $rows++ while <$fh>;
    seek $fh, 0, SEEK_SET;
    return bless { _fh => $fh, _rows => $rows }, $class;
}

sub fetch {
    my ($self, $table, $key) = @_;
    $self->{_table} = $table;
    $self->{_key} = (defined $key)? $key : undef;
}

sub rows {
    my $self = shift;
    return 0 if $self->{_table} ne 'is';
    return $self->{_rows};
}

sub next {
    my $self = shift;
    return unless $self->{_table} eq 'is';
    my $fh = $self->{_fh};
    while ( my $line = <$fh> ) {
        chomp($line);
        $line =~ s!\s*$!!; # trim
        my ($left, $right) = split(/\s*=>\s*/, $line, 2);
        next unless defined $left;
        next if defined $self->{_key} && $left ne $self->{_key};
        return { key => $left, value => $right };    
    }
    return;    
}

sub finish {
    my $self = shift;
    close($self->{_fh});
}



1;