class Thinreports::Generator::PDF

Attributes

report[R]

@return [Thinreports::Report::Base]

Public Class Methods

new(report, security: nil) click to toggle source

@param [Thinreports::Report::Base] report @param [Hash] security (nil)

# File lib/thinreports/generator/pdf.rb, line 13
def initialize(report, security: nil)
  report.finalize

  @report = report.internal
  title = default_layout ? default_layout.format.report_title : nil

  @document = Document.new(title: title, security: security)
  @drawers = {}
end

Public Instance Methods

default_layout() click to toggle source
# File lib/thinreports/generator/pdf.rb, line 30
def default_layout
  report.default_layout
end
generate(filename = nil) click to toggle source

@param [String, nil] filename @return [String, nil]

# File lib/thinreports/generator/pdf.rb, line 25
def generate(filename = nil)
  draw_report
  filename ? @document.render_file(filename) : @document.render
end

Private Instance Methods

draw_page(page) click to toggle source
# File lib/thinreports/generator/pdf.rb, line 42
def draw_page(page)
  return @document.add_blank_page if page.blank?

  format = page.layout.format
  @document.start_new_page(format)

  drawer(format).draw(page)
end
draw_report() click to toggle source
# File lib/thinreports/generator/pdf.rb, line 36
def draw_report
  report.pages.each do |page|
    draw_page(page)
  end
end
drawer(format) click to toggle source
# File lib/thinreports/generator/pdf.rb, line 51
def drawer(format)
  @drawers[format.identifier] ||= Drawer::Page.new(@document, format)
end