Method: Bio::FlatFile.open
- Defined in:
- lib/bio/io/flatfile.rb
.open(*arg, &block) ⇒ Object
Bio::FlatFile.open(file, *arg)
Bio::FlatFile.open(dbclass, file, *arg)
Creates a new Bio::FlatFile object to read a file or a stream which contains dbclass data.
dbclass should be a class (or module) or nil. e.g. Bio::GenBank, Bio::FastaFormat.
If file is a filename (which doesn’t have gets method), the method opens a local file named file with File.open(filename, *arg).
When dbclass is omitted or nil is given to dbclass, the method tries to determine database class (file format) automatically. When it fails to determine, dbclass is set to nil and FlatFile#next_entry would fail. You can still set dbclass using FlatFile#dbclass= method.
-
Example 1
Bio::FlatFile.open(Bio::GenBank, "genbank/gbest40.seq") -
Example 2
Bio::FlatFile.open(nil, "embl/est_hum17.dat") -
Example 3
Bio::FlatFile.open("genbank/gbest40.seq") -
Example 4
Bio::FlatFile.open(Bio::GenBank, $stdin)
If it is called with a block, the block will be executed with a new Bio::FlatFile object. If filename is given, the file is automatically closed when leaving the block.
-
Example 5
Bio::FlatFile.open(nil, 'test4.fst') do |ff| ff.each { |e| print e.definition, "\n" } end -
Example 6
Bio::FlatFile.open('test4.fst') do |ff| ff.each { |e| print e.definition, "\n" } end
Compatibility Note: *arg is completely passed to the File.open and you cannot specify “:raw => true” or “:raw => false”.
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/bio/io/flatfile.rb', line 80 def self.open(*arg, &block) # FlatFile.open(dbclass, file, mode, perm) # FlatFile.open(file, mode, perm) if arg.size <= 0 raise ArgumentError, 'wrong number of arguments (0 for 1)' end x = arg.shift if x.is_a?(Module) then # FlatFile.open(dbclass, filename_or_io, ...) dbclass = x elsif x.nil? then # FlatFile.open(nil, filename_or_io, ...) dbclass = nil else # FlatFile.open(filename, ...) dbclass = nil arg.unshift(x) end if arg.size <= 0 raise ArgumentError, 'wrong number of arguments (1 for 2)' end file = arg.shift # check if file is filename or IO object unless file.respond_to?(:gets) # 'file' is a filename _open_file(dbclass, file, *arg, &block) else # 'file' is a IO object ff = self.new(dbclass, file) block_given? ? (yield ff) : ff end end |