Class: Pdfrb::Arlington::ObjectDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/pdfrb/arlington/object_definition.rb

Overview

One TSV file = one PDF object type definition. Holds the list of FieldDefinitions and provides lookup by key (with wildcard support for map-style objects).

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, version: "latest", fields: []) ⇒ ObjectDefinition

Returns a new instance of ObjectDefinition.



11
12
13
14
15
16
# File 'lib/pdfrb/arlington/object_definition.rb', line 11

def initialize(name:, version: "latest", fields: [])
  @name = name
  @version = version
  @fields = fields
  freeze
end

Instance Attribute Details

#fieldsObject (readonly)

Returns the value of attribute fields.



9
10
11
# File 'lib/pdfrb/arlington/object_definition.rb', line 9

def fields
  @fields
end

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/pdfrb/arlington/object_definition.rb', line 9

def name
  @name
end

#versionObject (readonly)

Returns the value of attribute version.



9
10
11
# File 'lib/pdfrb/arlington/object_definition.rb', line 9

def version
  @version
end

Class Method Details

.from_tsv(rows, name:, version:) ⇒ Object



18
19
20
21
# File 'lib/pdfrb/arlington/object_definition.rb', line 18

def self.from_tsv(rows, name:, version:)
  fields = rows.map { |row| FieldDefinition.from_row(row) }
  new(name: name, version: version, fields: fields)
end

Instance Method Details

#each_field(&block) ⇒ Object



23
24
25
# File 'lib/pdfrb/arlington/object_definition.rb', line 23

def each_field(&block)
  @fields.each(&block)
end

#field_for(key) ⇒ Object Also known as: []



27
28
29
# File 'lib/pdfrb/arlington/object_definition.rb', line 27

def field_for(key)
  @fields.find { |f| f.key == key.to_s }
end

#has_wildcard?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/pdfrb/arlington/object_definition.rb', line 36

def has_wildcard?
  @fields.any? { |f| f.key == "*" }
end

#keysObject



32
33
34
# File 'lib/pdfrb/arlington/object_definition.rb', line 32

def keys
  @fields.map(&:key)
end

#map?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/pdfrb/arlington/object_definition.rb', line 40

def map?
  @fields.first&.key == "*"
end