class PDF::Reader::ObjectCache

A Hash-like object for caching commonly used objects from a PDF file.

This is an internal class used by PDF::Reader::ObjectHash

Constants

CACHEABLE_TYPES

These object types use little memory and are accessed a heap of times as part of random page access, so we'll cache the unmarshalled objects and avoid lots of repetitive (and expensive) tokenising

Public Class Methods

new() click to toggle source
# File lib/pdf/reader/object_cache.rb, line 15
def initialize
  @objects = {}
end

Public Instance Methods

[](key) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 19
def [](key)
  @objects[key]
end
[]=(key, value) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 23
def []=(key, value)
  @objects[key] = value if cacheable?(value)
end
each(&block) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 31
def each(&block)
  @objects.each(&block)
end
Also aliased as: each_pair
each_key(&block) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 36
def each_key(&block)
  @objects.each_key(&block)
end
each_pair(&block)
Alias for: each
each_value(&block) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 40
def each_value(&block)
  @objects.each_value(&block)
end
empty?() click to toggle source
# File lib/pdf/reader/object_cache.rb, line 49
def empty?
  @objects.empty?
end
fetch(key, local_default = nil) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 27
def fetch(key, local_default = nil)
  @objects.fetch(key, local_default)
end
has_key?(key) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 53
def has_key?(key)
  @objects.has_key?(key)
end
Also aliased as: include?, key?, member?
has_value?(value) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 60
def has_value?(value)
  @objects.has_value?(value)
end
include?(key)
Alias for: has_key?
key?(key)
Alias for: has_key?
keys() click to toggle source
# File lib/pdf/reader/object_cache.rb, line 68
def keys
  @objects.keys
end
length()
Alias for: size
member?(key)
Alias for: has_key?
size() click to toggle source
# File lib/pdf/reader/object_cache.rb, line 44
def size
  @objects.size
end
Also aliased as: length
to_s() click to toggle source
# File lib/pdf/reader/object_cache.rb, line 64
def to_s
  "<PDF::Reader::ObjectCache size: #{self.size}>"
end
values() click to toggle source
# File lib/pdf/reader/object_cache.rb, line 72
def values
  @objects.values
end

Private Instance Methods

cacheable?(obj) click to toggle source
# File lib/pdf/reader/object_cache.rb, line 78
def cacheable?(obj)
  obj.is_a?(Hash) && CACHEABLE_TYPES.include?(obj[:Type])
end