Case insensitive header waren nicht voll abgedeckt, und haben Fehler bei kaputten...
authorSven Schöling <s.schoeling@linet-services.de>
Tue, 8 Mar 2011 10:11:54 +0000 (11:11 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 16 Jun 2011 06:44:10 +0000 (08:44 +0200)
SL/Helper/Csv.pm
t/helper/csv.t

index a30122e..3132b28 100644 (file)
@@ -99,17 +99,20 @@ sub _open_file {
 
 sub _check_header {
   my ($self, %params) = @_;
-  return $self->header if $self->header;
+  my $header = $self->header;
 
-  my $header = $self->_csv->getline($self->_io);
+  if (! $header) {
+    $header = $self->_csv->getline($self->_io);
 
-  $self->_push_error([
-    $self->_csv->error_input,
-    $self->_csv->error_diag,
-    0,
-  ]) unless $header;
+    $self->_push_error([
+      $self->_csv->error_input,
+      $self->_csv->error_diag,
+      0,
+    ]) unless $header;
+  }
 
-  $self->header([ map { lc } @{ $header } ]);
+  return unless $header;
+  return $self->header([ map { lc } @$header ]);
 }
 
 sub _parse_data {
index d4a1571..e4a6254 100644 (file)
@@ -1,4 +1,4 @@
-use Test::More tests => 37;
+use Test::More tests => 39;
 use SL::Dispatcher;
 use Data::Dumper;
 use utf8;
@@ -274,4 +274,23 @@ $csv = SL::Helper::Csv->new(
 $csv->parse;
 is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'eol bug at the end of files';
 
+#####
+
+$csv = SL::Helper::Csv->new(
+  file   => \"Description\nKaffee",
+  class  => 'SL::DB::Part',
+);
+$csv->parse;
+is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'case insensitive header from csv works';
+
+#####
+
+$csv = SL::Helper::Csv->new(
+  file   => \"Kaffee",
+  header => [ 'Description' ],
+  class  => 'SL::DB::Part',
+);
+$csv->parse;
+is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'case insensitive header as param works';
+
 # vim: ft=perl