diff --git a/lib/daru/io/importers/csv.rb b/lib/daru/io/importers/csv.rb index 66c0ffd..b5f6841 100755 --- a/lib/daru/io/importers/csv.rb +++ b/lib/daru/io/importers/csv.rb @@ -40,10 +40,22 @@ def initialize # instance = Daru::IO::Importers::CSV.read("matrix_test.csv.gz") def read(path) @path = path - @file_data = open(@path) + @file_data = open_data_source(@path) self end + private def open_data_source(name) + if name.respond_to?(:open) + name.open + elsif name.respond_to?(:to_str) && + %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name && + (uri = URI.parse(name)).respond_to?(:open) + uri.open + else + File.open name + end + end + # Imports a `Daru::DataFrame` from a CSV Importer instance # # @param headers [Boolean] If this option is `true`, only those columns