def process(file)
      case file
        when String
          process(File.new(file))
        when File
          case file.path
            when /\.ctl(\.rb)?$/; process_control(file)
            when /\.ebf(\.rb)?$/; process_batch(file)
            else raise RuntimeError, "Unsupported file type - #{file.path}"
          end
        when ETL::Control::Control
          process_control(file)
        when ETL::Batch::Batch
          process_batch(file)
      else
        raise RuntimeError, "Process object must be a String, File, Control 
        instance or Batch instance"
      end
    end
def process(file)
      case file
        when String
          process(File.new(file))
        when File
          case file.path
            when /\.ctl(\.rb)?$/; process_control(file)
            when /\.ebf(\.rb)?$/; process_batch(file)
            else raise RuntimeError, "Unsupported file type - #{file.path}"
          end
        when ETL::Control::Control
          process_control(file)
        when ETL::Batch::Batch
          process_batch(file)
      else
        raise RuntimeError, "Process object must be a String, File, Control 
        instance or Batch instance"
      end
    end
Process a file, control object or batch object. Acceptable values for
 file are:
 * Path to a file
 * File object
 * ETL::Control::Control instance
 * ETL::Batch::Batch instance