From 5149c8a8082152cbdde9289d0a53e5ff1c0cdd29 Mon Sep 17 00:00:00 2001 From: Sergey Semyonov Date: Fri, 2 Nov 2018 15:08:46 +0400 Subject: [PATCH] Handle empty string in ACSV::Detect.separator --- lib/acsv/detect/separator.rb | 3 +++ spec/acsv/separator_spec.rb | 3 +++ 2 files changed, 6 insertions(+) diff --git a/lib/acsv/detect/separator.rb b/lib/acsv/detect/separator.rb index a08624d..a31de0f 100644 --- a/lib/acsv/detect/separator.rb +++ b/lib/acsv/detect/separator.rb @@ -13,8 +13,11 @@ def self.separator(file_or_data) firstline = file_or_data.readline file_or_data.seek(position) else + return nil if file_or_data.empty? + firstline = file_or_data.split("\n", 2)[0] end + separators = SEPARATORS.map{|s| s.encode(firstline.encoding)} sep = separators.map {|x| [firstline.count(x),x]}.sort_by {|x| x[0]}.last sep[0] == 0 ? nil : sep[1].encode('ascii') diff --git a/spec/acsv/separator_spec.rb b/spec/acsv/separator_spec.rb index 3d35e5b..3f22298 100644 --- a/spec/acsv/separator_spec.rb +++ b/spec/acsv/separator_spec.rb @@ -22,5 +22,8 @@ end end + it 'handles empty string' do + expect(ACSV::Detect.separator('')).to be_nil + end end end