Class: ExcelTemplating::Renderer

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/excel_templating/renderer.rb

Overview

Render class for ExcelTemplating Documents. Used by the Document to render the defined document with the data to a new file. Responsible for reading the template and applying the data to it

Defined Under Namespace

Classes: MustacheRenderer

Instance Method Summary collapse

Constructor Details

#initialize(document) ⇒ Renderer

Returns a new instance of Renderer.

Parameters:



11
12
13
14
# File 'lib/excel_templating/renderer.rb', line 11

def initialize(document)
  @template_document = document
  @data_source_registry = document.class.data_source_registry
end

Instance Method Details

#render {|spreadsheet.path| ... } ⇒ Object

Render the document provided. Yields the path to the tempfile created.

Yields:

  • (spreadsheet.path)


17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/excel_templating/renderer.rb', line 17

def render
  @spreadsheet = ExcelAbstraction::SpreadSheet.new(format: :xlsx)
  @template = Roo::Spreadsheet.open(template_path)
  @registry_renderer = data_source_registry.renderer(data: data[:all_sheets])
  apply_document_level_items
  apply_data_to_sheets
  protect_spreadsheet
  registry_renderer.write_sheet(@spreadsheet.workbook)

  @spreadsheet.close
  yield(spreadsheet.path)
end