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
- .clear_cache! ⇒ Object
-
.list_object_names(version: "latest") ⇒ Object
Enumerate the names of every object defined in
version(without extensions). -
.object_definition(name, version: "latest") ⇒ Object
Returns the ObjectDefinition for
name(e.g. "Catalog"), reading and parsing the TSV the first time, then memoizing.
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 |