Sha256: f8e3517532540be192185368001479afac24397de08200c4d34a95c14ca9d6d9

Contents?: true

Size: 1.37 KB

Versions: 9

Compression:

Stored size: 1.37 KB

Contents

module Spread2RDF
  module Mapping
    class Spreadsheet < Element

      attr_reader :input_file

      def initialize(schema, filename)
        super(schema, nil)
        @worksheets = {}
        @input_file = filename
        ROO.load(filename)
      end

      def map
        schema.sorted_worksheets.each do |worksheet_schema|
          next unless ROO.roo.sheets.include? worksheet_schema.source_name
          worksheet!(worksheet_schema)
        end
        self
      end

      def worksheet_schema(name)
        case name
          when Schema::Worksheet then name
          when String, Symbol    then schema.worksheet[name]
          else raise ArgumentError
        end
      end

      ##########################################################################
      # Mapping::Element structure

      def spreadsheet
        self
      end

      def worksheets
        @worksheets.values
      end
      alias _children_ worksheets

      def worksheet(name)
        @worksheets[worksheet_schema(name).name]
      end

      def worksheet!(name)
        worksheet_schema = worksheet_schema(name)
        @worksheets[worksheet_schema.name] || begin
          @worksheets[worksheet_schema.name] = mapping =
              Mapping::Worksheet.new(worksheet_schema, self)
          mapping.map
        end
      end

    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
spread2rdf-0.1.7 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.6 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.5 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.4 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.3 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.2 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.1 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.1.0 lib/spread2rdf/mapping/spreadsheet.rb
spread2rdf-0.0.2 lib/spread2rdf/mapping/spreadsheet.rb