remove hash from first column name
[MojoFacets.git] / lib / MojoFacets / Import / CSV.pm
index d571144..e8fa196 100644 (file)
@@ -10,7 +10,7 @@ use Data::Dump qw(dump);
 
 __PACKAGE__->attr('full_path');
 
-sub ext { '.csv' };
+sub ext { '\.[ct]sv$' };
 
 sub data {
        my $self = shift;
@@ -18,7 +18,7 @@ sub data {
        my $path = $self->full_path;
 
        my $encoding = 'utf-8';
-       if ( $path =~ m/\.([\w\-]+).csv/i ) {
+       if ( $path =~ m/\.([\w\-]+).[ct]sv/i ) {
                $encoding = $1;
        }
 
@@ -37,6 +37,7 @@ sub data {
        my @sep_by_usage = sort { $possible_delimiters->{$b} <=> $possible_delimiters->{$a} } keys %$possible_delimiters;
        my $sep_char = shift @sep_by_usage;
        while ( $sep_char =~ m/^\s$/ ) {
+               last if $sep_char eq "\t" && $path =~ m/\.tsv$/i;
                warn "## skip whitespace separator ",dump($sep_char);
                $sep_char = shift @sep_by_usage;
        }
@@ -46,6 +47,11 @@ sub data {
                $sep_char = shift @sep_by_usage;
        }
 
+       if ( $sep_char !~ m/,/ && $possible_delimiters->{','} && $path =~ m/\.csv/i ) {
+               $sep_char = ',';
+               warn "## csv file detected so prefer , as separator";
+       }
+
        warn "sep_char = [$sep_char] for $path\n";
 
        my $csv = Text::CSV->new ( { binary => 1, eol => $/, sep_char => $sep_char } )
@@ -54,6 +60,7 @@ sub data {
        while ( my $row = $csv->getline( $fh ) ) {
                if ( ! @header ) {
                        @header = @$row;
+                       $header[0] =~ s/^#// if $path =~ m/\.tsv/i; # remove hash from 1st column
                        next;
                }
                my $item;