Class: Prawn::Reference

Inherits:
Object
  • Object
show all
Defined in:
lib/prawn/reference.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, data, &block) ⇒ Reference

Returns a new instance of Reference.



18
19
20
21
22
23
24
25
# File 'lib/prawn/reference.rb', line 18

def initialize(id, data, &block)
  @identifier = id 
  @gen        = 0       
  @data       = data     
  @compressed = false
  @on_encode  = block
  @stream     = nil
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



15
16
17
# File 'lib/prawn/reference.rb', line 15

def data
  @data
end

#genObject

Returns the value of attribute gen.



15
16
17
# File 'lib/prawn/reference.rb', line 15

def gen
  @gen
end

#identifierObject (readonly)

Returns the value of attribute identifier.



16
17
18
# File 'lib/prawn/reference.rb', line 16

def identifier
  @identifier
end

#offsetObject

Returns the value of attribute offset.



15
16
17
# File 'lib/prawn/reference.rb', line 15

def offset
  @offset
end

#streamObject

Returns the value of attribute stream.



15
16
17
# File 'lib/prawn/reference.rb', line 15

def stream
  @stream
end

Instance Method Details

#<<(data) ⇒ Object



37
38
39
40
# File 'lib/prawn/reference.rb', line 37

def <<(data)
  raise 'Cannot add data to a stream that is compressed' if @compressed
  (@stream ||= "") << data  
end

#compress_streamObject



46
47
48
49
50
51
# File 'lib/prawn/reference.rb', line 46

def compress_stream
  @stream = Zlib::Deflate.deflate(@stream)
  @data[:Filter] = :FlateDecode
  @data[:Length] ||= @stream.length
  @compressed = true
end

#compressed?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/prawn/reference.rb', line 53

def compressed?
  @compressed
end

#objectObject



27
28
29
30
31
32
33
34
35
# File 'lib/prawn/reference.rb', line 27

def object 
  @on_encode.call(self) if @on_encode
  output = "#{@identifier} #{gen} obj\n" <<
           Prawn::PdfObject(data) << "\n"
  if @stream
    output << "stream\n" << @stream << "\nendstream\n" 
  end
  output << "endobj\n"
end

#replace(other_ref) ⇒ Object

Replaces the data and stream with that of other_ref. Preserves compressed status.



59
60
61
62
63
# File 'lib/prawn/reference.rb', line 59

def replace(other_ref)
  @data       = other_ref.data
  @stream     = other_ref.stream
  @compressed = other_ref.compressed?
end

#to_sObject



42
43
44
# File 'lib/prawn/reference.rb', line 42

def to_s            
  "#{@identifier} #{gen} R"
end