Class: Pdfrb::Content::Operator::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/pdfrb/content/operator.rb

Overview

Base class. Subclasses override name and optionally invoke (read-side effect on the Processor) and serialize (write-side emit).

Class Method Summary collapse

Class Method Details

.invoke(_processor, *_operands) ⇒ Object

Read-side: default no-op. Subclasses override to mutate processor.graphics_state (or do painting / text / etc.).



77
# File 'lib/pdfrb/content/operator.rb', line 77

def invoke(_processor, *_operands); end

.nameObject

Raises:

  • (NotImplementedError)


56
57
58
# File 'lib/pdfrb/content/operator.rb', line 56

def name
  raise NotImplementedError, "#{self} must define self.name"
end

.registerObject



60
61
62
# File 'lib/pdfrb/content/operator.rb', line 60

def register
  Operator.register(self.name, self)
end

.serialize(serializer, *operands) ⇒ Object

Default serialize: join operands with spaces and append the operator keyword.



66
67
68
69
70
71
72
73
# File 'lib/pdfrb/content/operator.rb', line 66

def serialize(serializer, *operands)
  prefix = operands.empty? ? +"#{name}\n" : +""
  unless operands.empty?
    prefix << operands.map { |o| serializer.serialize(o) }.join(" ")
    prefix << " #{name}\n"
  end
  prefix
end