Sha256: 0bbe4ce1338cce174246baf071d0c097e37a232d152154f1963f89e20c828bc8

Contents?: true

Size: 825 Bytes

Versions: 1

Compression:

Stored size: 825 Bytes

Contents

module Exporter
  class Configuration

    def initialize
      @exporters = Hash.new
    end

    def register(data_type, export_type, exporter)
      if @exporters[data_type].nil?
        @exporters[data_type] = {export_type => exporter}
      else
        @exporters[data_type][export_type] = exporter
      end
    end

    def index(data, default_value, method)
      @exporters.keys.each do |key|
        return method.call(key) if data.kind_of?(key)
      end
      default_value
    end

    def can_export?(data, export_type)
      can_export_proc = Proc.new{|key| @exporters[key][export_type].present?}
      index(data, false, can_export_proc)
    end

    def exporter(data, export_type)
      exporter_proc = Proc.new {|key| @exporters[key][export_type]}
      index(data, nil, exporter_proc)
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
exporter-0.1.0 lib/exporter/configuration.rb