teaching_printables 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 917c84946f09309acdaf431d40d42794be9b5c29
4
- data.tar.gz: 66cf3313c463a6cce11c5e19724e9664e398b154
3
+ metadata.gz: d8f49accf9c002ca3a847cbd08acbdb200f075fb
4
+ data.tar.gz: 8e7034e6951893b3970f229364d1a4bec9675ba1
5
5
  SHA512:
6
- metadata.gz: ed06053e013045c4b764d037c4b4a316130bf4ff2d69c29b7427617c6644629ce90d588e5681c40cd2c285aa2589975c80644ed6903a1ffcf26df5412f79b474
7
- data.tar.gz: 54b68331bbd9945395de256ed6d7e2559a0195061abc6f7ae386f70e4cc5a8fae7101e4d524571648bcb715a8ba493d14f4bb50edcbf7a052417b20553389c46
6
+ metadata.gz: 0a2d3fd7ab0e5ed89088b554a910d20973ddd05ad5fcd9f7489734bc7bbd4a7b0799d7d0e07c73525290bf701fa1a98358f4b8195309bdc07751ec14860663d3
7
+ data.tar.gz: 039ab9726a74fa20561b2586a21b0e23b02eab5111ff22ba5fef0e85065ca8077383798a07d1ae229ed1bd4333fddca675b3226981fb0185c5ed72a935e857fe
@@ -5,6 +5,7 @@ require 'prawn/measurement_extensions'
5
5
  require_relative "teaching_printables/quad_rulable"
6
6
  require_relative "teaching_printables/templatable"
7
7
  require_relative "teaching_printables/gridable"
8
+ require_relative "teaching_printables/shapeable"
8
9
  require_relative "teaching_printables/factory"
9
10
  require_relative "teaching_printables/tp_document"
10
11
  require_relative "teaching_printables/version"
@@ -43,6 +43,41 @@ module TeachingPrintables
43
43
  doc.save_as(filename)
44
44
  end
45
45
 
46
+ def Factory.base_tens_shapes_paper(npages,rule_value=1,rule_unit='cm',filename='output.pdf')
47
+ npages = npages.to_i
48
+ rule = rule_unit.empty? ? rule_value.to_f : rule_value.to_f.send(rule_unit)
49
+
50
+ if !filename || filename.empty?
51
+ filename = 'output.pdf'
52
+ end
53
+
54
+ doc = TeachingPrintables::TPDocument.new
55
+ class << doc
56
+ include Shapeable
57
+ include QuadRulable
58
+ end
59
+ npages.times do |i|
60
+ doc.create_quad_rule(rule_unit: rule, start_new_page: true)
61
+ doc.create_tens_and_ones_shapes(rule_unit: rule, start_new_page: false)
62
+ doc.text_box "Name:", :at => [2.cm, doc.bounds.top - 1.cm]
63
+ doc.line_width = 2
64
+ doc.stroke_color = "000000"
65
+ doc.stroke_line [3.5.cm,doc.bounds.top - 1.5.cm], [10.cm,doc.bounds.top - 1.5.cm]
66
+ doc.text_box "Date:", :at => [12.cm, doc.bounds.top - 1.cm]
67
+ doc.stroke_line [13.cm,doc.bounds.top - 1.5.cm], [20.cm,doc.bounds.top - 1.5.cm]
68
+ end
69
+ doc.save_as(filename)
70
+
71
+ end
72
+
73
+ def Factory.centimeter_number_lines(output_file_name = "output.pdf")
74
+ doc = TeachingPrintables::TPDocument.new
75
+ class << doc
76
+ include Gridable
77
+ end
78
+ update_grid_options(grid_rows: 5, grid_columns: 1)
79
+
80
+ end
46
81
 
47
82
  def Factory.hundreds_grid(output_file_name="output.pdf")
48
83
  qr=TeachingPrintables::TPDocument.new
@@ -34,7 +34,7 @@ module TeachingPrintables
34
34
  start_new_page
35
35
  end
36
36
 
37
- svg(str,width: ncols*rule_unit, height: nrows*rule_unit, at:[0,rule_height+1]) #position: :center, vposition: :center)
37
+ svg(str,width: ncols*rule_unit, height: nrows*rule_unit, at:[0,rule_height]) #position: :center, vposition: :center)
38
38
 
39
39
  end
40
40
 
