ACME-QuoteDB
view release on metacpan or search on metacpan
t/01-load_quotes.t view on Meta::CPAN
'Andrew Mullhaupt',
'Anthony Baxter',
'An unknown poster and Fredrik Lundh',
'Brett Cannon',
'Christian Tismer',
'Donald E. Knuth',
'Donn Cave uses sarcasm with devastating effect',
'Fred Drake on the Documentation SIG',
'Fredrik Lundh',
'From Kim "Howard" Johnson\'s',
'Gareth McCaughan',
'Gordon McMillan',
'Guido van Rossum',
'GvR',
'Jack Jansen',
'Jeremy Hylton',
'Jim Ahlstrom',
'Jim Fulton and Paul Everitt on the Bobo list',
'Jim Fulton and Tim Peters',
'John Eikenberry on the Bobo list',
'John Holmgren',
'John J. Lehmann',
'John Redford',
'Joseph Strout',
"Kristj\x{E1}n J\x{F3}nsson",
'Larry Wall',
'Mark Jackson',
'Matthew Lewis Carroll Smith',
'Michael Palin',
'Mike Meyer',
'Nick Seidenman and Guido van Rossum',
'Paul Boddie',
'Paul Prescod',
'Paul Winkler',
'Sriram Srinivasan',
'Steve Majewski',
'Steven D. Majewski',
'Tim Berners-Lee',
'Tim Chase',
'Timothy J. Grant and Tim Peters',
'Tim Peters',
'Told by Nick Leaton',
'Tom Christiansen',
'Vladimir Marangozov and Tim Peters',
);
is( $sq->list_attr_names, join "\n", sort @expected_attribution_list);
}
{ # prove load a fortune format file
# this is an example of importing a file in the 'fortune' format
# subclass ACME::QuoteDB::LoadDB and override dbload, to do our parsing
package Fortune2QuoteDB;
use base 'ACME::QuoteDB::LoadDB';
use Carp qw/croak/;
use Data::Dumper qw/Dumper/;
sub dbload {
my ($self, $file) = @_;
open my $source, '<:encoding(utf8)', $file || croak $!;
local $/ = $self->{delim};
my $q = q{};
while (my $line = <$source>){
#$self->debug_record;
$q .= $line;
$q =~ s{\A\s+}{}xsmg;
$q =~ s{\s+\z}{}xsmg;
$q =~ s/\s+$self->{delim}//g;
$self->set_record(quote => $q);
my $name = $self->get_record('quote');
$name =~ s{\A(.*?):.*}{$1}xmsg; # not accurate,
$self->set_record(name => $name);
$self->set_record(source => $self->{attr_source});
$self->set_record(catg => $self->{category} || q{});
$self->set_record(rating => $self->{rating} || q{});
$self->write_record;
$q = q{};
}
close $source || croak $!;
}
package main;
use File::Basename qw/dirname/;
use File::Spec;
my $fd = File::Spec->catfile(dirname(__FILE__), 'data', 'futurama');
my $load_db = Fortune2QuoteDB->new({
file => $fd,
file_format => 'custom',
delimiter => "%",
#verbose => 1,
create_db => 1, # first run, create the db
# provide a attr_source for all (if not in data)
# use fortune filename for 'source'
attr_source => 'Futurama',
# provide a category for all (if not in data)
category => 'Humor',
# provide a rating for all
rating => 6.2,
});
isa_ok $load_db, 'ACME::QuoteDB::LoadDB';
$load_db->data_to_db;
is $load_db->success, 1;
my $sq = ACME::QuoteDB->new;
isa_ok $sq, 'ACME::QuoteDB';
is( $sq->list_attr_sources, 'Futurama');
( run in 0.938 second using v1.01-cache-2.11-cpan-39bf76dae61 )