| Class | Bio::FlatFileIndex::FileIDs |
| In: |
lib/bio/io/flatfile/index.rb
|
| Parent: | Array |
FileIDs class.
Internal use only.
# File lib/bio/io/flatfile/index.rb, line 572
572: def initialize(prefix, hash)
573: @hash = hash
574: @prefix = prefix
575: end
# File lib/bio/io/flatfile/index.rb, line 577
577: def [](n)
578: r = super(n)
579: if r then
580: r
581: else
582: data = @hash["#{@prefix}#{n}"]
583: if data then
584: self[n] = data
585: end
586: super(n)
587: end
588: end
# File lib/bio/io/flatfile/index.rb, line 590
590: def []=(n, data)
591: if data.is_a?(FileID) then
592: super(n, data)
593: elsif data then
594: super(n, FileID.new_from_string(data))
595: else
596: # data is nil
597: super(n, nil)
598: end
599: self[n]
600: end
# File lib/bio/io/flatfile/index.rb, line 602
602: def add(*arg)
603: arg.each do |filename|
604: self << FileID.new(filename)
605: end
606: end
# File lib/bio/io/flatfile/index.rb, line 608
608: def cache_all
609: a = @hash.keys.collect do |k|
610: if k =~ /\A#{Regexp.escape(@prefix)}(\d+)/ then
611: $1.to_i
612: else
613: nil
614: end
615: end
616: a.compact!
617: a.each do |i|
618: self[i]
619: end
620: a
621: end
# File lib/bio/io/flatfile/index.rb, line 657
657: def check_all
658: self.cache_all
659: r = true
660: self.each do |x|
661: r = x.check
662: break unless r
663: end
664: r
665: end
# File lib/bio/io/flatfile/index.rb, line 668
668: def close_all
669: self.each do |x|
670: x.close
671: end
672: nil
673: end
# File lib/bio/io/flatfile/index.rb, line 623
623: def each
624: (0...self.size).each do |i|
625: x = self[i]
626: yield(x) if x
627: end
628: self
629: end
# File lib/bio/io/flatfile/index.rb, line 631
631: def each_with_index
632: (0...self.size).each do |i|
633: x = self[i]
634: yield(x, i) if x
635: end
636: self
637: end
# File lib/bio/io/flatfile/index.rb, line 648
648: def filenames
649: self.cache_all
650: a = []
651: self.each do |x|
652: a << x.filename
653: end
654: a
655: end
# File lib/bio/io/flatfile/index.rb, line 639
639: def keys
640: self.cache_all
641: a = []
642: (0...self.size).each do |i|
643: a << i if self[i]
644: end
645: a
646: end