Sha256: 993daec22aeb4fcb92a3006f49f65f9c139d71109b94cdea03fe09757bae5cb0

Contents?: true

Size: 971 Bytes

Versions: 4

Compression:

Stored size: 971 Bytes

Contents

module Bmg
  class Database
    class Xlsx < Database

      DEFAULT_OPTIONS = {
      }

      def initialize(path, options = {})
        path = Path(path) if path.is_a?(String)
        @path = path
        @options = options.merge(DEFAULT_OPTIONS)
      end

      def method_missing(name, *args, &bl)
        return super(name, *args, &bl) unless args.empty? && bl.nil?
        rel = rel_for(name)
        raise NotSuchRelationError(name.to_s) unless rel
        rel
      end

      def each_relation_pair
        return to_enum(:each_relation_pair) unless block_given?

        spreadsheet.sheets.each do |sheet_name|
          yield(sheet_name.to_sym, rel_for(sheet_name))
        end
      end

    protected

      def spreadsheet
        @spreadsheet ||= Roo::Spreadsheet.open(@path, @options)
      end

      def rel_for(sheet_name)
        Bmg.excel(@path, { sheet: sheet_name.to_s })
      end

    end # class Sequel
  end # class Database
end # module Bmg

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bmg-0.23.3 lib/bmg/database/xlsx.rb
bmg-0.23.2 lib/bmg/database/xlsx.rb
bmg-0.23.1 lib/bmg/database/xlsx.rb
bmg-0.23.0 lib/bmg/database/xlsx.rb