Sha256: 6389b77fa7528cd7496d1179176e3ddf08b9a50ff2d45034a126ca965dd972a9

Contents?: true

Size: 978 Bytes

Versions: 11

Compression:

Stored size: 978 Bytes

Contents

require 'uri'

module Roo
  class Spreadsheet
    class << self
      def open(path, options = {})
        path      = path.respond_to?(:path) ? path.path : path
        extension = extension_for(path, options)

        begin
          Roo::CLASS_FOR_EXTENSION.fetch(extension).new(path, options)
        rescue KeyError
          raise ArgumentError,
                "Can't detect the type of #{path} - please use the :extension option to declare its type."
        end
      end

      def extension_for(path, options)
        case (extension = options.delete(:extension))
        when ::Symbol
          options[:file_warning] = :ignore
          extension
        when ::String
          options[:file_warning] = :ignore
          extension.tr('.', '').downcase.to_sym
        else
          res = ::File.extname((path =~ /\A#{::URI.regexp}\z/) ? ::URI.parse(::URI.encode(path)).path : path)
          res.tr('.', '').downcase.to_sym
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
roo-2.7.1 lib/roo/spreadsheet.rb
roo-2.7.0 lib/roo/spreadsheet.rb
roo-2.6.0 lib/roo/spreadsheet.rb
roo-2.5.1 lib/roo/spreadsheet.rb
roo-2.5.0 lib/roo/spreadsheet.rb
roo-2.4.0 lib/roo/spreadsheet.rb
roo-2.3.2 lib/roo/spreadsheet.rb
roo-2.3.1 lib/roo/spreadsheet.rb
roo-2.3.0 lib/roo/spreadsheet.rb
roo-2.2.0 lib/roo/spreadsheet.rb
roo-2.1.1 lib/roo/spreadsheet.rb