projects
/
MojoFacets.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
667c542
)
strip quotes around values with spaces
author
Dobrica Pavlinusic
<dpavlin@rot13.org>
Sat, 16 Oct 2010 12:55:01 +0000
(14:55 +0200)
committer
Dobrica 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
patch
|
blob
|
history
diff --git
a/lib/MojoFacets/Import/CSV.pm
b/lib/MojoFacets/Import/CSV.pm
index
479308b
..
de661c5
100644
(file)
--- a/
lib/MojoFacets/Import/CSV.pm
+++ b/
lib/MojoFacets/Import/CSV.pm
@@
-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;
}