Module: Pdfrb::Arlington::Loader

Defined in:
lib/pdfrb/arlington/loader.rb

Overview

Reads vendored Arlington TSVs from data/pdfrb/arlington/<version>/. Parsed ObjectDefinitions are memoized per (name, version).

Errors:

* Pdfrb::Error if the TSV file is missing.
* Pdfrb::ParseError if a row has the wrong column count.

Class Method Summary collapse

Class Method Details

.clear_cache!Object



28
29
30
# File 'lib/pdfrb/arlington/loader.rb', line 28

def clear_cache!
  @cache.clear
end

.list_object_names(version: "latest") ⇒ Object

Enumerate the names of every object defined in version (without extensions). Useful for conformance sweeps.



34
35
36
37
38
39
40
41
# File 'lib/pdfrb/arlington/loader.rb', line 34

def list_object_names(version: "latest")
  dir = tsv_dir(version)
  return [] unless Dir.exist?(dir)

  Dir.children(dir).sort.filter_map do |f|
    f.sub(/\.tsv\z/, "") if f.end_with?(".tsv")
  end
end

.object_definition(name, version: "latest") ⇒ Object

Returns the ObjectDefinition for name (e.g. "Catalog"), reading and parsing the TSV the first time, then memoizing.



21
22
23
24
25
26
# File 'lib/pdfrb/arlington/loader.rb', line 21

def object_definition(name, version: "latest")
  cache_key = [version, name]
  return @cache[cache_key] if @cache.key?(cache_key)

  @cache[cache_key] = read_and_parse(name, version)
end