]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_ruby/Maasha/lib/fasta.rb
add dist option to find_adaptor
[biopieces.git] / code_ruby / Maasha / lib / fasta.rb
index bd551bec6ceb1b75ec715c04c0728eb239ed3aa2..e972751320e137df58f413258b87901a16f052ba 100644 (file)
@@ -1,3 +1,5 @@
+# Copyright (C) 2007-2011 Martin A. Hansen.
+
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # as published by the Free Software Foundation; either version 2
 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 
 require 'seq'
-require 'zlib'
+require 'filesys'
 
 # Error class for all exceptions to do with FASTA.
 class FastaError < StandardError; end
 
-class Fasta
-  include Enumerable
-
-  # Class method allowing open to be used on (zipped) files.
-  # See File.open.
-  def self.open(*args)
-    ios = self.zopen(*args)
-
-    if block_given?
-      begin
-        yield ios
-      ensure
-        ios.close
-      end
-    else
-      return ios
-    end
-  end
-
-  def initialize(io, type=nil)
-    @io   = io
-    @type = type
-  end
-
-  # Method to close ios.
-  def close
-    @io.close
-  end
-
-  # Iterator method for parsing FASTA enries.
-  def each
-    while entry = get_entry do
-      yield entry
-    end
-  end
-
+class Fasta < Filesys
   # Method to get the next FASTA entry form an ios and return this
   # as a Seq object. If no entry is found or eof then nil is returned.
   def get_entry
@@ -92,22 +59,6 @@ class Fasta
       @io.print "#{record[:SEQ]}\n"
     end
   end
-
-  private
-
-  # Helper method to return an ios to a file that may be zipped in which case
-  # the ios is unzipped on the fly. See File.open.
-  def self.zopen(*args)
-    ios = File.open(*args)
-
-    begin
-      ios = Zlib::GzipReader.new(ios)
-    rescue
-      ios.rewind
-    end
-
-    self.new(ios)
-  end
 end