Class: Sablon::Processor::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/sablon/processor/document.rb

Defined Under Namespace

Classes: Block, InlineParagraphBlock, OperationConstruction, ParagraphBlock, RowBlock

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parser) ⇒ Document

Returns a new instance of Document.



16
17
18
# File 'lib/sablon/processor/document.rb', line 16

def initialize(parser)
  @parser = parser
end

Class Method Details

.parserObject



12
13
14
# File 'lib/sablon/processor/document.rb', line 12

def self.parser
  @parser ||= Sablon::Parser::MailMerge.new
end

.process(xml_node, context, properties = {}) ⇒ Object



5
6
7
8
9
10
# File 'lib/sablon/processor/document.rb', line 5

def self.process(xml_node, context, properties = {})
  processor = new(parser)
  processor.manipulate xml_node, Sablon::Context.transform(context)
  processor.write_properties xml_node, properties if properties.any?
  xml_node
end

Instance Method Details

#manipulate(xml_node, context) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/sablon/processor/document.rb', line 20

def manipulate(xml_node, context)
  operations = build_operations(@parser.parse_fields(xml_node))
  operations.each do |step|
    step.evaluate context
  end
  cleanup(xml_node)
  xml_node
end

#write_properties(xml_node, properties) ⇒ Object



29
30
31
32
33
34
# File 'lib/sablon/processor/document.rb', line 29

def write_properties(xml_node, properties)
  if start_page_number = properties[:start_page_number] || properties["start_page_number"]
    section_properties = SectionProperties.from_document(xml_node)
    section_properties.start_page_number = start_page_number
  end
end