dot_grid 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/base +13 -2
- data/bin/dotgrid +4 -1
- data/lib/dot_grid/generator.rb +15 -3
- data/lib/dot_grid/page/checkerboard.rb +20 -0
- data/lib/dot_grid/page/dot_grid.rb +22 -0
- data/lib/dot_grid/page/grid.rb +21 -0
- data/lib/dot_grid/page/horizontal_rule.rb +20 -0
- data/lib/dot_grid/page/page.rb +40 -0
- data/lib/dot_grid/page/planner.rb +118 -0
- data/lib/dot_grid/pattern/checkerboard.rb +17 -0
- data/lib/dot_grid/pattern/dot_grid.rb +22 -0
- data/lib/dot_grid/pattern/grid.rb +15 -0
- data/lib/dot_grid/pattern/horizontal_rule.rb +13 -0
- data/lib/dot_grid/pattern/pattern.rb +37 -0
- data/lib/dot_grid/version.rb +1 -1
- data/lib/dot_grid.rb +13 -3
- data/spec/lib/dot_grid/generator_spec.rb +21 -5
- data/spec/lib/dot_grid/page/checkerboard_spec.rb +19 -0
- data/spec/lib/dot_grid/page/dot_grid_spec.rb +28 -0
- data/spec/lib/dot_grid/page/grid_spec.rb +28 -0
- data/spec/lib/dot_grid/page/horizontal_rule_spec.rb +28 -0
- data/spec/lib/dot_grid/{planner_spec.rb → page/planner_spec.rb} +18 -18
- data/spec/lib/dot_grid/pattern/checkerboard_spec.rb +39 -0
- data/spec/lib/dot_grid/pattern/dot_grid_spec.rb +26 -0
- data/spec/lib/dot_grid/pattern/grid_spec.rb +32 -0
- data/spec/lib/dot_grid/pattern/horizontal_rule_spec.rb +26 -0
- data/spec/lib/dot_grid/pattern/pattern_spec.rb +39 -0
- data/spec/spec_helper.rb +2 -1
- metadata +33 -11
- data/lib/dot_grid/grid.rb +0 -29
- data/lib/dot_grid/page.rb +0 -34
- data/lib/dot_grid/planner.rb +0 -116
- data/spec/lib/dot_grid/grid_spec.rb +0 -19
- data/spec/lib/dot_grid/page_spec.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54a925c03705950b5f01d2c6cb92ee1bc9f3e023
|
4
|
+
data.tar.gz: 4511d7eea919e7397faa5a181a94bd8b20aea0c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c4cb6d4f14c07903142d916f181fe23fefb120b988fbc1923223d1b73407bfecc479b034b7e42137ebf0fb88055c97db31698e5b431dbf03b336b64d6789a06
|
7
|
+
data.tar.gz: ab5e6792388c751dbf3b0e463d613689b8bcffd42b4a340ce0f818cd3b871165a4837375a2b6f9ea2a9a2122d79cc5ecc84615e44a181fef092bd2d84198ff28
|
data/base
CHANGED
@@ -1,4 +1,15 @@
|
|
1
1
|
# Base planner
|
2
|
-
bin/dotgrid -f
|
2
|
+
bin/dotgrid -f planner_w5_c2dfff_no_grid.pdf --no-dot-grid --grid-color CFBAEC --dot-weight 0.5 -m 0.0 --planner --planner-color-1 dddddd --planner-color-2 C2DFFF
|
3
|
+
bin/dotgrid -f planner_w75_c2dfff_no_grid.pdf --no-dot-grid --grid-color CFBAEC --dot-weight 0.75 -m 0.0 --planner --planner-color-1 dddddd --planner-color-2 C2DFFF
|
3
4
|
|
4
|
-
|
5
|
+
# Dot grid
|
6
|
+
bin/dotgrid -f dot_grid_c2dfff.pdf --dot-grid --spacing 5 --grid-color CFBAEC -m 0.0
|
7
|
+
|
8
|
+
# Regular grid
|
9
|
+
bin/dotgrid -f grid_c2dfff.pdf --grid --no-dot-grid --spacing 5 --grid-color CFBAEC -m 0.0
|
10
|
+
|
11
|
+
# Horizontal rule
|
12
|
+
bin/dotgrid -f horizontal_rule_c2dfff.pdf --horizontal-rule --no-dot-grid --spacing 5 --grid-color CFBAEC -m 0.0
|
13
|
+
|
14
|
+
# Checkerboard
|
15
|
+
bin/dotgrid -f checkerboard_c2dfff.pdf --checkerboard --no-dot-grid --spacing 5 --grid-color CFBAEC -m 0.0
|
data/bin/dotgrid
CHANGED
@@ -10,7 +10,7 @@ require_all 'lib'
|
|
10
10
|
|
11
11
|
opts = Trollop::options do
|
12
12
|
opt :file_name, "File Name", :type => :string, :default => "dotgrid.pdf"
|
13
|
-
opt :
|
13
|
+
opt :dot_grid, "Add a Dot Grid Page", default: true
|
14
14
|
opt :dot_weight, "Dot Weight", :type => :float, :default => 1.5
|
15
15
|
opt :margin, "Border", :type => :float, :default => 0.5
|
16
16
|
opt :page_size, "Page Size (LEGAL, LETTER)", :type => :string, :default => "LETTER"
|
@@ -18,6 +18,9 @@ opts = Trollop::options do
|
|
18
18
|
opt :spacing, "Dot Spacing (mm)", :type => :integer, :default => 5
|
19
19
|
opt :pages, "Number of pages", :type => :integer, :default => 1
|
20
20
|
opt :planner, "Add a Planner Page"
|
21
|
+
opt :grid, "Add a Regular Grid page"
|
22
|
+
opt :horizontal_rule, "Add a Horizontal Rule page"
|
23
|
+
opt :checkerboard, "Add a Checkerboard page"
|
21
24
|
opt :planner_color_1, "Planner Left and Footer color", type: :string, default: "CCCCCC"
|
22
25
|
opt :planner_color_2, "Planner Right color", type: :string, default: "0099ff"
|
23
26
|
end
|
data/lib/dot_grid/generator.rb
CHANGED
@@ -8,11 +8,16 @@ module DotGrid
|
|
8
8
|
:file_name,
|
9
9
|
:page_size,
|
10
10
|
:grid,
|
11
|
+
:dot_grid_page,
|
11
12
|
:grid_page,
|
12
13
|
:margin,
|
13
14
|
:pages,
|
14
15
|
:planner,
|
15
|
-
:planner_page
|
16
|
+
:planner_page,
|
17
|
+
:horizontal_rule,
|
18
|
+
:horizontal_rule_page,
|
19
|
+
:checkerboard,
|
20
|
+
:checkerboard_page,
|
16
21
|
)
|
17
22
|
|
18
23
|
def initialize(params)
|
@@ -22,14 +27,21 @@ module DotGrid
|
|
22
27
|
@pages = params[:pages] || 1
|
23
28
|
@pdf = Prawn::Document.new(margin: margin, page_size: page_size, skip_page_creation: true)
|
24
29
|
params[:pdf] = pdf
|
25
|
-
|
26
|
-
@
|
30
|
+
|
31
|
+
@dot_grid_page = DotGrid::Page::DotGrid.new(params) if params[:dot_grid]
|
32
|
+
@planner_page = DotGrid::Page::Planner.new(params) if params[:planner]
|
33
|
+
@grid_page = DotGrid::Page::Grid.new(params) if params[:grid]
|
34
|
+
@horizontal_rule_page = DotGrid::Page::HorizontalRule.new(params) if params[:horizontal_rule]
|
35
|
+
@checkerboard_page = DotGrid::Page::Checkerboard.new(params) if params[:checkerboard]
|
27
36
|
end
|
28
37
|
|
29
38
|
def generate
|
30
39
|
(1..pages).each do |page|
|
31
40
|
planner_page.generate if planner_page
|
32
41
|
grid_page.generate if grid_page
|
42
|
+
dot_grid_page.generate if dot_grid_page
|
43
|
+
horizontal_rule_page.generate if horizontal_rule_page
|
44
|
+
checkerboard_page.generate if checkerboard_page
|
33
45
|
end
|
34
46
|
pdf.render_file file_name
|
35
47
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Page
|
3
|
+
class Checkerboard < Page
|
4
|
+
attr_accessor(
|
5
|
+
:pattern,
|
6
|
+
)
|
7
|
+
|
8
|
+
def initialize(params)
|
9
|
+
super
|
10
|
+
@pattern = ::DotGrid::Pattern::Checkerboard.new(params.merge!(:bounds => pdf.bounds))
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate
|
14
|
+
super
|
15
|
+
pattern.draw
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Page
|
3
|
+
class DotGrid < Page
|
4
|
+
attr_accessor(
|
5
|
+
:dot_weight,
|
6
|
+
:grid_color,
|
7
|
+
:spacing,
|
8
|
+
:pattern
|
9
|
+
)
|
10
|
+
|
11
|
+
def initialize(params)
|
12
|
+
super
|
13
|
+
@pattern = ::DotGrid::Pattern::DotGrid.new(params.merge!(:bounds => pdf.bounds))
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate
|
17
|
+
super
|
18
|
+
pattern.draw
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Page
|
3
|
+
class Grid < Page
|
4
|
+
attr_accessor(
|
5
|
+
:grid_color,
|
6
|
+
:spacing,
|
7
|
+
:pattern
|
8
|
+
)
|
9
|
+
|
10
|
+
def initialize(params)
|
11
|
+
super
|
12
|
+
@pattern = ::DotGrid::Pattern::Grid.new(params.merge!(:bounds => pdf.bounds))
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate
|
16
|
+
super
|
17
|
+
pattern.draw
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Page
|
3
|
+
class HorizontalRule < Page
|
4
|
+
attr_accessor(
|
5
|
+
:pattern
|
6
|
+
)
|
7
|
+
|
8
|
+
def initialize(params)
|
9
|
+
super
|
10
|
+
@pattern = ::DotGrid::Pattern::HorizontalRule.new(params.merge!(:bounds => pdf.bounds))
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate
|
14
|
+
super
|
15
|
+
pattern.draw
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Page
|
3
|
+
class Page
|
4
|
+
attr_accessor(
|
5
|
+
:pdf,
|
6
|
+
:dot_weight,
|
7
|
+
:grid_color,
|
8
|
+
:spacing
|
9
|
+
)
|
10
|
+
|
11
|
+
def initialize(params)
|
12
|
+
@pdf = params[:pdf]
|
13
|
+
@dot_weight = params[:dot_weight] || 1.5
|
14
|
+
@grid_color = params[:grid_color] || "B3B3B3"
|
15
|
+
@spacing = params[:spacing] ? params[:spacing].mm : 5.mm
|
16
|
+
end
|
17
|
+
|
18
|
+
def generate
|
19
|
+
pdf.start_new_page
|
20
|
+
end
|
21
|
+
|
22
|
+
def page_width
|
23
|
+
pdf.bounds.width
|
24
|
+
end
|
25
|
+
|
26
|
+
def page_height
|
27
|
+
pdf.bounds.height
|
28
|
+
end
|
29
|
+
|
30
|
+
def draw_dot_grid(rows, columns, left_start, height_start)
|
31
|
+
pdf.fill_color grid_color
|
32
|
+
(1..rows).each do |row|
|
33
|
+
(1..columns).each do |col|
|
34
|
+
pdf.fill_circle [left_start + (col-1)*spacing, height_start - spacing - (row-1)*spacing], dot_weight
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Page
|
3
|
+
class Planner < Page
|
4
|
+
attr_accessor(
|
5
|
+
:planner_color_1,
|
6
|
+
:planner_color_2
|
7
|
+
)
|
8
|
+
|
9
|
+
HEADER_HEIGHT = 0.05 # 5.0 %
|
10
|
+
HEADER_LEFT_START = 0.05 # 5.0%
|
11
|
+
SQUARE_GRID_WIDTH = 0.30 # 30.0%
|
12
|
+
HEADER_GAP_WIDTH = 0.03 # 3.0%
|
13
|
+
DOT_GRID_COLUMN_WIDTH = 0.62 # 62%
|
14
|
+
SQUARE_GRID_ROWS_WIDTH = 0.80 # 80%
|
15
|
+
FOOT_HEIGHT_RATIO = 2 # Ratio of footer to header
|
16
|
+
|
17
|
+
def initialize(params)
|
18
|
+
super
|
19
|
+
@planner_color_1 = params[:planner_color_1] || "CCCCCC"
|
20
|
+
@planner_color_2 = params[:planner_color_2] || "0099ff"
|
21
|
+
end
|
22
|
+
|
23
|
+
def header_height
|
24
|
+
HEADER_HEIGHT * page_height
|
25
|
+
end
|
26
|
+
|
27
|
+
def square_grid_columns
|
28
|
+
((SQUARE_GRID_WIDTH * page_width) / spacing).floor
|
29
|
+
end
|
30
|
+
|
31
|
+
def header_left_color
|
32
|
+
planner_color_1
|
33
|
+
end
|
34
|
+
|
35
|
+
def header_left_start
|
36
|
+
HEADER_LEFT_START * page_width
|
37
|
+
end
|
38
|
+
|
39
|
+
def header_left_width
|
40
|
+
square_grid_columns*spacing
|
41
|
+
end
|
42
|
+
|
43
|
+
def header_gap_start
|
44
|
+
header_left_start + header_left_width
|
45
|
+
end
|
46
|
+
|
47
|
+
def header_gap_width
|
48
|
+
page_width * HEADER_GAP_WIDTH
|
49
|
+
end
|
50
|
+
|
51
|
+
def dot_grid_columns
|
52
|
+
(page_width * DOT_GRID_COLUMN_WIDTH / spacing).floor + 2
|
53
|
+
end
|
54
|
+
|
55
|
+
def dot_grid_rows
|
56
|
+
square_grid_rows + 1
|
57
|
+
end
|
58
|
+
|
59
|
+
def header_right_color
|
60
|
+
planner_color_2
|
61
|
+
end
|
62
|
+
|
63
|
+
def header_right_start
|
64
|
+
header_gap_start + header_gap_width
|
65
|
+
end
|
66
|
+
|
67
|
+
def header_right_width
|
68
|
+
page_width - header_right_start
|
69
|
+
end
|
70
|
+
|
71
|
+
def square_grid_rows
|
72
|
+
(page_height * SQUARE_GRID_ROWS_WIDTH / spacing).floor
|
73
|
+
end
|
74
|
+
|
75
|
+
def footer_height
|
76
|
+
header_height * FOOT_HEIGHT_RATIO
|
77
|
+
end
|
78
|
+
|
79
|
+
def generate
|
80
|
+
super
|
81
|
+
|
82
|
+
# Header left
|
83
|
+
draw_header(header_left_start, header_left_width, header_height, header_left_color)
|
84
|
+
|
85
|
+
# Header right
|
86
|
+
draw_header(header_right_start, header_right_width, header_height, header_right_color)
|
87
|
+
|
88
|
+
# Square Grid Left
|
89
|
+
draw_square_grid_left(square_grid_rows, square_grid_columns, header_left_color, header_left_start, page_height - header_height - spacing, spacing)
|
90
|
+
|
91
|
+
# Dot Grid Right
|
92
|
+
draw_dot_grid(dot_grid_rows, dot_grid_columns, header_right_start, page_height-header_height)
|
93
|
+
|
94
|
+
# Footer
|
95
|
+
draw_footer(planner_color_1, header_left_start, footer_height, page_width-header_left_start)
|
96
|
+
end
|
97
|
+
|
98
|
+
def draw_header(header_start, header_width, header_height, header_color)
|
99
|
+
pdf.fill_color header_color
|
100
|
+
pdf.fill_rectangle [header_start, page_height], header_width, header_height
|
101
|
+
end
|
102
|
+
|
103
|
+
def draw_square_grid_left(square_grid_rows, square_grid_columns, grid_color, left_start, height_start, spacing)
|
104
|
+
pdf.fill_color grid_color
|
105
|
+
(1..square_grid_rows).each do |row|
|
106
|
+
(1..square_grid_columns).each do |col|
|
107
|
+
pdf.fill_rectangle [left_start + (col-1)*spacing, height_start - (row-1)*spacing], spacing-1 ,spacing-1
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def draw_footer(footer_color, footer_start, footer_height, footer_width)
|
113
|
+
pdf.fill_color footer_color
|
114
|
+
pdf.fill_rectangle [footer_start, footer_height], footer_width, footer_height
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Pattern
|
3
|
+
class Checkerboard < Pattern
|
4
|
+
|
5
|
+
def draw
|
6
|
+
pdf.fill_color grid_color
|
7
|
+
(0..rows).each do |row|
|
8
|
+
(0..columns).each do |column|
|
9
|
+
if (row % 2 == 0 && column % 2 == 0) || (row % 2 == 1 && column % 2 == 1)
|
10
|
+
pdf.fill_rectangle [column*spacing, row*spacing], spacing, spacing
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Pattern
|
3
|
+
class DotGrid < Pattern
|
4
|
+
attr_accessor(
|
5
|
+
:dot_weight,
|
6
|
+
)
|
7
|
+
|
8
|
+
def post_initialize(params)
|
9
|
+
@dot_weight = params[:dot_weight] || 1.5
|
10
|
+
end
|
11
|
+
|
12
|
+
def draw
|
13
|
+
pdf.fill_color grid_color
|
14
|
+
(0..rows).each do |row|
|
15
|
+
(0..columns).each do |col|
|
16
|
+
pdf.fill_circle [col*spacing, row*spacing], dot_weight
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Pattern
|
3
|
+
class Grid < Pattern
|
4
|
+
def draw
|
5
|
+
pdf.stroke_color grid_color
|
6
|
+
(0..rows).each do |row|
|
7
|
+
pdf.stroke_horizontal_line(0, bounds.width, :at => row*spacing)
|
8
|
+
end
|
9
|
+
(0..columns).each do |column|
|
10
|
+
pdf.stroke_vertical_line(0, bounds.height, :at => column*spacing)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module DotGrid
|
2
|
+
module Pattern
|
3
|
+
class Pattern
|
4
|
+
attr_accessor(
|
5
|
+
:pdf,
|
6
|
+
:bounds,
|
7
|
+
:grid_color,
|
8
|
+
:spacing,
|
9
|
+
)
|
10
|
+
|
11
|
+
def initialize(params = {})
|
12
|
+
@pdf = params[:pdf]
|
13
|
+
@bounds = params[:bounds]
|
14
|
+
@grid_color = params[:grid_color] || "B3B3B3"
|
15
|
+
@spacing = params[:spacing] ? params[:spacing].mm : 5.mm
|
16
|
+
post_initialize(params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def post_initialize(params)
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
|
23
|
+
def rows
|
24
|
+
(bounds.height / spacing).floor
|
25
|
+
end
|
26
|
+
|
27
|
+
def columns
|
28
|
+
(bounds.width / spacing).floor
|
29
|
+
end
|
30
|
+
|
31
|
+
def draw
|
32
|
+
raise NotImplementedError
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
data/lib/dot_grid/version.rb
CHANGED
data/lib/dot_grid.rb
CHANGED
@@ -1,7 +1,17 @@
|
|
1
1
|
require 'dot_grid/generator'
|
2
|
-
|
3
|
-
require 'dot_grid/
|
4
|
-
require 'dot_grid/
|
2
|
+
|
3
|
+
require 'dot_grid/page/page'
|
4
|
+
require 'dot_grid/page/dot_grid'
|
5
|
+
require 'dot_grid/page/planner'
|
6
|
+
require 'dot_grid/page/grid'
|
7
|
+
require 'dot_grid/page/horizontal_rule'
|
8
|
+
require 'dot_grid/page/checkerboard'
|
9
|
+
|
10
|
+
require 'dot_grid/pattern/pattern'
|
11
|
+
require 'dot_grid/pattern/grid'
|
12
|
+
require 'dot_grid/pattern/dot_grid'
|
13
|
+
require 'dot_grid/pattern/checkerboard'
|
14
|
+
require 'dot_grid/pattern/horizontal_rule'
|
5
15
|
|
6
16
|
module DotGrid
|
7
17
|
end
|
@@ -27,14 +27,14 @@ describe "DotGrid::Generator" do
|
|
27
27
|
|
28
28
|
context "when there is a grid parameter" do
|
29
29
|
it "creates a new grid page" do
|
30
|
-
expect(DotGrid::
|
31
|
-
DotGrid::Generator.new({:
|
30
|
+
expect(DotGrid::Page::DotGrid).to receive(:new)
|
31
|
+
DotGrid::Generator.new({:dot_grid => true})
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
context "when there is a planner parameter" do
|
36
36
|
it "creates a new grid page" do
|
37
|
-
expect(DotGrid::Planner).to receive(:new)
|
37
|
+
expect(DotGrid::Page::Planner).to receive(:new)
|
38
38
|
DotGrid::Generator.new({:planner => true})
|
39
39
|
end
|
40
40
|
end
|
@@ -49,6 +49,14 @@ describe "DotGrid::Generator" do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
context "when there is a dot grid page" do
|
53
|
+
let(:subject) { DotGrid::Generator.new(:dot_grid => true)}
|
54
|
+
it "generates a new grid page" do
|
55
|
+
expect(subject.dot_grid_page).to receive(:generate)
|
56
|
+
subject.generate
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
52
60
|
context "when there is a grid page" do
|
53
61
|
let(:subject) { DotGrid::Generator.new(:grid => true)}
|
54
62
|
it "generates a new grid page" do
|
@@ -57,11 +65,19 @@ describe "DotGrid::Generator" do
|
|
57
65
|
end
|
58
66
|
end
|
59
67
|
|
68
|
+
context "when there is a horizontal rule page" do
|
69
|
+
let(:subject) { DotGrid::Generator.new(:horizontal_rule => true)}
|
70
|
+
it "generates a new horizontal rule page" do
|
71
|
+
expect(subject.horizontal_rule_page).to receive(:generate)
|
72
|
+
subject.generate
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
60
76
|
context "when there are multiple pages" do
|
61
|
-
let(:subject) { DotGrid::Generator.new(:
|
77
|
+
let(:subject) { DotGrid::Generator.new(:dot_grid => true, :planner => true, :pages => 2)}
|
62
78
|
|
63
79
|
it "generates grid for each page" do
|
64
|
-
expect(subject.
|
80
|
+
expect(subject.dot_grid_page).to receive(:generate).twice
|
65
81
|
subject.generate
|
66
82
|
end
|
67
83
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Page::Checkerboard" do
|
4
|
+
describe "#draw" do
|
5
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
6
|
+
let(:subject) { DotGrid::Page::Checkerboard.new({pdf: pdf})}
|
7
|
+
let(:pattern) { double('pattern') }
|
8
|
+
|
9
|
+
before do
|
10
|
+
allow(pdf).to receive(:start_new_page)
|
11
|
+
allow(subject).to receive(:pattern).and_return(pattern)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "draws the pattern" do
|
15
|
+
expect(pattern).to receive(:draw)
|
16
|
+
subject.generate
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Page::DotGrid" do
|
4
|
+
describe "#initialize" do
|
5
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
6
|
+
|
7
|
+
it "creates a dot grid pattern" do
|
8
|
+
expect(::DotGrid::Pattern::DotGrid).to receive(:new)
|
9
|
+
DotGrid::Page::DotGrid.new({pdf: pdf})
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#generate" do
|
14
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
15
|
+
let(:subject) { DotGrid::Page::DotGrid.new({pdf: pdf})}
|
16
|
+
let(:pattern) { double('pattern') }
|
17
|
+
|
18
|
+
before do
|
19
|
+
allow(pdf).to receive(:start_new_page)
|
20
|
+
allow(subject).to receive(:pattern).and_return(pattern)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "draws the pattern" do
|
24
|
+
expect(pattern).to receive(:draw)
|
25
|
+
subject.generate
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Page::Grid" do
|
4
|
+
describe "#initialize" do
|
5
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
6
|
+
|
7
|
+
it "creates a dot grid pattern" do
|
8
|
+
expect(::DotGrid::Pattern::Grid).to receive(:new)
|
9
|
+
DotGrid::Page::Grid.new({pdf: pdf})
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#generate" do
|
14
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
15
|
+
let(:subject) { DotGrid::Page::Grid.new({pdf: pdf})}
|
16
|
+
let(:pattern) { double('pattern') }
|
17
|
+
|
18
|
+
before do
|
19
|
+
allow(pdf).to receive(:start_new_page)
|
20
|
+
allow(subject).to receive(:pattern).and_return(pattern)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "draws the pattern" do
|
24
|
+
expect(pattern).to receive(:draw)
|
25
|
+
subject.generate
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Page::HorizontalRule" do
|
4
|
+
describe "#initialize" do
|
5
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
6
|
+
|
7
|
+
it "creates a dot grid pattern" do
|
8
|
+
expect(::DotGrid::Pattern::HorizontalRule).to receive(:new)
|
9
|
+
DotGrid::Page::HorizontalRule.new({pdf: pdf})
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#generate" do
|
14
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
15
|
+
let(:subject) { DotGrid::Page::HorizontalRule.new({pdf: pdf})}
|
16
|
+
let(:pattern) { double('pattern') }
|
17
|
+
|
18
|
+
before do
|
19
|
+
allow(pdf).to receive(:start_new_page)
|
20
|
+
allow(subject).to receive(:pattern).and_return(pattern)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "draws the pattern" do
|
24
|
+
expect(pattern).to receive(:draw)
|
25
|
+
subject.generate
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "DotGrid::Planner" do
|
3
|
+
describe "DotGrid::Page::Planner" do
|
4
4
|
describe "#initialize" do
|
5
|
-
let(:subject) { DotGrid::Planner.new({}) }
|
5
|
+
let(:subject) { DotGrid::Page::Planner.new({}) }
|
6
6
|
|
7
7
|
it "has a default planner color 1" do
|
8
8
|
expect(subject.planner_color_1).to eq("CCCCCC")
|
@@ -15,37 +15,37 @@ describe "DotGrid::Planner" do
|
|
15
15
|
|
16
16
|
describe "#header_height" do
|
17
17
|
let(:pdf) { double('pdf') }
|
18
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
18
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
19
19
|
|
20
20
|
it "returns the HEADER_HEIGHT of the header height" do
|
21
21
|
allow(subject).to receive(:page_height).and_return(20)
|
22
|
-
expect(subject.header_height).to eq(DotGrid::Planner::HEADER_HEIGHT * subject.page_height)
|
22
|
+
expect(subject.header_height).to eq(DotGrid::Page::Planner::HEADER_HEIGHT * subject.page_height)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#header_height" do
|
27
27
|
let(:pdf) { double('pdf') }
|
28
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
28
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
29
29
|
|
30
30
|
it "returns the HEADER_HEIGHT of the header height" do
|
31
31
|
allow(subject).to receive(:page_height).and_return(20)
|
32
|
-
expect(subject.header_height).to eq(DotGrid::Planner::HEADER_HEIGHT * subject.page_height)
|
32
|
+
expect(subject.header_height).to eq(DotGrid::Page::Planner::HEADER_HEIGHT * subject.page_height)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
describe "#square_grid_columns" do
|
37
37
|
let(:pdf) { double('pdf') }
|
38
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf, spacing: 5 }) }
|
38
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf, spacing: 5 }) }
|
39
39
|
|
40
40
|
it "returns the HEADER_HEIGHT of the header height" do
|
41
41
|
allow(subject).to receive(:page_width).and_return(100)
|
42
|
-
expect(subject.square_grid_columns).to eq((DotGrid::Planner::SQUARE_GRID_WIDTH * subject.page_width / subject.spacing).floor)
|
42
|
+
expect(subject.square_grid_columns).to eq((DotGrid::Page::Planner::SQUARE_GRID_WIDTH * subject.page_width / subject.spacing).floor)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
describe "#header_left_color" do
|
47
47
|
let(:pdf) { double('pdf') }
|
48
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf, planner_color_1: "DDEEFF" }) }
|
48
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf, planner_color_1: "DDEEFF" }) }
|
49
49
|
it "returns the planner color 1" do
|
50
50
|
expect(subject.header_left_color).to eq("DDEEFF")
|
51
51
|
end
|
@@ -53,27 +53,27 @@ describe "DotGrid::Planner" do
|
|
53
53
|
|
54
54
|
describe "#header_left_start" do
|
55
55
|
let(:pdf) { double('pdf') }
|
56
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
56
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
57
57
|
|
58
58
|
it "returns the the header left_start" do
|
59
59
|
allow(subject).to receive(:page_width).and_return(30)
|
60
|
-
expect(subject.header_left_start).to eq(DotGrid::Planner::HEADER_LEFT_START * subject.page_width)
|
60
|
+
expect(subject.header_left_start).to eq(DotGrid::Page::Planner::HEADER_LEFT_START * subject.page_width)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
64
|
describe "#header_gap_width" do
|
65
65
|
let(:pdf) { double('pdf') }
|
66
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
66
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
67
67
|
|
68
68
|
it "returns the the header gap width" do
|
69
69
|
allow(subject).to receive(:page_width).and_return(30)
|
70
|
-
expect(subject.header_gap_width).to eq(DotGrid::Planner::HEADER_GAP_WIDTH * subject.page_width)
|
70
|
+
expect(subject.header_gap_width).to eq(DotGrid::Page::Planner::HEADER_GAP_WIDTH * subject.page_width)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
74
|
describe "#header_right_color" do
|
75
75
|
let(:pdf) { double('pdf') }
|
76
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf, planner_color_2: "FFEEDD" }) }
|
76
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf, planner_color_2: "FFEEDD" }) }
|
77
77
|
it "returns the planner color 1" do
|
78
78
|
expect(subject.header_right_color).to eq("FFEEDD")
|
79
79
|
end
|
@@ -81,7 +81,7 @@ describe "DotGrid::Planner" do
|
|
81
81
|
|
82
82
|
describe "#dot_grid_rows" do
|
83
83
|
let(:pdf) { double('pdf') }
|
84
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
84
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
85
85
|
let(:square_grid_rows) { 10 }
|
86
86
|
|
87
87
|
it "returns the foot height" do
|
@@ -92,18 +92,18 @@ describe "DotGrid::Planner" do
|
|
92
92
|
|
93
93
|
describe "#footer_height" do
|
94
94
|
let(:pdf) { double('pdf') }
|
95
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
95
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
96
96
|
let(:header_height) { 100 }
|
97
97
|
|
98
98
|
it "returns the foot height" do
|
99
99
|
allow(subject).to receive(:header_height).and_return(header_height)
|
100
|
-
expect(subject.footer_height).to eq(header_height*DotGrid::Planner::FOOT_HEIGHT_RATIO)
|
100
|
+
expect(subject.footer_height).to eq(header_height*DotGrid::Page::Planner::FOOT_HEIGHT_RATIO)
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
104
|
describe "#generate" do
|
105
105
|
let(:pdf) { double('pdf') }
|
106
|
-
let(:subject) { DotGrid::Planner.new({:pdf => pdf }) }
|
106
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
107
107
|
|
108
108
|
before do
|
109
109
|
allow(subject).to receive(:page_width).and_return(10)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Pattern::Checkerboard" do
|
4
|
+
let(:pdf) { double('pdf') }
|
5
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
6
|
+
let(:subject) { DotGrid::Pattern::Checkerboard.new(params) }
|
7
|
+
|
8
|
+
describe "#rows" do
|
9
|
+
it "calculates the rows based on the bounds" do
|
10
|
+
expect(subject.rows).to eq(4)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#columns" do
|
15
|
+
it "calculates the rows based on the bounds" do
|
16
|
+
expect(subject.columns).to eq(2)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#draw" do
|
21
|
+
before do
|
22
|
+
allow(pdf).to receive(:fill_color)
|
23
|
+
allow(pdf).to receive(:fill_rectangle)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "sets the fill color" do
|
27
|
+
expect(pdf).to receive(:fill_color)
|
28
|
+
subject.draw
|
29
|
+
end
|
30
|
+
|
31
|
+
it "calls fill rectangle the correct number of times" do
|
32
|
+
allow(subject).to receive(:rows).and_return(2)
|
33
|
+
allow(subject).to receive(:columns).and_return(3)
|
34
|
+
expect(pdf).to receive(:fill_rectangle).exactly(3*4 / 2).times
|
35
|
+
subject.draw
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Pattern::DotGrid" do
|
4
|
+
describe "#draw" do
|
5
|
+
let(:pdf) { double('pdf') }
|
6
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
|
+
let(:subject) { DotGrid::Pattern::DotGrid.new(params) }
|
8
|
+
|
9
|
+
before do
|
10
|
+
allow(pdf).to receive(:fill_color)
|
11
|
+
allow(pdf).to receive(:fill_circle)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "sets the fill color" do
|
15
|
+
expect(pdf).to receive(:fill_color)
|
16
|
+
subject.draw
|
17
|
+
end
|
18
|
+
|
19
|
+
it "calls fill circle the correct number of times" do
|
20
|
+
allow(subject).to receive(:rows).and_return(2)
|
21
|
+
allow(subject).to receive(:columns).and_return(3)
|
22
|
+
expect(pdf).to receive(:fill_circle).exactly(3*4).times
|
23
|
+
subject.draw
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Pattern::Grid" do
|
4
|
+
describe "#draw" do
|
5
|
+
let(:pdf) { double('pdf') }
|
6
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
|
+
let(:subject) { DotGrid::Pattern::Grid.new(params) }
|
8
|
+
|
9
|
+
before do
|
10
|
+
allow(pdf).to receive(:stroke_color)
|
11
|
+
allow(pdf).to receive(:stroke_horizontal_line)
|
12
|
+
allow(pdf).to receive(:stroke_vertical_line)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets the fill color" do
|
16
|
+
expect(pdf).to receive(:stroke_color)
|
17
|
+
subject.draw
|
18
|
+
end
|
19
|
+
|
20
|
+
it "draws teh horizontal lines" do
|
21
|
+
allow(subject).to receive(:rows).and_return(2)
|
22
|
+
expect(pdf).to receive(:stroke_horizontal_line).exactly(3).times
|
23
|
+
subject.draw
|
24
|
+
end
|
25
|
+
|
26
|
+
it "calls fill rectangle the correct number of times" do
|
27
|
+
allow(subject).to receive(:columns).and_return(3)
|
28
|
+
expect(pdf).to receive(:stroke_vertical_line).exactly(4).times
|
29
|
+
subject.draw
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Pattern::HorizontalRule" do
|
4
|
+
|
5
|
+
describe "#draw" do
|
6
|
+
let(:pdf) { double('pdf') }
|
7
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
8
|
+
let(:subject) { DotGrid::Pattern::HorizontalRule.new(params) }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(pdf).to receive(:stroke_color)
|
12
|
+
allow(pdf).to receive(:stroke_horizontal_line)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets the fill color" do
|
16
|
+
expect(pdf).to receive(:stroke_color)
|
17
|
+
subject.draw
|
18
|
+
end
|
19
|
+
|
20
|
+
it "calls horizontal line the correct number of times" do
|
21
|
+
allow(subject).to receive(:rows).and_return(2)
|
22
|
+
expect(pdf).to receive(:stroke_horizontal_line).exactly(2 + 1).times
|
23
|
+
subject.draw
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Pattern::Pattern" do
|
4
|
+
|
5
|
+
let(:pdf) { double('pdf') }
|
6
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
|
+
let(:subject) { DotGrid::Pattern::Pattern.new(params) }
|
8
|
+
|
9
|
+
describe "#new" do
|
10
|
+
it "calls the post initialize method" do
|
11
|
+
expect_any_instance_of(DotGrid::Pattern::Pattern).to receive(:post_initialize)
|
12
|
+
DotGrid::Pattern::Pattern.new(params)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#post_initialize" do
|
17
|
+
it "is nil" do
|
18
|
+
expect(subject.post_initialize({})).to be_nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#rows" do
|
23
|
+
it "calculates the rows based on the bounds" do
|
24
|
+
expect(subject.rows).to eq(4)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#columns" do
|
29
|
+
it "calculates the rows based on the bounds" do
|
30
|
+
expect(subject.columns).to eq(2)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#draw" do
|
35
|
+
it "raises an error" do
|
36
|
+
expect { subject.draw }.to raise_error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dot_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott LaBounty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -116,14 +116,29 @@ files:
|
|
116
116
|
- dot_grid.gemspec
|
117
117
|
- lib/dot_grid.rb
|
118
118
|
- lib/dot_grid/generator.rb
|
119
|
-
- lib/dot_grid/
|
120
|
-
- lib/dot_grid/page.rb
|
121
|
-
- lib/dot_grid/
|
119
|
+
- lib/dot_grid/page/checkerboard.rb
|
120
|
+
- lib/dot_grid/page/dot_grid.rb
|
121
|
+
- lib/dot_grid/page/grid.rb
|
122
|
+
- lib/dot_grid/page/horizontal_rule.rb
|
123
|
+
- lib/dot_grid/page/page.rb
|
124
|
+
- lib/dot_grid/page/planner.rb
|
125
|
+
- lib/dot_grid/pattern/checkerboard.rb
|
126
|
+
- lib/dot_grid/pattern/dot_grid.rb
|
127
|
+
- lib/dot_grid/pattern/grid.rb
|
128
|
+
- lib/dot_grid/pattern/horizontal_rule.rb
|
129
|
+
- lib/dot_grid/pattern/pattern.rb
|
122
130
|
- lib/dot_grid/version.rb
|
123
131
|
- spec/lib/dot_grid/generator_spec.rb
|
124
|
-
- spec/lib/dot_grid/
|
125
|
-
- spec/lib/dot_grid/
|
126
|
-
- spec/lib/dot_grid/
|
132
|
+
- spec/lib/dot_grid/page/checkerboard_spec.rb
|
133
|
+
- spec/lib/dot_grid/page/dot_grid_spec.rb
|
134
|
+
- spec/lib/dot_grid/page/grid_spec.rb
|
135
|
+
- spec/lib/dot_grid/page/horizontal_rule_spec.rb
|
136
|
+
- spec/lib/dot_grid/page/planner_spec.rb
|
137
|
+
- spec/lib/dot_grid/pattern/checkerboard_spec.rb
|
138
|
+
- spec/lib/dot_grid/pattern/dot_grid_spec.rb
|
139
|
+
- spec/lib/dot_grid/pattern/grid_spec.rb
|
140
|
+
- spec/lib/dot_grid/pattern/horizontal_rule_spec.rb
|
141
|
+
- spec/lib/dot_grid/pattern/pattern_spec.rb
|
127
142
|
- spec/spec_helper.rb
|
128
143
|
homepage: http://github.com/slabounty/dot_grid
|
129
144
|
licenses:
|
@@ -151,7 +166,14 @@ specification_version: 4
|
|
151
166
|
summary: Dot Grid planner PDF generator.
|
152
167
|
test_files:
|
153
168
|
- spec/lib/dot_grid/generator_spec.rb
|
154
|
-
- spec/lib/dot_grid/
|
155
|
-
- spec/lib/dot_grid/
|
156
|
-
- spec/lib/dot_grid/
|
169
|
+
- spec/lib/dot_grid/page/checkerboard_spec.rb
|
170
|
+
- spec/lib/dot_grid/page/dot_grid_spec.rb
|
171
|
+
- spec/lib/dot_grid/page/grid_spec.rb
|
172
|
+
- spec/lib/dot_grid/page/horizontal_rule_spec.rb
|
173
|
+
- spec/lib/dot_grid/page/planner_spec.rb
|
174
|
+
- spec/lib/dot_grid/pattern/checkerboard_spec.rb
|
175
|
+
- spec/lib/dot_grid/pattern/dot_grid_spec.rb
|
176
|
+
- spec/lib/dot_grid/pattern/grid_spec.rb
|
177
|
+
- spec/lib/dot_grid/pattern/horizontal_rule_spec.rb
|
178
|
+
- spec/lib/dot_grid/pattern/pattern_spec.rb
|
157
179
|
- spec/spec_helper.rb
|
data/lib/dot_grid/grid.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module DotGrid
|
2
|
-
class Grid < Page
|
3
|
-
attr_accessor(
|
4
|
-
:dot_weight,
|
5
|
-
:grid_color,
|
6
|
-
:spacing,
|
7
|
-
)
|
8
|
-
|
9
|
-
def initialize(params)
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
def page_rows
|
15
|
-
(page_height / spacing).floor
|
16
|
-
end
|
17
|
-
|
18
|
-
def page_columns
|
19
|
-
(page_width / spacing).floor
|
20
|
-
end
|
21
|
-
|
22
|
-
def generate
|
23
|
-
pdf.start_new_page
|
24
|
-
num_columns = page_columns
|
25
|
-
num_rows = page_rows
|
26
|
-
draw_dot_grid(num_rows, num_columns, 0, pdf.bounds.height)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/dot_grid/page.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module DotGrid
|
2
|
-
class Page
|
3
|
-
attr_accessor(
|
4
|
-
:pdf,
|
5
|
-
:dot_weight,
|
6
|
-
:grid_color,
|
7
|
-
:spacing
|
8
|
-
)
|
9
|
-
|
10
|
-
def initialize(params)
|
11
|
-
@pdf = params[:pdf]
|
12
|
-
@dot_weight = params[:dot_weight] || 1.5
|
13
|
-
@grid_color = params[:grid_color] || "B3B3B3"
|
14
|
-
@spacing = params[:spacing] ? params[:spacing].mm : 5.mm
|
15
|
-
end
|
16
|
-
|
17
|
-
def page_width
|
18
|
-
pdf.bounds.width
|
19
|
-
end
|
20
|
-
|
21
|
-
def page_height
|
22
|
-
pdf.bounds.height
|
23
|
-
end
|
24
|
-
|
25
|
-
def draw_dot_grid(rows, columns, left_start, height_start)
|
26
|
-
pdf.fill_color grid_color
|
27
|
-
(1..rows).each do |row|
|
28
|
-
(1..columns).each do |col|
|
29
|
-
pdf.fill_circle [left_start + (col-1)*spacing, height_start - spacing - (row-1)*spacing], dot_weight
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/lib/dot_grid/planner.rb
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
module DotGrid
|
2
|
-
class Planner < Page
|
3
|
-
attr_accessor(
|
4
|
-
:planner_color_1,
|
5
|
-
:planner_color_2
|
6
|
-
)
|
7
|
-
|
8
|
-
HEADER_HEIGHT = 0.05 # 5.0 %
|
9
|
-
HEADER_LEFT_START = 0.05 # 5.0%
|
10
|
-
SQUARE_GRID_WIDTH = 0.30 # 30.0%
|
11
|
-
HEADER_GAP_WIDTH = 0.03 # 3.0%
|
12
|
-
DOT_GRID_COLUMN_WIDTH = 0.62 # 62%
|
13
|
-
SQUARE_GRID_ROWS_WIDTH = 0.80 # 80%
|
14
|
-
FOOT_HEIGHT_RATIO = 2 # Ratio of footer to header
|
15
|
-
|
16
|
-
def initialize(params)
|
17
|
-
super
|
18
|
-
@planner_color_1 = params[:planner_color_1] || "CCCCCC"
|
19
|
-
@planner_color_2 = params[:planner_color_2] || "0099ff"
|
20
|
-
end
|
21
|
-
|
22
|
-
def header_height
|
23
|
-
HEADER_HEIGHT * page_height
|
24
|
-
end
|
25
|
-
|
26
|
-
def square_grid_columns
|
27
|
-
((SQUARE_GRID_WIDTH * page_width) / spacing).floor
|
28
|
-
end
|
29
|
-
|
30
|
-
def header_left_color
|
31
|
-
planner_color_1
|
32
|
-
end
|
33
|
-
|
34
|
-
def header_left_start
|
35
|
-
HEADER_LEFT_START * page_width
|
36
|
-
end
|
37
|
-
|
38
|
-
def header_left_width
|
39
|
-
square_grid_columns*spacing
|
40
|
-
end
|
41
|
-
|
42
|
-
def header_gap_start
|
43
|
-
header_left_start + header_left_width
|
44
|
-
end
|
45
|
-
|
46
|
-
def header_gap_width
|
47
|
-
page_width * HEADER_GAP_WIDTH
|
48
|
-
end
|
49
|
-
|
50
|
-
def dot_grid_columns
|
51
|
-
(page_width * DOT_GRID_COLUMN_WIDTH / spacing).floor + 2
|
52
|
-
end
|
53
|
-
|
54
|
-
def dot_grid_rows
|
55
|
-
square_grid_rows + 1
|
56
|
-
end
|
57
|
-
|
58
|
-
def header_right_color
|
59
|
-
planner_color_2
|
60
|
-
end
|
61
|
-
|
62
|
-
def header_right_start
|
63
|
-
header_gap_start + header_gap_width
|
64
|
-
end
|
65
|
-
|
66
|
-
def header_right_width
|
67
|
-
page_width - header_right_start
|
68
|
-
end
|
69
|
-
|
70
|
-
def square_grid_rows
|
71
|
-
(page_height * SQUARE_GRID_ROWS_WIDTH / spacing).floor
|
72
|
-
end
|
73
|
-
|
74
|
-
def footer_height
|
75
|
-
header_height * FOOT_HEIGHT_RATIO
|
76
|
-
end
|
77
|
-
|
78
|
-
def generate
|
79
|
-
pdf.start_new_page
|
80
|
-
|
81
|
-
# Header left
|
82
|
-
draw_header(header_left_start, header_left_width, header_height, header_left_color)
|
83
|
-
|
84
|
-
# Header right
|
85
|
-
draw_header(header_right_start, header_right_width, header_height, header_right_color)
|
86
|
-
|
87
|
-
# Square Grid Left
|
88
|
-
draw_square_grid_left(square_grid_rows, square_grid_columns, header_left_color, header_left_start, page_height - header_height - spacing, spacing)
|
89
|
-
|
90
|
-
# Dot Grid Right
|
91
|
-
draw_dot_grid(dot_grid_rows, dot_grid_columns, header_right_start, page_height-header_height)
|
92
|
-
|
93
|
-
# Footer
|
94
|
-
draw_footer(planner_color_1, header_left_start, footer_height, page_width-header_left_start)
|
95
|
-
end
|
96
|
-
|
97
|
-
def draw_header(header_start, header_width, header_height, header_color)
|
98
|
-
pdf.fill_color header_color
|
99
|
-
pdf.fill_rectangle [header_start, page_height], header_width, header_height
|
100
|
-
end
|
101
|
-
|
102
|
-
def draw_square_grid_left(square_grid_rows, square_grid_columns, grid_color, left_start, height_start, spacing)
|
103
|
-
pdf.fill_color grid_color
|
104
|
-
(1..square_grid_rows).each do |row|
|
105
|
-
(1..square_grid_columns).each do |col|
|
106
|
-
pdf.fill_rectangle [left_start + (col-1)*spacing, height_start - (row-1)*spacing], spacing-1 ,spacing-1
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def draw_footer(footer_color, footer_start, footer_height, footer_width)
|
112
|
-
pdf.fill_color footer_color
|
113
|
-
pdf.fill_rectangle [footer_start, footer_height], footer_width, footer_height
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "DotGrid::Grid" do
|
4
|
-
describe "#initialize" do
|
5
|
-
let(:subject) { DotGrid::Grid.new({}) }
|
6
|
-
|
7
|
-
it "calculates the number of rows" do
|
8
|
-
allow(subject).to receive(:page_height).and_return(22)
|
9
|
-
allow(subject).to receive(:spacing).and_return(5)
|
10
|
-
expect(subject.page_rows).to eq(4)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "calculates the number of columns" do
|
14
|
-
allow(subject).to receive(:page_width).and_return(44)
|
15
|
-
allow(subject).to receive(:spacing).and_return(6)
|
16
|
-
expect(subject.page_columns).to eq(7)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "DotGrid::Page" do
|
4
|
-
describe "#initialize" do
|
5
|
-
let(:subject) { DotGrid::Page.new({}) }
|
6
|
-
|
7
|
-
it "has a default dot weight" do
|
8
|
-
expect(subject.dot_weight).to eq(1.5)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "has a default grid color" do
|
12
|
-
expect(subject.grid_color).to eq("B3B3B3")
|
13
|
-
end
|
14
|
-
|
15
|
-
it "has a default spacing" do
|
16
|
-
expect(subject.spacing).to eq(5.mm)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "#page_width" do
|
21
|
-
let(:pdf) { double('pdf', bounds: double(:width => 42)) }
|
22
|
-
let(:subject) { DotGrid::Page.new({:pdf => pdf}) }
|
23
|
-
|
24
|
-
it "uses the pdf to calculate the page width" do
|
25
|
-
expect(subject.page_width).to eq(42)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#page_height" do
|
30
|
-
let(:pdf) { double('pdf', bounds: double(:height => 22)) }
|
31
|
-
let(:subject) { DotGrid::Page.new({:pdf => pdf}) }
|
32
|
-
|
33
|
-
it "uses the pdf to calculate the page height" do
|
34
|
-
expect(subject.page_height).to eq(22)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#draw_dot_grid" do
|
39
|
-
let(:pdf) { double('pdf', bounds: double(:height => 22)) }
|
40
|
-
let(:subject) { DotGrid::Page.new({:pdf => pdf, :grid_color => "CCDDEE"}) }
|
41
|
-
|
42
|
-
it "sets the pdf fill color" do
|
43
|
-
allow(pdf).to receive(:fill_circle)
|
44
|
-
expect(pdf).to receive(:fill_color).with("CCDDEE")
|
45
|
-
subject.draw_dot_grid(1, 1, 100, 200)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "fills the correct number of circles for the grid" do
|
49
|
-
allow(pdf).to receive(:fill_color)
|
50
|
-
expect(pdf).to receive(:fill_circle).exactly(4).times
|
51
|
-
subject.draw_dot_grid(2, 2, 100, 200)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|