Module: TeachingPrintables::Gridable

Included in:
Templatable
Defined in:
lib/teaching_printables/gridable.rb

Overview

Creates grid layouts for flashcards or math sheets. Delegates Prawn methods to Prawn::Document.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#grid_column_widthObject



22
23
24
# File 'lib/teaching_printables/gridable.rb', line 22

def grid_column_width
  @grid_column_width ||= 100
end

#grid_columnsObject



16
17
18
# File 'lib/teaching_printables/gridable.rb', line 16

def grid_columns
  @grid_coluns ||= 2
end

#grid_gutterObject



19
20
21
# File 'lib/teaching_printables/gridable.rb', line 19

def grid_gutter
  @grid_gutter ||= 0
end

#grid_row_heightObject



25
26
27
# File 'lib/teaching_printables/gridable.rb', line 25

def grid_row_height
  @grid_row_height ||= 100
end

#grid_rowsObject



13
14
15
# File 'lib/teaching_printables/gridable.rb', line 13

def grid_rows
  @grid_rows ||= 2
end

Instance Method Details

#add_grid_content(content_array, options = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/teaching_printables/gridable.rb', line 36

def add_grid_content(content_array, options={})
  
  font_size = options[:font_size] || 60
  
  if (page_number ==0) || (options[:start_new_page] == true)
    start_new_page
  end

  
  @document.define_grid(grid_options)
  content_array.each_with_index {|obj,ind|
    
    if ind%(grid_rows*grid_columns)==0 && ind > 0
      @document.start_new_page
    end
  
    subs = ind2sub([grid_rows,grid_columns],ind%(grid_rows*grid_columns))
    @document.grid(subs[0],subs[1]).bounding_box do
      #place_contents_in_gridbox(obj)
      @document.text_box obj.to_s, align: :center, valign: :center, size: font_size, overflow: :shrink_to_fit
    end
  }
end

#place_contents_in_gridbox(obj) ⇒ Object



62
63
64
# File 'lib/teaching_printables/gridable.rb', line 62

def place_contents_in_gridbox(obj)
  text obj.to_s, fit: [grid_column_width,grid_row_height]
end

#update_grid_options(options) ⇒ Object



30
31
32
33
34
# File 'lib/teaching_printables/gridable.rb', line 30

def update_grid_options(options)
  options.each do |k,v|
    instance_variable_set("@grid_#{k}", options[k]) unless options[k].nil?
  end
end