strip quotes around values with spaces
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 16 Oct 2010 12:55:01 +0000 (14:55 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 16 Oct 2010 12:55:01 +0000 (14:55 +0200)
This still doesn't make us compliant CSV parser, since current code
*WILL* split csv wrongly if delimiter is inside quotes

lib/MojoFacets/Import/CSV.pm

index 479308b..de661c5 100644 (file)
@@ -39,7 +39,7 @@ sub data {
 
        my $header_line = shift @lines;
 
-       my @header = split( $delimiter, $header_line );
+       my @header = map { s/^"(.+)"$/$1/; $_ } split( $delimiter, $header_line );
        warn "# header ",dump( @header );
 
        while ( my $line = shift @lines ) {
@@ -47,7 +47,9 @@ sub data {
                my @v = split($delimiter, $line);
                my $item;
                foreach my $i ( 0 .. $#v ) {
-                       $item->{ $header[$i] || "f_$i" } = [ $v[$i] ];
+                       my $v = $v[$i];
+                       $v =~ s/^"(.+)"$/$1/;
+                       $item->{ $header[$i] || "f_$i" } = [ $v ];
                }
                push @{ $data->{items} }, $item;
        }