1 package MojoFacets::Import::CSV;
9 use Data::Dump qw(dump);
11 __PACKAGE__->attr('full_path');
16 my $path = $self->full_path;
18 my $encoding = 'utf-8';
19 if ( $path =~ m/\.(\w+).csv/i ) {
23 my $data = { items => [] };
26 my $csv = Text::CSV->new ( { binary => 1, eol => $/ } )
27 or die "Cannot use CSV: ".Text::CSV->error_diag ();
29 open my $fh, "<:encoding($encoding)", $path or die "$path: $!";
30 while ( my $row = $csv->getline( $fh ) ) {
36 foreach my $i ( 0 .. $#{$row} ) {
37 $item->{ $header[$i] || "f_$i" } = [ $row->[$i] ];
39 push @{ $data->{items} }, $item;
42 $csv->eof or $csv->error_diag();
45 $data->{header} = [ @header ];