Sha256: 83330d0e3c8832c39256cc5eb023a673a2f8f9009feb7c0311a20c773e15e23b
Contents?: true
Size: 1.48 KB
Versions: 2
Compression:
Stored size: 1.48 KB
Contents
module ImportEverything class DetermineType include FromHash def self.get_filename(file) if file.kind_of?(String) '' else file.first_responding(:original_filename, :filename, :path, :name) end end fattr(:filename) { self.class.get_filename(file) } fattr(:file) { open(filename) } # Get the file extension # @return [String] file extension fattr(:ext) { filename.split(".").last.downcase } def method_missing(sym,*args,&b) if sym.to_s[-1..-1] == '=' self.addl_ops[sym.to_s[0..-2]] = args.first else super end end # Store addl ops fattr(:addl_ops) { {} } fattr(:parser_ops) { {:file => file}.merge(addl_ops) } # Determines what parser class should be used for this file def parser_class h = {'sqlite' => SqliteParser, 'sqlite3' => SqliteParser, 'csv' => CsvParser, 'xml' => XmlParser, 'sql' => SqlInsertParser, 'dmp' => SqlInsertParser, 'html' => TableParser} h[ext].tap { |x| return x if x } h.each do |k,klass| return klass if ext =~ /^#{k}\d\d/ end raise "no parser found for #{ext}" end # Creates the parser def parser parser_class.new(parser_ops) end module Include fattr(:dt) do DetermineType.new end %w(filename file).each do |m| define_method(m) { dt.send(m) } define_method("#{m}=") { |v| dt.send("#{m}=",v) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
import_everything-0.1.3 | lib/import_everything/determine_type.rb |
import_everything-0.1.2 | lib/import_everything/determine_type.rb |