Class: Pdfrb::Model::PdfArray

Inherits:
Object
  • Object
show all
Extended by:
Cos::ArlingtonBacked
Includes:
Enumerable
Defined in:
lib/pdfrb/model/pdf_array.rb

Overview

Wraps a Ruby Array of PDF values. Subclass of Object so it can carry oid/gen when stored as an indirect object. Preserves insertion order and supports type-aware wrapping on access when nested inside a typed Dictionary (field-driven).

Instance Attribute Summary

Attributes inherited from Object

#document, #gen, #oid, #value

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Cos::ArlingtonBacked

arlington_object

Methods inherited from Object

define_type, #deref, #indirect?, #must_be_indirect?, #pdf_type, pdf_type

Constructor Details

#initialize(arr = [], oid: 0, gen: 0, document: nil) ⇒ PdfArray

Returns a new instance of PdfArray.



32
33
34
# File 'lib/pdfrb/model/pdf_array.rb', line 32

def initialize(arr = [], oid: 0, gen: 0, document: nil)
  super(Array(arr), oid: oid, gen: gen, document: document)
end

Class Method Details

.apply_arlington_definition(definition) ⇒ Object

ArlingtonBacked hook: array TSVs describe positional element types (keys "0", "1", ...), so keep the definition whole rather than merging per-field metadata.



17
18
19
# File 'lib/pdfrb/model/pdf_array.rb', line 17

def apply_arlington_definition(definition)
  @arlington_definition = definition
end

.arlington_definitionObject



22
23
24
# File 'lib/pdfrb/model/pdf_array.rb', line 22

def arlington_definition
  @arlington_definition
end

.element_field(index) ⇒ Object

FieldDefinition for the element at index, per the TSV.



27
28
29
# File 'lib/pdfrb/model/pdf_array.rb', line 27

def element_field(index)
  arlington_definition&.field_for(index.to_s)
end

Instance Method Details

#<<(v) ⇒ Object



54
55
56
57
# File 'lib/pdfrb/model/pdf_array.rb', line 54

def <<(v)
  @value << v
  self
end

#==(other) ⇒ Object



72
73
74
75
76
# File 'lib/pdfrb/model/pdf_array.rb', line 72

def ==(other)
  return @value == other.value if other.is_a?(PdfArray)

  @value == other
end

#[](idx) ⇒ Object



46
47
48
# File 'lib/pdfrb/model/pdf_array.rb', line 46

def [](idx)
  @value[idx]
end

#[]=(idx, v) ⇒ Object



50
51
52
# File 'lib/pdfrb/model/pdf_array.rb', line 50

def []=(idx, v)
  @value[idx] = v
end

#delete_at(idx) ⇒ Object



64
65
66
# File 'lib/pdfrb/model/pdf_array.rb', line 64

def delete_at(idx)
  @value.delete_at(idx)
end

#eachObject



36
37
38
39
# File 'lib/pdfrb/model/pdf_array.rb', line 36

def each(&)
  @value.each(&)
  self
end

#empty?Boolean

Returns:

  • (Boolean)


44
# File 'lib/pdfrb/model/pdf_array.rb', line 44

def empty?; @value.empty?; end

#inspectObject



78
79
80
# File 'lib/pdfrb/model/pdf_array.rb', line 78

def inspect
  "PdfArray[#{@value.inspect}]"
end

#lengthObject Also known as: size



41
# File 'lib/pdfrb/model/pdf_array.rb', line 41

def length; @value.length; end

#push(*items) ⇒ Object



59
60
61
62
# File 'lib/pdfrb/model/pdf_array.rb', line 59

def push(*items)
  @value.push(*items)
  self
end

#to_aObject



68
69
70
# File 'lib/pdfrb/model/pdf_array.rb', line 68

def to_a
  @value.dup
end