Sha256: 1f6f32be197b2081add475780ecabe33ad3478709341ba476a9f2d85fa872e7c

Contents?: true

Size: 999 Bytes

Versions: 3

Compression:

Stored size: 999 Bytes

Contents

# frozen_string_literal: true

module Workbook
  module Readers
    module CsvReader
      def load_csv text, options = {}
        csv = text
        parse_csv csv, options
      end

      def csv_lib
        CSV
      end

      def parse_csv csv_raw, options = {}
        optimistic_date_converter = Workbook::Cell.new.string_optimistic_date_converter
        options = {
          converters: [optimistic_date_converter, :all]
        }.merge(options)

        csv = nil

        begin
          csv = CSV.parse(csv_raw, **options)
        rescue CSV::MalformedCSVError
          csv_excel = CSV.parse(csv_raw, **options.merge({col_sep: ";"}))
          csv = csv_excel if csv_excel[0].count > 1
        end

        if csv.nil? || (csv[0].count == 1)
          csv_excel = CSV.parse(csv_raw, **options.merge({col_sep: ";"}))
          csv = csv_excel if csv_excel[0].count > 1
        end

        self[0] = Workbook::Sheet.new(csv, self) unless sheet.has_contents?
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
workbook-0.9.1 lib/workbook/readers/csv_reader.rb
workbook-0.9.0 lib/workbook/readers/csv_reader.rb
workbook-0.8.2 lib/workbook/readers/csv_reader.rb