package Parse::Flexget;
use strict;

BEGIN {
  use Exporter;
  use vars qw($VERSION @ISA @EXPORT_OK);

  $VERSION = '0.018';
  @ISA     = qw(Exporter);

  @EXPORT_OK = qw(
    flexparse
  );
}

use Carp qw(croak);

sub flexparse {
  my @data;
  if(ref($_[0]) eq 'ARRAY') {
    push(@data, @{$_[0]});
  }
  elsif(ref($_[0]) eq '') {
    push(@data, @_);
  }
  else {
    croak("Reference type " . ref($_[0]) . " not supported\n");
  }

  my @downloads;
  for my $element(@data) {
    if($element =~ m/Downloading: (\S+)/) {
      push(@downloads, $1);
    }
  }
  return wantarray() ? @downloads : scalar(@downloads);
}


1;

__END__

=pod

=head1 NAME

Parse::Flexget - Parse the flexget program output

=head1 SYNOPSIS

    use Parse::Flexget qw(flexparse);

    open(my $fh, '<', "$ENV{HOME}/.flexget.log") or die($!);
    my @data = <$fh>;
    close($fh);

    print "$_\n" for flexparse(@data);

=head1 DESCRIPTION

B<Parse::Flexget> parses the output from flexget(1) and returns a list of
successfully downloaded files.
This module was initially written to be used together with L<File::Media::Sort>
and L<File::PatternMatch>.

=head1 EXPORTS

None by default.

=head1 FUNCTIONS

=head2 flexparse()

Parameters: @content | \@content

Returns:    @downloads

In list context, returns an array with all files downloaded by flexget.

In scalar context, returns the number of files downloaded by flexget.

=head1 SEE ALSO

L<File::Media::Sort>, L<File::PatternMatch>, L<flexget(1)>

=head1 AUTHOR

  Magnus Woldrich
  CPAN ID: WOLDRICH
  m@japh.se
  http://japh.se

=head1 CONTRIBUTORS

None required yet.

=head1 COPYRIGHT

Copyright 2010, 2011 the B<Parse::Flexget>s L</AUTHOR> and L</CONTRIBUTORS> as
listed above.

=head1 LICENSE

This library is free software; you may redistribute it and/or modify it under
the same terms as Perl itself.

=cut