package Data::Package::CSV; =pod =head1 NAME Data::Package::CSV - A Data::Package class for CSV data using Parse::CSV =head1 DESCRIPTION The B package provides a subclass of L that provides data from a CSV file by integrating with L. =head1 METHODS =cut use 5.005; use strict; use base 'Data::Package::File'; use Parse::CSV (); use vars qw{$VERSION}; BEGIN { $VERSION = '1.01'; } sub import { return 1 if $_[0] eq __PACKAGE__; return shift->SUPER::import(@_); } ##################################################################### # Data::Package::CSV Methods =pod =head2 csv_options The B method is the most direct method, with full control over the creation of the L object. If a fully compliant options hash is returned (as a list) then no other methods need to be defined. The list returned by the B method will be passed directly to the L constructor. Read the documentation for L for more details on what you should return to match your data. By default, the null list is return, specifying entirely default options to the L constructor (array mode) and not specifying any filters or parsing variations. If it list that is returned does not have either a data source (either a C param or C param) then the C method for the parent class will be called to locate a file. =cut sub csv_options { return (); } ##################################################################### # Data::Package Methods sub _provides { my @provides = shift->SUPER::_provides(@_); return ( 'Parse::CSV', @provides ); } sub __as_Parse_CSV { my $class = ref($_[0]) || $_[0]; # Get the main options my %options = $class->csv_options; unless ( $options{handle} or $options{file} ) { delete $options{file}; delete $options{handle}; # Locate the data my $file = $class->file; if ( $file ) { $options{file} = $class->file; delete $options{handle}; } else { die "No CSV file found for $class"; } } # Create the parser object my $parse_csv = Parse::CSV->new( %options ); unless ( $parse_csv ) { die "Failed to create Parse::CSV object for $class"; } return $parse_csv; } 1; =pod =head1 SUPPORT Bugs should always be submitted via the CPAN bug tracker. L For other issues, contact the maintainer =head1 AUTHOR Adam Kennedy Eadamk@cpan.orgE =head1 COPYRIGHT Copyright 2007 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. =cut