class DotGrid::Document

Attributes

document[RW]
file_name[RW]
margin[RW]
orientation[RW]
page_size[RW]
page_types[RW]
pages[RW]
pdf[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/dot_grid/document.rb, line 14
def initialize(params = {})
  @file_name = params[:file_name] || "dotgrid.pdf"
  @page_size = params[:page_size] ? parse_page_size(params[:page_size]) : "LETTER"
  @orientation = params[:orientation] ? params[:orientation].downcase.to_sym : :portrait
  @margin = params[:margin] || 0.0
  @page_types = params[:page_types] ? params[:page_types].downcase.split(",").map { |w| w.strip } : ["planner"]

  @pdf = Prawn::Document.new(margin: margin, page_size: page_size, skip_page_creation: true, page_layout: orientation)
  @pages = create_pages(params.merge({pdf: pdf}))
end

Public Instance Methods

create_pages(params) click to toggle source
# File lib/dot_grid/document.rb, line 30
def create_pages(params)
  page_types.map do |p|
    DotGrid::Page::Factory.build(p, params.clone)
  end
end
generate() click to toggle source
# File lib/dot_grid/document.rb, line 36
def generate
  pages.each { |page| page.generate }
  pdf.render_file file_name
end
parse_page_size(page_size) click to toggle source
# File lib/dot_grid/document.rb, line 25
def parse_page_size(page_size)
  return page_size unless p = /(?'w'\d+\.{0,1}\d*)x(?'h'\d+\.{0,1}\d*)(?'u'[a-z]{2})/.match(page_size)
  return [p[:w].to_f.send(p[:u]), p[:h].to_f.send(p[:u])]
end