dot_grid 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/dot_grid/bounding_box.rb +15 -0
- data/lib/dot_grid/page/checkerboard.rb +2 -11
- data/lib/dot_grid/page/dot_grid.rb +2 -14
- data/lib/dot_grid/page/grid.rb +2 -13
- data/lib/dot_grid/page/horizontal_rule.rb +2 -12
- data/lib/dot_grid/page/page.rb +10 -21
- data/lib/dot_grid/page/planner.rb +34 -36
- data/lib/dot_grid/pattern/checkerboard.rb +6 -6
- data/lib/dot_grid/pattern/dot_grid.rb +2 -4
- data/lib/dot_grid/pattern/grid.rb +3 -5
- data/lib/dot_grid/pattern/horizontal_rule.rb +2 -3
- data/lib/dot_grid/pattern/pattern.rb +11 -1
- data/lib/dot_grid/pattern/square_grid.rb +12 -0
- data/lib/dot_grid/version.rb +1 -1
- data/lib/dot_grid.rb +2 -0
- data/spec/lib/dot_grid/page/checkerboard_spec.rb +6 -9
- data/spec/lib/dot_grid/page/dot_grid_spec.rb +6 -18
- data/spec/lib/dot_grid/page/grid_spec.rb +5 -17
- data/spec/lib/dot_grid/page/horizontal_rule_spec.rb +5 -17
- data/spec/lib/dot_grid/page/page_spec.rb +48 -0
- data/spec/lib/dot_grid/page/planner_spec.rb +43 -55
- data/spec/lib/dot_grid/pattern/checkerboard_spec.rb +2 -1
- data/spec/lib/dot_grid/pattern/dot_grid_spec.rb +2 -1
- data/spec/lib/dot_grid/pattern/grid_spec.rb +3 -2
- data/spec/lib/dot_grid/pattern/horizontal_rule_spec.rb +2 -1
- data/spec/lib/dot_grid/pattern/pattern_spec.rb +10 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ffb5b75ffa638ae3bfd9d7b42ca6ef7c6bc92a9
|
4
|
+
data.tar.gz: e5849864c9d5bb7671909055a2b352d63bfb915d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c362a59e770ac32c855d1c3ba63937c42dcab3bdb132705fa134ccb813cdf760d1fb8b0ccb681f6ea85db6f134867dada43c5ff96ff4d12b71d7aaaeb9d06222
|
7
|
+
data.tar.gz: 2a8006d84e41212fc53045952e0ffb4da63850a576c3664f7448e478a9c4c3a5f3181fb27c26c6ee754f6709c47ab2c256986faba95cb0bef471d1b4ceb5066d
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,9 @@
|
|
1
1
|
module DotGrid
|
2
2
|
module Page
|
3
3
|
class Checkerboard < Page
|
4
|
-
attr_accessor(
|
5
|
-
:pattern,
|
6
|
-
)
|
7
4
|
|
8
|
-
def
|
9
|
-
|
10
|
-
@pattern = ::DotGrid::Pattern::Checkerboard.new(params.merge!(:bounds => pdf.bounds))
|
11
|
-
end
|
12
|
-
|
13
|
-
def generate
|
14
|
-
super
|
15
|
-
pattern.draw
|
5
|
+
def post_initialize(params)
|
6
|
+
add_pattern(::DotGrid::Pattern::Checkerboard.new(params))
|
16
7
|
end
|
17
8
|
end
|
18
9
|
end
|
@@ -1,21 +1,9 @@
|
|
1
1
|
module DotGrid
|
2
2
|
module Page
|
3
3
|
class DotGrid < Page
|
4
|
-
attr_accessor(
|
5
|
-
:dot_weight,
|
6
|
-
:grid_color,
|
7
|
-
:spacing,
|
8
|
-
:pattern
|
9
|
-
)
|
10
4
|
|
11
|
-
def
|
12
|
-
|
13
|
-
@pattern = ::DotGrid::Pattern::DotGrid.new(params.merge!(:bounds => pdf.bounds))
|
14
|
-
end
|
15
|
-
|
16
|
-
def generate
|
17
|
-
super
|
18
|
-
pattern.draw
|
5
|
+
def post_initialize(params)
|
6
|
+
add_pattern(::DotGrid::Pattern::DotGrid.new(params))
|
19
7
|
end
|
20
8
|
end
|
21
9
|
end
|
data/lib/dot_grid/page/grid.rb
CHANGED
@@ -1,20 +1,9 @@
|
|
1
1
|
module DotGrid
|
2
2
|
module Page
|
3
3
|
class Grid < Page
|
4
|
-
attr_accessor(
|
5
|
-
:grid_color,
|
6
|
-
:spacing,
|
7
|
-
:pattern
|
8
|
-
)
|
9
4
|
|
10
|
-
def
|
11
|
-
|
12
|
-
@pattern = ::DotGrid::Pattern::Grid.new(params.merge!(:bounds => pdf.bounds))
|
13
|
-
end
|
14
|
-
|
15
|
-
def generate
|
16
|
-
super
|
17
|
-
pattern.draw
|
5
|
+
def post_initialize(params)
|
6
|
+
add_pattern(::DotGrid::Pattern::Grid.new(params))
|
18
7
|
end
|
19
8
|
end
|
20
9
|
end
|
@@ -1,20 +1,10 @@
|
|
1
1
|
module DotGrid
|
2
2
|
module Page
|
3
3
|
class HorizontalRule < Page
|
4
|
-
attr_accessor(
|
5
|
-
:pattern
|
6
|
-
)
|
7
4
|
|
8
|
-
def
|
9
|
-
|
10
|
-
@pattern = ::DotGrid::Pattern::HorizontalRule.new(params.merge!(:bounds => pdf.bounds))
|
11
|
-
end
|
12
|
-
|
13
|
-
def generate
|
14
|
-
super
|
15
|
-
pattern.draw
|
5
|
+
def post_initialize(params)
|
6
|
+
add_pattern(::DotGrid::Pattern::HorizontalRule.new(params))
|
16
7
|
end
|
17
8
|
end
|
18
9
|
end
|
19
10
|
end
|
20
|
-
|
data/lib/dot_grid/page/page.rb
CHANGED
@@ -3,37 +3,26 @@ module DotGrid
|
|
3
3
|
class Page
|
4
4
|
attr_accessor(
|
5
5
|
:pdf,
|
6
|
-
:
|
7
|
-
:grid_color,
|
8
|
-
:spacing
|
6
|
+
:patterns
|
9
7
|
)
|
10
8
|
|
11
9
|
def initialize(params)
|
12
10
|
@pdf = params[:pdf]
|
13
|
-
@
|
14
|
-
|
15
|
-
@spacing = params[:spacing] ? params[:spacing].mm : 5.mm
|
11
|
+
@patterns = []
|
12
|
+
post_initialize(params)
|
16
13
|
end
|
17
14
|
|
18
|
-
def
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def page_width
|
23
|
-
pdf.bounds.width
|
15
|
+
def post_initialize(params)
|
16
|
+
nil
|
24
17
|
end
|
25
18
|
|
26
|
-
def
|
27
|
-
|
19
|
+
def add_pattern(pattern)
|
20
|
+
patterns << pattern
|
28
21
|
end
|
29
22
|
|
30
|
-
def
|
31
|
-
pdf.
|
32
|
-
|
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
|
23
|
+
def generate
|
24
|
+
pdf.start_new_page
|
25
|
+
patterns.each { |pattern| pattern.draw }
|
37
26
|
end
|
38
27
|
end
|
39
28
|
end
|
@@ -3,29 +3,46 @@ module DotGrid
|
|
3
3
|
class Planner < Page
|
4
4
|
attr_accessor(
|
5
5
|
:planner_color_1,
|
6
|
-
:planner_color_2
|
6
|
+
:planner_color_2,
|
7
|
+
:dot_weight,
|
8
|
+
:grid_color,
|
9
|
+
:spacing,
|
7
10
|
)
|
8
11
|
|
9
12
|
HEADER_HEIGHT = 0.05 # 5.0 %
|
10
13
|
HEADER_LEFT_START = 0.05 # 5.0%
|
11
|
-
SQUARE_GRID_WIDTH = 0.
|
14
|
+
SQUARE_GRID_WIDTH = 0.32 # 32.0% - Basically, what looks good on 8.5 x 11
|
12
15
|
HEADER_GAP_WIDTH = 0.03 # 3.0%
|
13
|
-
DOT_GRID_COLUMN_WIDTH = 0.62 # 62%
|
14
|
-
SQUARE_GRID_ROWS_WIDTH = 0.80 # 80%
|
15
16
|
FOOT_HEIGHT_RATIO = 2 # Ratio of footer to header
|
16
17
|
|
17
|
-
def
|
18
|
-
super
|
18
|
+
def post_initialize(params)
|
19
19
|
@planner_color_1 = params[:planner_color_1] || "CCCCCC"
|
20
20
|
@planner_color_2 = params[:planner_color_2] || "0099ff"
|
21
|
+
@dot_weight = params[:dot_weight] || 1.5
|
22
|
+
@grid_color = params[:grid_color] || "B3B3B3"
|
23
|
+
@spacing = params[:spacing] ? params[:spacing].mm : 5.mm
|
24
|
+
add_pattern(::DotGrid::Pattern::SquareGrid.new(params.merge!(:bounds => square_grid_bounds, grid_color: @planner_color_1)))
|
25
|
+
add_pattern(::DotGrid::Pattern::DotGrid.new(params.merge!(:bounds => dot_grid_bounds)))
|
26
|
+
end
|
27
|
+
|
28
|
+
def square_grid_bounds
|
29
|
+
::DotGrid::BoundingBox.new(upper_left: [header_left_start, grid_top], width: header_left_width, height: grid_height)
|
30
|
+
end
|
31
|
+
|
32
|
+
def dot_grid_bounds
|
33
|
+
::DotGrid::BoundingBox.new(upper_left: [header_right_start, grid_top], width: header_right_width, height: grid_height)
|
21
34
|
end
|
22
35
|
|
23
36
|
def header_height
|
24
37
|
HEADER_HEIGHT * page_height
|
25
38
|
end
|
26
39
|
|
27
|
-
def
|
28
|
-
|
40
|
+
def grid_top
|
41
|
+
page_height - header_height - spacing
|
42
|
+
end
|
43
|
+
|
44
|
+
def grid_height
|
45
|
+
(grid_top - footer_height - spacing)
|
29
46
|
end
|
30
47
|
|
31
48
|
def header_left_color
|
@@ -37,7 +54,7 @@ module DotGrid
|
|
37
54
|
end
|
38
55
|
|
39
56
|
def header_left_width
|
40
|
-
|
57
|
+
((SQUARE_GRID_WIDTH * page_width) / spacing).floor * spacing
|
41
58
|
end
|
42
59
|
|
43
60
|
def header_gap_start
|
@@ -48,14 +65,6 @@ module DotGrid
|
|
48
65
|
page_width * HEADER_GAP_WIDTH
|
49
66
|
end
|
50
67
|
|
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
68
|
def header_right_color
|
60
69
|
planner_color_2
|
61
70
|
end
|
@@ -68,10 +77,6 @@ module DotGrid
|
|
68
77
|
page_width - header_right_start
|
69
78
|
end
|
70
79
|
|
71
|
-
def square_grid_rows
|
72
|
-
(page_height * SQUARE_GRID_ROWS_WIDTH / spacing).floor
|
73
|
-
end
|
74
|
-
|
75
80
|
def footer_height
|
76
81
|
header_height * FOOT_HEIGHT_RATIO
|
77
82
|
end
|
@@ -85,12 +90,6 @@ module DotGrid
|
|
85
90
|
# Header right
|
86
91
|
draw_header(header_right_start, header_right_width, header_height, header_right_color)
|
87
92
|
|
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
93
|
# Footer
|
95
94
|
draw_footer(planner_color_1, header_left_start, footer_height, page_width-header_left_start)
|
96
95
|
end
|
@@ -100,19 +99,18 @@ module DotGrid
|
|
100
99
|
pdf.fill_rectangle [header_start, page_height], header_width, header_height
|
101
100
|
end
|
102
101
|
|
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
102
|
def draw_footer(footer_color, footer_start, footer_height, footer_width)
|
113
103
|
pdf.fill_color footer_color
|
114
104
|
pdf.fill_rectangle [footer_start, footer_height], footer_width, footer_height
|
115
105
|
end
|
106
|
+
|
107
|
+
def page_width
|
108
|
+
pdf.bounds.width
|
109
|
+
end
|
110
|
+
|
111
|
+
def page_height
|
112
|
+
pdf.bounds.height
|
113
|
+
end
|
116
114
|
end
|
117
115
|
end
|
118
116
|
end
|
@@ -2,14 +2,14 @@ module DotGrid
|
|
2
2
|
module Pattern
|
3
3
|
class Checkerboard < Pattern
|
4
4
|
|
5
|
+
def draw_square?(row, column)
|
6
|
+
(row % 2 == 0 && column % 2 == 0) || (row % 2 == 1 && column % 2 == 1)
|
7
|
+
end
|
8
|
+
|
5
9
|
def draw
|
6
10
|
pdf.fill_color grid_color
|
7
|
-
|
8
|
-
|
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
|
11
|
+
draw_grid do |row, column|
|
12
|
+
pdf.fill_rectangle [column*spacing, row*spacing], spacing, spacing if draw_square?(row, column)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -11,10 +11,8 @@ module DotGrid
|
|
11
11
|
|
12
12
|
def draw
|
13
13
|
pdf.fill_color grid_color
|
14
|
-
|
15
|
-
|
16
|
-
pdf.fill_circle [col*spacing, row*spacing], dot_weight
|
17
|
-
end
|
14
|
+
draw_grid do |row, column|
|
15
|
+
pdf.fill_circle [column*spacing, row*spacing], dot_weight
|
18
16
|
end
|
19
17
|
end
|
20
18
|
end
|
@@ -3,11 +3,9 @@ module DotGrid
|
|
3
3
|
class Grid < Pattern
|
4
4
|
def draw
|
5
5
|
pdf.stroke_color grid_color
|
6
|
-
|
7
|
-
pdf.stroke_horizontal_line(0, bounds.width, :at => row*spacing)
|
8
|
-
|
9
|
-
(0..columns).each do |column|
|
10
|
-
pdf.stroke_vertical_line(0, bounds.height, :at => column*spacing)
|
6
|
+
draw_grid do |row, column|
|
7
|
+
pdf.stroke_horizontal_line(0, bounds.width, :at => row*spacing) if column == 0
|
8
|
+
pdf.stroke_vertical_line(0, bounds.height, :at => column*spacing) if row == 0
|
11
9
|
end
|
12
10
|
end
|
13
11
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
module DotGrid
|
2
2
|
module Pattern
|
3
3
|
class HorizontalRule < Pattern
|
4
|
-
|
5
4
|
def draw
|
6
5
|
pdf.stroke_color grid_color
|
7
|
-
|
8
|
-
pdf.stroke_horizontal_line(0, bounds.width, :at => row*spacing)
|
6
|
+
draw_grid do |row, column|
|
7
|
+
pdf.stroke_horizontal_line(0, bounds.width, :at => row*spacing) if column == 0
|
9
8
|
end
|
10
9
|
end
|
11
10
|
end
|
@@ -10,7 +10,7 @@ module DotGrid
|
|
10
10
|
|
11
11
|
def initialize(params = {})
|
12
12
|
@pdf = params[:pdf]
|
13
|
-
@bounds = params[:bounds]
|
13
|
+
@bounds = params[:bounds] || ::DotGrid::BoundingBox.new(upper_left: [0, pdf.bounds.height], width: pdf.bounds.width, height: pdf.bounds.height)
|
14
14
|
@grid_color = params[:grid_color] || "B3B3B3"
|
15
15
|
@spacing = params[:spacing] ? params[:spacing].mm : 5.mm
|
16
16
|
post_initialize(params)
|
@@ -28,6 +28,16 @@ module DotGrid
|
|
28
28
|
(bounds.width / spacing).floor
|
29
29
|
end
|
30
30
|
|
31
|
+
def draw_grid(shorten = false)
|
32
|
+
pdf.bounding_box(bounds.upper_left, width: bounds.width, height: bounds.height) do
|
33
|
+
(0..(shorten ? rows-1 : rows)).each do |row|
|
34
|
+
(0..(shorten ? columns-1 : columns)).each do |column|
|
35
|
+
yield row, column
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
31
41
|
def draw
|
32
42
|
raise NotImplementedError
|
33
43
|
end
|
data/lib/dot_grid/version.rb
CHANGED
data/lib/dot_grid.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'dot_grid/generator'
|
2
|
+
require 'dot_grid/bounding_box'
|
2
3
|
|
3
4
|
require 'dot_grid/page/page'
|
4
5
|
require 'dot_grid/page/dot_grid'
|
@@ -12,6 +13,7 @@ require 'dot_grid/pattern/grid'
|
|
12
13
|
require 'dot_grid/pattern/dot_grid'
|
13
14
|
require 'dot_grid/pattern/checkerboard'
|
14
15
|
require 'dot_grid/pattern/horizontal_rule'
|
16
|
+
require 'dot_grid/pattern/square_grid'
|
15
17
|
|
16
18
|
module DotGrid
|
17
19
|
end
|
@@ -1,19 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "DotGrid::Page::Checkerboard" do
|
4
|
-
describe "#
|
5
|
-
let(:
|
6
|
-
let(:subject) { DotGrid::Page::Checkerboard.new({pdf: pdf})}
|
7
|
-
let(:pattern) { double('pattern') }
|
4
|
+
describe "#post_initialize" do
|
5
|
+
let(:subject) { DotGrid::Page::Checkerboard.new({})}
|
8
6
|
|
9
7
|
before do
|
10
|
-
allow(
|
11
|
-
allow(subject).to receive(:pattern).and_return(pattern)
|
8
|
+
allow(::DotGrid::Pattern::Checkerboard).to receive(:new)
|
12
9
|
end
|
13
10
|
|
14
|
-
it "
|
15
|
-
expect(
|
16
|
-
subject.
|
11
|
+
it "adds the pattern" do
|
12
|
+
expect(subject).to receive(:add_pattern)
|
13
|
+
subject.post_initialize({})
|
17
14
|
end
|
18
15
|
end
|
19
16
|
end
|
@@ -1,28 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "DotGrid::Page::DotGrid" do
|
4
|
-
describe "#
|
5
|
-
let(:
|
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') }
|
4
|
+
describe "#post_initialize" do
|
5
|
+
let(:subject) { DotGrid::Page::DotGrid.new({})}
|
17
6
|
|
18
7
|
before do
|
19
|
-
allow(
|
20
|
-
allow(subject).to receive(:pattern).and_return(pattern)
|
8
|
+
allow(::DotGrid::Pattern::DotGrid).to receive(:new)
|
21
9
|
end
|
22
10
|
|
23
|
-
it "
|
24
|
-
expect(
|
25
|
-
subject.
|
11
|
+
it "adds the pattern" do
|
12
|
+
expect(subject).to receive(:add_pattern)
|
13
|
+
subject.post_initialize({})
|
26
14
|
end
|
27
15
|
end
|
28
16
|
end
|
@@ -1,28 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "DotGrid::Page::Grid" do
|
4
|
-
describe "#
|
5
|
-
let(:
|
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') }
|
4
|
+
describe "#post_initialize" do
|
5
|
+
let(:subject) { DotGrid::Page::Grid.new({})}
|
17
6
|
|
18
7
|
before do
|
19
|
-
allow(
|
20
|
-
allow(subject).to receive(:pattern).and_return(pattern)
|
8
|
+
allow(::DotGrid::Pattern::Grid).to receive(:new)
|
21
9
|
end
|
22
10
|
|
23
11
|
it "draws the pattern" do
|
24
|
-
expect(
|
25
|
-
subject.
|
12
|
+
expect(subject).to receive(:add_pattern)
|
13
|
+
subject.post_initialize({})
|
26
14
|
end
|
27
15
|
end
|
28
16
|
end
|
@@ -1,28 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "DotGrid::Page::HorizontalRule" do
|
4
|
-
describe "#
|
5
|
-
let(:
|
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') }
|
4
|
+
describe "#post_initialize" do
|
5
|
+
let(:subject) { DotGrid::Page::HorizontalRule.new({})}
|
17
6
|
|
18
7
|
before do
|
19
|
-
allow(
|
20
|
-
allow(subject).to receive(:pattern).and_return(pattern)
|
8
|
+
allow(::DotGrid::Pattern::HorizontalRule).to receive(:new)
|
21
9
|
end
|
22
10
|
|
23
11
|
it "draws the pattern" do
|
24
|
-
expect(
|
25
|
-
subject.
|
12
|
+
expect(subject).to receive(:add_pattern)
|
13
|
+
subject.post_initialize({})
|
26
14
|
end
|
27
15
|
end
|
28
16
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DotGrid::Page::Page" do
|
4
|
+
describe "#initialize" do
|
5
|
+
let(:subject) { DotGrid::Page::Page.new({}) }
|
6
|
+
it "creates then empty patterns" do
|
7
|
+
expect(subject.patterns).to eq([])
|
8
|
+
end
|
9
|
+
|
10
|
+
it "calls the post initialize method" do
|
11
|
+
expect_any_instance_of(DotGrid::Page::Page).to receive(:post_initialize)
|
12
|
+
DotGrid::Page::Page.new({})
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#add_pattern" do
|
17
|
+
let(:subject) { DotGrid::Page::Page.new({})}
|
18
|
+
let(:pattern) { double('pattern') }
|
19
|
+
|
20
|
+
it "adds a pattern to patterns" do
|
21
|
+
expect(subject.patterns).to receive(:<<).with(pattern)
|
22
|
+
subject.add_pattern(pattern)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#generate" do
|
27
|
+
let(:pdf) { double('pdf', bounds: double('bounds')) }
|
28
|
+
let(:subject) { DotGrid::Page::Page.new({pdf: pdf})}
|
29
|
+
let(:pattern) { double('pattern') }
|
30
|
+
|
31
|
+
before do
|
32
|
+
allow(pdf).to receive(:start_new_page)
|
33
|
+
allow(subject).to receive(:patterns).and_return([pattern])
|
34
|
+
allow(pattern).to receive(:draw)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "starts a new page" do
|
38
|
+
expect(pdf).to receive(:start_new_page)
|
39
|
+
subject.generate
|
40
|
+
end
|
41
|
+
|
42
|
+
it "draws the pattern" do
|
43
|
+
expect(pattern).to receive(:draw)
|
44
|
+
subject.generate
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
@@ -2,7 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "DotGrid::Page::Planner" do
|
4
4
|
describe "#initialize" do
|
5
|
-
let(:
|
5
|
+
let(:pdf) { double('pdf') }
|
6
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
7
|
+
let(:subject) { DotGrid::Page::Planner.new({pdf: pdf}) }
|
8
|
+
|
9
|
+
before do
|
10
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
11
|
+
end
|
6
12
|
|
7
13
|
it "has a default planner color 1" do
|
8
14
|
expect(subject.planner_color_1).to eq("CCCCCC")
|
@@ -15,17 +21,12 @@ describe "DotGrid::Page::Planner" do
|
|
15
21
|
|
16
22
|
describe "#header_height" do
|
17
23
|
let(:pdf) { double('pdf') }
|
24
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
18
25
|
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
19
26
|
|
20
|
-
|
21
|
-
allow(
|
22
|
-
expect(subject.header_height).to eq(DotGrid::Page::Planner::HEADER_HEIGHT * subject.page_height)
|
27
|
+
before do
|
28
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
23
29
|
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#header_height" do
|
27
|
-
let(:pdf) { double('pdf') }
|
28
|
-
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
29
30
|
|
30
31
|
it "returns the HEADER_HEIGHT of the header height" do
|
31
32
|
allow(subject).to receive(:page_height).and_return(20)
|
@@ -33,28 +34,29 @@ describe "DotGrid::Page::Planner" do
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
36
|
-
describe "#
|
37
|
+
describe "#header_left_color" do
|
38
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
37
39
|
let(:pdf) { double('pdf') }
|
38
|
-
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf,
|
40
|
+
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf, planner_color_1: "DDEEFF" }) }
|
39
41
|
|
40
|
-
|
41
|
-
allow(
|
42
|
-
expect(subject.square_grid_columns).to eq((DotGrid::Page::Planner::SQUARE_GRID_WIDTH * subject.page_width / subject.spacing).floor)
|
42
|
+
before do
|
43
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
43
44
|
end
|
44
|
-
end
|
45
45
|
|
46
|
-
describe "#header_left_color" do
|
47
|
-
let(:pdf) { double('pdf') }
|
48
|
-
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf, planner_color_1: "DDEEFF" }) }
|
49
46
|
it "returns the planner color 1" do
|
50
47
|
expect(subject.header_left_color).to eq("DDEEFF")
|
51
48
|
end
|
52
49
|
end
|
53
50
|
|
54
51
|
describe "#header_left_start" do
|
52
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
55
53
|
let(:pdf) { double('pdf') }
|
56
54
|
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
57
55
|
|
56
|
+
before do
|
57
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
58
|
+
end
|
59
|
+
|
58
60
|
it "returns the the header left_start" do
|
59
61
|
allow(subject).to receive(:page_width).and_return(30)
|
60
62
|
expect(subject.header_left_start).to eq(DotGrid::Page::Planner::HEADER_LEFT_START * subject.page_width)
|
@@ -62,9 +64,14 @@ describe "DotGrid::Page::Planner" do
|
|
62
64
|
end
|
63
65
|
|
64
66
|
describe "#header_gap_width" do
|
67
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
65
68
|
let(:pdf) { double('pdf') }
|
66
69
|
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
67
70
|
|
71
|
+
before do
|
72
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
73
|
+
end
|
74
|
+
|
68
75
|
it "returns the the header gap width" do
|
69
76
|
allow(subject).to receive(:page_width).and_return(30)
|
70
77
|
expect(subject.header_gap_width).to eq(DotGrid::Page::Planner::HEADER_GAP_WIDTH * subject.page_width)
|
@@ -72,29 +79,29 @@ describe "DotGrid::Page::Planner" do
|
|
72
79
|
end
|
73
80
|
|
74
81
|
describe "#header_right_color" do
|
82
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
75
83
|
let(:pdf) { double('pdf') }
|
76
84
|
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf, planner_color_2: "FFEEDD" }) }
|
77
|
-
it "returns the planner color 1" do
|
78
|
-
expect(subject.header_right_color).to eq("FFEEDD")
|
79
|
-
end
|
80
|
-
end
|
81
85
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
let(:square_grid_rows) { 10 }
|
86
|
+
before do
|
87
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
88
|
+
end
|
86
89
|
|
87
|
-
it "returns the
|
88
|
-
|
89
|
-
expect(subject.dot_grid_rows).to eq(square_grid_rows+1)
|
90
|
+
it "returns the planner color 1" do
|
91
|
+
expect(subject.header_right_color).to eq("FFEEDD")
|
90
92
|
end
|
91
93
|
end
|
92
94
|
|
93
95
|
describe "#footer_height" do
|
96
|
+
let(:bounds) { double('bounds', width: 10, height: 20) }
|
94
97
|
let(:pdf) { double('pdf') }
|
95
98
|
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
96
99
|
let(:header_height) { 100 }
|
97
100
|
|
101
|
+
before do
|
102
|
+
allow(pdf).to receive(:bounds).and_return(bounds)
|
103
|
+
end
|
104
|
+
|
98
105
|
it "returns the foot height" do
|
99
106
|
allow(subject).to receive(:header_height).and_return(header_height)
|
100
107
|
expect(subject.footer_height).to eq(header_height*DotGrid::Page::Planner::FOOT_HEIGHT_RATIO)
|
@@ -102,40 +109,21 @@ describe "DotGrid::Page::Planner" do
|
|
102
109
|
end
|
103
110
|
|
104
111
|
describe "#generate" do
|
105
|
-
let(:pdf) { double('pdf') }
|
112
|
+
let(:pdf) { double('pdf', bounds: double('bounds', width: 10, height: 20)) }
|
106
113
|
let(:subject) { DotGrid::Page::Planner.new({:pdf => pdf }) }
|
107
114
|
|
108
115
|
before do
|
109
116
|
allow(subject).to receive(:page_width).and_return(10)
|
110
117
|
allow(subject).to receive(:page_height).and_return(20)
|
111
118
|
allow(pdf).to receive(:start_new_page)
|
112
|
-
allow(
|
113
|
-
allow(
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
it "starts a new page" do
|
118
|
-
expect(pdf).to receive(:start_new_page)
|
119
|
-
subject.generate
|
120
|
-
end
|
121
|
-
|
122
|
-
it "gets the page_width" do
|
123
|
-
expect(subject).to receive(:page_width)
|
124
|
-
subject.generate
|
125
|
-
end
|
126
|
-
|
127
|
-
it "gets the page_height" do
|
128
|
-
expect(subject).to receive(:page_height)
|
129
|
-
subject.generate
|
130
|
-
end
|
131
|
-
|
132
|
-
it "draws the left square grid" do
|
133
|
-
expect(subject).to receive(:draw_square_grid_left)
|
134
|
-
subject.generate
|
119
|
+
allow(subject).to receive(:draw_header).twice
|
120
|
+
allow(subject).to receive(:draw_footer)
|
121
|
+
allow_any_instance_of(::DotGrid::Pattern::SquareGrid).to receive(:draw)
|
122
|
+
allow_any_instance_of(::DotGrid::Pattern::DotGrid).to receive(:draw)
|
135
123
|
end
|
136
124
|
|
137
|
-
it "draws the
|
138
|
-
expect(subject).to receive(:
|
125
|
+
it "draws the header" do
|
126
|
+
expect(subject).to receive(:draw_header).twice
|
139
127
|
subject.generate
|
140
128
|
end
|
141
129
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "DotGrid::Pattern::Checkerboard" do
|
4
4
|
let(:pdf) { double('pdf') }
|
5
|
-
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
5
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { upper_left: [0, 0], height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
6
6
|
let(:subject) { DotGrid::Pattern::Checkerboard.new(params) }
|
7
7
|
|
8
8
|
describe "#rows" do
|
@@ -21,6 +21,7 @@ describe "DotGrid::Pattern::Checkerboard" do
|
|
21
21
|
before do
|
22
22
|
allow(pdf).to receive(:fill_color)
|
23
23
|
allow(pdf).to receive(:fill_rectangle)
|
24
|
+
allow(pdf).to receive(:bounding_box).and_yield
|
24
25
|
end
|
25
26
|
|
26
27
|
it "sets the fill color" do
|
@@ -3,10 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe "DotGrid::Pattern::DotGrid" do
|
4
4
|
describe "#draw" do
|
5
5
|
let(:pdf) { double('pdf') }
|
6
|
-
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
6
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { upper_left: [0, 0], height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
7
|
let(:subject) { DotGrid::Pattern::DotGrid.new(params) }
|
8
8
|
|
9
9
|
before do
|
10
|
+
allow(pdf).to receive(:bounding_box).and_yield
|
10
11
|
allow(pdf).to receive(:fill_color)
|
11
12
|
allow(pdf).to receive(:fill_circle)
|
12
13
|
end
|
@@ -3,11 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe "DotGrid::Pattern::Grid" do
|
4
4
|
describe "#draw" do
|
5
5
|
let(:pdf) { double('pdf') }
|
6
|
-
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
6
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { upper_left: [0, 0], height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
7
|
let(:subject) { DotGrid::Pattern::Grid.new(params) }
|
8
8
|
|
9
9
|
before do
|
10
10
|
allow(pdf).to receive(:stroke_color)
|
11
|
+
allow(pdf).to receive(:bounding_box).and_yield
|
11
12
|
allow(pdf).to receive(:stroke_horizontal_line)
|
12
13
|
allow(pdf).to receive(:stroke_vertical_line)
|
13
14
|
end
|
@@ -17,7 +18,7 @@ describe "DotGrid::Pattern::Grid" do
|
|
17
18
|
subject.draw
|
18
19
|
end
|
19
20
|
|
20
|
-
it "draws
|
21
|
+
it "draws the horizontal lines" do
|
21
22
|
allow(subject).to receive(:rows).and_return(2)
|
22
23
|
expect(pdf).to receive(:stroke_horizontal_line).exactly(3).times
|
23
24
|
subject.draw
|
@@ -4,10 +4,11 @@ describe "DotGrid::Pattern::HorizontalRule" do
|
|
4
4
|
|
5
5
|
describe "#draw" do
|
6
6
|
let(:pdf) { double('pdf') }
|
7
|
-
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { upper_left: [0, 0], height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
8
8
|
let(:subject) { DotGrid::Pattern::HorizontalRule.new(params) }
|
9
9
|
|
10
10
|
before do
|
11
|
+
allow(pdf).to receive(:bounding_box).and_yield
|
11
12
|
allow(pdf).to receive(:stroke_color)
|
12
13
|
allow(pdf).to receive(:stroke_horizontal_line)
|
13
14
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "DotGrid::Pattern::Pattern" do
|
4
4
|
|
5
5
|
let(:pdf) { double('pdf') }
|
6
|
-
let(:params) { { pdf: pdf, bounds: double('bounds', { height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
6
|
+
let(:params) { { pdf: pdf, bounds: double('bounds', { upper_left: [0, 0], height: 20.mm, width: 10.mm } ), spacing: 5 } }
|
7
7
|
let(:subject) { DotGrid::Pattern::Pattern.new(params) }
|
8
8
|
|
9
9
|
describe "#new" do
|
@@ -36,4 +36,13 @@ describe "DotGrid::Pattern::Pattern" do
|
|
36
36
|
expect { subject.draw }.to raise_error
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
40
|
+
describe "#draw_grid" do
|
41
|
+
let(:pdf) { double('null object').as_null_object }
|
42
|
+
|
43
|
+
it "sets the bounding box" do
|
44
|
+
expect(pdf).to receive(:bounding_box)
|
45
|
+
subject.draw_grid
|
46
|
+
end
|
47
|
+
end
|
39
48
|
end
|
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.5
|
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-
|
11
|
+
date: 2014-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- bin/dotgrid
|
116
116
|
- dot_grid.gemspec
|
117
117
|
- lib/dot_grid.rb
|
118
|
+
- lib/dot_grid/bounding_box.rb
|
118
119
|
- lib/dot_grid/generator.rb
|
119
120
|
- lib/dot_grid/page/checkerboard.rb
|
120
121
|
- lib/dot_grid/page/dot_grid.rb
|
@@ -127,12 +128,14 @@ files:
|
|
127
128
|
- lib/dot_grid/pattern/grid.rb
|
128
129
|
- lib/dot_grid/pattern/horizontal_rule.rb
|
129
130
|
- lib/dot_grid/pattern/pattern.rb
|
131
|
+
- lib/dot_grid/pattern/square_grid.rb
|
130
132
|
- lib/dot_grid/version.rb
|
131
133
|
- spec/lib/dot_grid/generator_spec.rb
|
132
134
|
- spec/lib/dot_grid/page/checkerboard_spec.rb
|
133
135
|
- spec/lib/dot_grid/page/dot_grid_spec.rb
|
134
136
|
- spec/lib/dot_grid/page/grid_spec.rb
|
135
137
|
- spec/lib/dot_grid/page/horizontal_rule_spec.rb
|
138
|
+
- spec/lib/dot_grid/page/page_spec.rb
|
136
139
|
- spec/lib/dot_grid/page/planner_spec.rb
|
137
140
|
- spec/lib/dot_grid/pattern/checkerboard_spec.rb
|
138
141
|
- spec/lib/dot_grid/pattern/dot_grid_spec.rb
|
@@ -170,6 +173,7 @@ test_files:
|
|
170
173
|
- spec/lib/dot_grid/page/dot_grid_spec.rb
|
171
174
|
- spec/lib/dot_grid/page/grid_spec.rb
|
172
175
|
- spec/lib/dot_grid/page/horizontal_rule_spec.rb
|
176
|
+
- spec/lib/dot_grid/page/page_spec.rb
|
173
177
|
- spec/lib/dot_grid/page/planner_spec.rb
|
174
178
|
- spec/lib/dot_grid/pattern/checkerboard_spec.rb
|
175
179
|
- spec/lib/dot_grid/pattern/dot_grid_spec.rb
|