class TTFunk::Collection

Public Class Methods

new(io) click to toggle source
# File lib/ttfunk/collection.rb, line 19
def initialize(io)
  tag = io.read(4)
  raise ArgumentError, 'not a TTC file' unless tag == 'ttcf'

  _major, _minor = io.read(4).unpack('n*')
  count = io.read(4).unpack1('N')
  @offsets = io.read(count * 4).unpack('N*')

  io.rewind
  @contents = io.read
  @cache = []
end
open(path) { |new(path)| ... } click to toggle source
# File lib/ttfunk/collection.rb, line 7
def self.open(path)
  if path.respond_to?(:read)
    result = yield new(path)
    path.rewind
    result
  else
    ::File.open(path, 'rb') do |io|
      yield new(io)
    end
  end
end

Public Instance Methods

[](index) click to toggle source
# File lib/ttfunk/collection.rb, line 43
def [](index)
  @cache[index] ||= TTFunk::File.new(@contents, @offsets[index])
end
count() click to toggle source
# File lib/ttfunk/collection.rb, line 32
def count
  @offsets.length
end
each() { |self| ... } click to toggle source
# File lib/ttfunk/collection.rb, line 36
def each
  count.times do |index|
    yield self[index]
  end
  self
end