@@ -0,0 +1,78 @@
1
+ require_relative "svg/svg_components"
2
+ require "prawn-svg"
3
+ module TeachingPrintables
4
+ # Creates quadrille rulings on paper. Delegates Prawn methods to Prawn::Document.
5
+
6
+ module Shapeable
7
+ attr_accessor :rule_unit
8
+
9
+ def rule_unit
10
+ @rule_unit ||= 1.cm
11
+ end
12
+ def rule_height
13
+ bounds.top - bounds.bottom
14
+ end
15
+ def rule_width
16
+ bounds.right - bounds.left
17
+ end
18
+
19
+ def create_tens_and_ones_shapes(options={})
20
+ # Start at position 3cm, 3cm from top left corner. Keep drawing shapes until end of page
21
+
22
+ fill_colors_enum = %W[red blue green orange].cycle
23
+
24
+ if (page_number ==0) || (options[:start_new_page] == true)
25
+ start_new_page
26
+ end
27
+
28
+
29
+ shape_position = [3.cm, rule_height-2.cm]
30
+ page_height = rule_height - 4.cm
31
+ remaining_rows = (page_height / rule_unit).floor
32
+ shapes_rows_arr = []
33
+
34
+ while remaining_rows > 2
35
+ shapes_rows_arr<<rand(3..[11,remaining_rows].min)
36
+ remaining_rows = remaining_rows-shapes_rows_arr.last
37
+ end
38
+
39
+ shapes_rows_arr.each {|nrows|
40
+ ones = rand(0..9)
41
+ svg( SVGComponents::tens_and_ones_shape_svg(nrows-2,ones,fill_color=fill_colors_enum.next),
42
+ width: 10*rule_unit,
43
+ height: (nrows-1)*rule_unit,
44
+ at: [shape_position[0],shape_position[1]-rule_unit])
45
+
46
+ @document.fill_color = "FFFFFF"
47
+ fill_and_stroke_rectangle [14.cm, shape_position[1]-1*rule_unit], 2.cm, 2.cm
48
+ fill_and_stroke_rectangle [16.cm, shape_position[1]-1*rule_unit], 2.cm, 2.cm
49
+ @document.fill_color = "000000"
50
+ text_box "tens", :at => [14.cm, shape_position[1]-1*rule_unit], :width => 2.cm, :align => :center
51
+ text_box "ones", :at => [16.cm, shape_position[1]-1*rule_unit], :width => 2.cm, :align => :center
52
+
53
+
54
+ if ones == 0
55
+ shape_position[1] = shape_position[1]-(nrows-1).cm
56
+ else
57
+ shape_position[1] = shape_position[1]-nrows.cm
58
+ end
59
+
60
+ }
61
+
62
+ end
63
+
64
+
65
+ private
66
+ def parse_options(options)
67
+ allowed_parameters = [:rule_unit]
68
+ options.each do |k,v|
69
+ puts "@#{k.to_s}"
70
+ instance_variable_set("@#{k.to_s}",v) if allowed_parameters.include?(k)
71
+ end
72
+ end
73
+
74
+
75
+
76
+ end
77
+
78
+ end
@@ -71,6 +71,7 @@ class SVGComponents
71
71
  fill: "black"
72
72
  }
73
73
  def label(options={})
74
+ options = DEFAULT_LABEL.merge(options)
74
75
  "<text x=\"#{options[:xpos].to_s}\" y=\"#{options[:ypos].to_s}\" font-size=\"#{options[:font_size].to_s}\" text-anchor=\"#{options[:text_anchor]}\" fill=\"#{options[:fill]}\">#{options[:text]}</text>"
75
76
  end
76
77
 
@@ -91,6 +92,61 @@ class SVGComponents
91
92
  "</svg>"
92
93
  end
93
94
 
95
+ def number_line(startpt,endpt)
96
+ points_per_unit = 40
97
+ width = (startpt-endpt+1)*points_per_unit
98
+ height = 2*points_per_unit
99
+ str = header(width,height)
100
+ horizontal_line_opts = {
101
+ x1: 0,
102
+ x2: width,
103
+ y1: points_per_unit,
104
+ y2: points_per_unit,
105
+ stroke: "gray",
106
+ stroke_width: 0.5,
107
+ stroke_dasharray: "none"
108
+ }
109
+ str << line(horizontal_line_opts)
110
+
111
+ # make vertical lines
112
+ for n in (startpt..endpt)
113
+ verticle_line_opts = {
114
+ x1: n*points_per_unit,
115
+ x2: n*points_per_unit,
116
+ y1: points_per_unit,
117
+ y2: height,
118
+ stroke: "gray",
119
+ stroke_width: 0.5,
120
+ stroke_dasharray: "none"
121
+ }
122
+ str << line(verticle_line_opts)
123
+ str << label(xpos: n*points_per_unit, ypos: 0, text: "#{n}")
124
+ end
125
+ str<<footer
126
+
127
+ end
128
+
129
+ def tens_and_ones_shape_svg(tens,ones,fill_color="red")
130
+ points_per_box = 40
131
+
132
+ ncols = 10
133
+ nrows = tens
134
+
135
+ width = ncols*points_per_box
136
+ height = (nrows+1)*points_per_box
137
+ str = header(width,height)
138
+
139
+ polygon_points = "\"0 0, #{width} 0, " +
140
+ "#{width} #{height-points_per_box}, " +
141
+ "#{ones*points_per_box} #{height-points_per_box}, " +
142
+ "#{ones*points_per_box} #{height}, " +
143
+ "0 #{height}, " +
144
+ "0 0\""
145
+ str<<"<polygon points=#{polygon_points} fill=\"#{fill_color}\" stroke=\"#000\"/>"
146
+
147
+ str<<footer
148
+ end
149
+
94
150
  def quad_ruled_grid(m_rows,n_columns)
95
151
 
96
152
  points_per_box = 40
@@ -1,3 +1,3 @@
1
1
  module TeachingPrintables
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teaching_printables
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jen Dobson
@@ -82,6 +82,7 @@ files:
82
82
  - lib/teaching_printables/factory.rb
83
83
  - lib/teaching_printables/gridable.rb
84
84
  - lib/teaching_printables/quad_rulable.rb
85
+ - lib/teaching_printables/shapeable.rb
85
86
  - lib/teaching_printables/svg/svg_components.rb
86
87
  - lib/teaching_printables/svg/svg_creator.rb
87
88
  - lib/teaching_printables/svg/svg_helpers.rb