dot_grid 0.0.3 → 0.0.4
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 +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
|