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