module NdrImport::File::Registry

This mixin adds table enumeration functionality to importers.

Attributes

handlers[RW]

Public Class Methods

files(filename, options = {}, &block) click to toggle source
# File lib/ndr_import/file/registry.rb, line 24
def files(filename, options = {}, &block)
  return enum_for(:files, filename, options) unless block

  klass_factory(filename, nil, options).files(&block)
end
register(klass, *formats) click to toggle source
# File lib/ndr_import/file/registry.rb, line 10
def register(klass, *formats)
  @handlers ||= {}

  formats.each do |format|
    @handlers[format] = klass
  end
end
tables(filename, format = nil, options = {}, &block) click to toggle source
# File lib/ndr_import/file/registry.rb, line 30
def tables(filename, format = nil, options = {}, &block)
  return enum_for(:tables, filename, format, options) unless block

  klass_factory(filename, format, options).tables(&block)
end
unregister(*formats) click to toggle source
# File lib/ndr_import/file/registry.rb, line 18
def unregister(*formats)
  formats.each do |format|
    @handlers.delete(format)
  end
end

Private Class Methods

klass_factory(filename, format, options) click to toggle source
# File lib/ndr_import/file/registry.rb, line 38
def klass_factory(filename, format, options)
  format ||= SafeFile.extname(filename).delete('.').downcase
  klass = Registry.handlers[format]
  if klass
    klass.new(filename, format, options)
  else
    UnregisteredFiletype.new(filename, format, options)
  end
end