A Hash-like object for caching commonly used objects from a PDF file.
This is an internal class used by PDF::Reader::ObjectHash
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
# File lib/pdf/reader/object_cache.rb, line 15 def initialize @objects = {} end
# File lib/pdf/reader/object_cache.rb, line 19 def [](key) @objects[key] end
# File lib/pdf/reader/object_cache.rb, line 23 def []=(key, value) @objects[key] = value if cacheable?(value) end
# File lib/pdf/reader/object_cache.rb, line 31 def each(&block) @objects.each(&block) end
# File lib/pdf/reader/object_cache.rb, line 36 def each_key(&block) @objects.each_key(&block) end
# File lib/pdf/reader/object_cache.rb, line 40 def each_value(&block) @objects.each_value(&block) end
# File lib/pdf/reader/object_cache.rb, line 49 def empty? @objects.empty? end
# File lib/pdf/reader/object_cache.rb, line 27 def fetch(key, local_default = nil) @objects.fetch(key, local_default) end
# File lib/pdf/reader/object_cache.rb, line 53 def has_key?(key) @objects.has_key?(key) end
# File lib/pdf/reader/object_cache.rb, line 60 def has_value?(value) @objects.has_value?(value) end
# File lib/pdf/reader/object_cache.rb, line 68 def keys @objects.keys end
# File lib/pdf/reader/object_cache.rb, line 44 def size @objects.size end
# File lib/pdf/reader/object_cache.rb, line 64 def to_s "<PDF::Reader::ObjectCache size: #{self.size}>" end
# File lib/pdf/reader/object_cache.rb, line 72 def values @objects.values end
# File lib/pdf/reader/object_cache.rb, line 78 def cacheable?(obj) obj.is_a?(Hash) && CACHEABLE_TYPES.include?(obj[:Type]) end