squib 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/.gitignore +1 -0
- data/CHANGELOG.md +9 -0
- data/README.md +38 -33
- data/Rakefile +1 -1
- data/bin/squib +6 -6
- data/lib/squib.rb +8 -8
- data/lib/squib/api/background.rb +3 -3
- data/lib/squib/api/data.rb +5 -6
- data/lib/squib/api/image.rb +13 -10
- data/lib/squib/api/save.rb +4 -5
- data/lib/squib/api/settings.rb +4 -4
- data/lib/squib/api/shapes.rb +20 -20
- data/lib/squib/api/text.rb +11 -11
- data/lib/squib/api/units.rb +4 -4
- data/lib/squib/card.rb +5 -5
- data/lib/squib/commands/new.rb +5 -5
- data/lib/squib/constants.rb +10 -10
- data/lib/squib/deck.rb +24 -22
- data/lib/squib/graphics/background.rb +3 -3
- data/lib/squib/graphics/image.rb +13 -6
- data/lib/squib/graphics/save_doc.rb +13 -11
- data/lib/squib/graphics/save_images.rb +3 -3
- data/lib/squib/graphics/shapes.rb +9 -8
- data/lib/squib/graphics/text.rb +61 -59
- data/lib/squib/input_helpers.rb +13 -13
- data/lib/squib/progress.rb +4 -4
- data/lib/squib/project_template/Gemfile +1 -1
- data/lib/squib/project_template/deck.rb +3 -3
- data/lib/squib/version.rb +6 -2
- data/samples/autoscale_font.rb +4 -4
- data/samples/basic.rb +6 -7
- data/samples/cairo_access.rb +27 -0
- data/samples/colors.rb +2 -2
- data/samples/custom-layout.yml +5 -5
- data/samples/custom_config.rb +4 -4
- data/samples/draw_shapes.rb +8 -8
- data/samples/hello_world.rb +2 -3
- data/samples/load_images.rb +6 -1
- data/samples/portrait-landscape.rb +7 -7
- data/samples/ranges.rb +13 -14
- data/samples/save_pdf.rb +2 -2
- data/samples/text_options.rb +17 -17
- data/samples/tgc_proofs.rb +3 -3
- data/samples/use_layout.rb +3 -3
- data/spec/api/api_text_spec.rb +11 -17
- data/spec/commands/new_spec.rb +10 -10
- data/spec/data/easy-circular-extends.yml +1 -1
- data/spec/data/hard-circular-extends.yml +2 -2
- data/spec/data/multi-extends-single-entry.yml +3 -3
- data/spec/data/multi-level-extends.yml +1 -1
- data/spec/data/no-extends.yml +2 -2
- data/spec/data/pre-extends.yml +1 -1
- data/spec/data/self-circular-extends.yml +1 -1
- data/spec/data/single-extends.yml +1 -1
- data/spec/data/single-level-multi-extends.yml +1 -1
- data/spec/deck_spec.rb +62 -62
- data/spec/graphics/graphics_images_spec.rb +79 -0
- data/spec/graphics/graphics_save_doc_spec.rb +66 -0
- data/spec/graphics/graphics_shapes_spec.rb +74 -0
- data/spec/graphics/graphics_text_spec.rb +135 -0
- data/spec/input_helpers_spec.rb +61 -40
- data/spec/samples_run_spec.rb +6 -6
- data/spec/spec_helper.rb +32 -1
- data/squib.gemspec +21 -21
- metadata +22 -14
data/samples/basic.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
require 'squib'
|
3
2
|
|
4
|
-
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
3
|
+
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
5
4
|
'level' => [1,2,3]}
|
6
5
|
|
7
6
|
Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
@@ -10,11 +9,11 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
|
10
9
|
rect x: 75, y: 75, width: 128, height: 128, radius: 25
|
11
10
|
|
12
11
|
text str: data['name'], x: 220, y: 78, font: 'Arial 54'
|
13
|
-
text str: data['level'], x: 75, y: 85, width: 128,
|
12
|
+
text str: data['level'], x: 75, y: 85, width: 128,
|
14
13
|
font: 'Arial 72', align: :center
|
15
14
|
|
16
|
-
|
17
|
-
|
15
|
+
png range: [0,2], file: 'shiny-purse.png', x: 620, y: 75
|
16
|
+
svg range: 1..2, file: 'spanner.svg', x: 620, y: 218
|
18
17
|
|
19
|
-
save prefix: 'basic_', format: :png
|
20
|
-
end
|
18
|
+
save prefix: 'basic_', format: :png
|
19
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'squib'
|
2
|
+
|
3
|
+
Squib::Deck.new(cards: 2) do
|
4
|
+
|
5
|
+
# If you really need something custom-made, the underlying cairo context
|
6
|
+
# can be accessed directly via each Squib::Card
|
7
|
+
#
|
8
|
+
# WARNING! Input validation is not done on Squib::Cards. Proceed at your own risk.
|
9
|
+
|
10
|
+
# The recommended approach is to use Deck's Enumerable, which iterates over Squib::Cards
|
11
|
+
# I also recommend wrapping it in a Cairo save/restore, which Squib calls "use_cairo"
|
12
|
+
each do |card|
|
13
|
+
card.use_cairo do |cairo_context|
|
14
|
+
cairo_context.set_source_color(:white)
|
15
|
+
cairo_context.paint
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Or the square bracket accessors []
|
20
|
+
self[1].use_cairo do |cairo_context|
|
21
|
+
cairo_context.circle(50, 50, 50)
|
22
|
+
cairo_context.set_source_color(:red)
|
23
|
+
cairo_context.fill
|
24
|
+
end
|
25
|
+
|
26
|
+
save_png prefix: 'cairo_access_'
|
27
|
+
end
|
data/samples/colors.rb
CHANGED
@@ -12,5 +12,5 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
12
12
|
text color: '#ffff000000009999', str: '12-hex (alpha)', x: 50, y: y+=50
|
13
13
|
text color: :burnt_orange, str: 'Symbols of constants too', x: 50, y: y+=50
|
14
14
|
|
15
|
-
save_png prefix:
|
16
|
-
end
|
15
|
+
save_png prefix: 'colors_'
|
16
|
+
end
|
data/samples/custom-layout.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
frame:
|
1
|
+
frame:
|
2
2
|
x: 38
|
3
3
|
y: 38
|
4
4
|
width: 750
|
@@ -10,7 +10,7 @@ title:
|
|
10
10
|
width: 625
|
11
11
|
height: 100
|
12
12
|
align: !ruby/symbol center #see http://www.yaml.org/YAML_for_ruby.html#symbols
|
13
|
-
valign: !ruby/symbol middle
|
13
|
+
valign: !ruby/symbol middle
|
14
14
|
subtitle:
|
15
15
|
x: 150
|
16
16
|
y: 150
|
@@ -37,15 +37,15 @@ icon_right:
|
|
37
37
|
# Called "extends"
|
38
38
|
# Any layout can extend another layout, so long as it's not a circle
|
39
39
|
# Order doesn't matter since it's done after YAML procesing
|
40
|
-
# And, if the entry overrides
|
40
|
+
# And, if the entry overrides
|
41
41
|
bonus: #becomes our bonus rectangle
|
42
42
|
x: 250
|
43
43
|
y: 600
|
44
44
|
width: 300
|
45
45
|
height: 200
|
46
46
|
radius: 32
|
47
|
-
bonus_inner:
|
48
|
-
extends: bonus
|
47
|
+
bonus_inner:
|
48
|
+
extends: bonus
|
49
49
|
x: += 10 # i.e. 260
|
50
50
|
y: += 10 # i.e. 610
|
51
51
|
width: -= 20 # i.e. 180
|
data/samples/custom_config.rb
CHANGED
@@ -3,10 +3,10 @@ require 'squib'
|
|
3
3
|
|
4
4
|
Squib::Deck.new(config: 'custom-config.yml') do
|
5
5
|
# Custom color defined in our config
|
6
|
-
background color: :foo
|
6
|
+
background color: :foo
|
7
7
|
|
8
8
|
# Hints are turned on in the config file
|
9
|
-
text str:
|
9
|
+
text str: 'The Title', x: 0, y: 78, width: 825,
|
10
10
|
font: 'Arial 72', align: :center
|
11
11
|
|
12
12
|
# Progress bars are shown for these commands
|
@@ -14,6 +14,6 @@ Squib::Deck.new(config: 'custom-config.yml') do
|
|
14
14
|
png file: 'shiny-purse2.png', x: 620, y: 75
|
15
15
|
svg file: 'spanner2.svg', x: 620, y: 218
|
16
16
|
save_png prefix: 'custom-config_'
|
17
|
-
save_pdf file:
|
17
|
+
save_pdf file: 'custom-config-out.pdf'
|
18
18
|
|
19
|
-
end
|
19
|
+
end
|
data/samples/draw_shapes.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'squib'
|
2
2
|
|
3
|
-
Squib::Deck.new do
|
4
|
-
rect x: 300, y: 300, width: 400, height: 400,
|
3
|
+
Squib::Deck.new do
|
4
|
+
rect x: 300, y: 300, width: 400, height: 400,
|
5
5
|
fill_color: :blue, stroke_color: :red, stroke_width: 50.0
|
6
6
|
|
7
7
|
circle x: 600, y: 600, radius: 75,
|
8
|
-
fill_color: :gray, stroke_color: :green, stroke_width: 8.0
|
8
|
+
fill_color: :gray, stroke_color: :green, stroke_width: 8.0
|
9
9
|
|
10
|
-
triangle x1: 50, y1: 50,
|
11
|
-
x2: 150, y2: 150,
|
10
|
+
triangle x1: 50, y1: 50,
|
11
|
+
x2: 150, y2: 150,
|
12
12
|
x3: 75, y3: 250
|
13
13
|
|
14
|
-
line x1: 50, y1: 550,
|
14
|
+
line x1: 50, y1: 550,
|
15
15
|
x2: 150, y2: 650,
|
16
|
-
stroke_width: 25.0
|
16
|
+
stroke_width: 25.0
|
17
17
|
|
18
18
|
save_png prefix: 'shape_'
|
19
|
-
end
|
19
|
+
end
|
data/samples/hello_world.rb
CHANGED
data/samples/load_images.rb
CHANGED
@@ -19,11 +19,16 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
19
19
|
# relative to the SVG page. See this example in an SVG editor
|
20
20
|
svg file: 'offset.svg', id: 'thing', x: 0, y: 0, width: 600, height: 600
|
21
21
|
|
22
|
-
# Over 15 different blending operators are supported.
|
22
|
+
# Over 15 different blending operators are supported.
|
23
23
|
# See http://cairographics.org/operators
|
24
24
|
# Alpha transparency too
|
25
25
|
png file: 'ball.png', x: 50, y: 700
|
26
26
|
png file: 'grit.png', x: 70, y: 750, blend: :color_burn, alpha: 0.75
|
27
27
|
|
28
|
+
# Images can be rotated around their upper-left corner
|
29
|
+
png file: 'shiny-purse.png', x: 300, y: 700, angle: 0.0 # default (no rotate)
|
30
|
+
png file: 'shiny-purse.png', x: 300, y: 800, angle: Math::PI / 4
|
31
|
+
svg file: 'spanner.svg', x: 300, y: 900, angle: Math::PI / 2 - 0.1
|
32
|
+
|
28
33
|
save prefix: 'load_images_', format: :png
|
29
34
|
end
|
@@ -1,23 +1,23 @@
|
|
1
1
|
require 'squib'
|
2
2
|
|
3
3
|
# For decks with both landscape and portrait orientations,
|
4
|
-
# we recommend using two separate decks.
|
4
|
+
# we recommend using two separate decks.
|
5
5
|
# For print-on-demand, we can rotate all of the images in the final step.
|
6
6
|
|
7
7
|
# Normal cards
|
8
|
-
Squib::Deck.new(width: 825, height: 1125) do
|
8
|
+
Squib::Deck.new(width: 825, height: 1125) do
|
9
9
|
background color: '#aaa'
|
10
10
|
|
11
|
-
text str:
|
11
|
+
text str: 'This is portrait'
|
12
12
|
|
13
|
-
save_png prefix:
|
13
|
+
save_png prefix: 'portrait_'
|
14
14
|
end
|
15
15
|
|
16
16
|
# Money cards are landscape
|
17
17
|
Squib::Deck.new(width: 1125, height: 825) do
|
18
18
|
background color: '#aaa'
|
19
19
|
|
20
|
-
text str:
|
20
|
+
text str: 'This is landscape'
|
21
21
|
|
22
|
-
save_png prefix:
|
23
|
-
end
|
22
|
+
save_png prefix: 'landscape_', rotate: true
|
23
|
+
end
|
data/samples/ranges.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'squib'
|
3
3
|
|
4
|
-
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
4
|
+
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
5
5
|
'type' => ['Thug', 'Thinker', 'Thinker'],
|
6
6
|
'level' => [1,2,3]}
|
7
7
|
|
@@ -12,22 +12,22 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
|
12
12
|
text str: data['level'], x: 65, y: 40, font: 'Arial 72'
|
13
13
|
|
14
14
|
# Could be explicit about using :all, too
|
15
|
-
text range: :all,
|
16
|
-
str: data['type'], x: 40, y: 128, font: 'Arial 18',
|
15
|
+
text range: :all,
|
16
|
+
str: data['type'], x: 40, y: 128, font: 'Arial 18',
|
17
17
|
width: 100, align: :center
|
18
18
|
|
19
19
|
# Ranges are inclusive, zero-based
|
20
|
-
text range: 0..1, str:
|
20
|
+
text range: 0..1, str: 'Thief and Grifter only!!', x: 25, y:200
|
21
21
|
|
22
22
|
# Integers are also allowed
|
23
|
-
text range: 0, str:
|
23
|
+
text range: 0, str: 'Thief only!', x: 25, y: 250
|
24
24
|
|
25
25
|
# Negatives go from the back of the deck
|
26
|
-
text range: -1, str:
|
27
|
-
text range: -2..-1, str:
|
26
|
+
text range: -1, str: 'Mastermind only!', x: 25, y: 250
|
27
|
+
text range: -2..-1, str: 'Grifter and Mastermind only!', x: 25, y: 650
|
28
28
|
|
29
29
|
# We can use Arrays too!
|
30
|
-
text range: [0,2], str:
|
30
|
+
text range: [0,2], str: 'Thief and Mastermind only!!', x: 25, y:300
|
31
31
|
|
32
32
|
# Just about everything in Squib can be given an array that
|
33
33
|
# corresponds to the deck's cards. This allows for each card to be styled differently
|
@@ -40,16 +40,15 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
|
40
40
|
# Useful idiom: construct a hash from card names back to its index (ID),
|
41
41
|
# then use a range. No need to memorize IDs, and you can add cards easily
|
42
42
|
id = {} ; data['name'].each_with_index{ |name,i| id[name] = i}
|
43
|
-
text range: id['Thief']..id['Grifter'],
|
44
|
-
str:
|
43
|
+
text range: id['Thief']..id['Grifter'],
|
44
|
+
str: 'Thief through Grifter with id lookup!!',
|
45
45
|
x:25, y: 400
|
46
46
|
|
47
47
|
# Useful idiom: generate arrays from a column called 'type'
|
48
48
|
type = {}; data['type'].each_with_index{ |t,i| (type[t] ||= []) << i}
|
49
|
-
text range: type['Thinker'],
|
50
|
-
str:
|
49
|
+
text range: type['Thinker'],
|
50
|
+
str: 'Only for Thinkers!',
|
51
51
|
x:25, y: 500
|
52
|
-
|
52
|
+
|
53
53
|
save prefix: 'ranges_', format: :png
|
54
54
|
end
|
55
|
-
|
data/samples/save_pdf.rb
CHANGED
@@ -7,8 +7,8 @@ Squib::Deck.new(width: 825, height: 1125, cards: 16) do
|
|
7
7
|
|
8
8
|
text str: (1..16).to_a, x: 220, y: 78, font: 'Arial 54'
|
9
9
|
|
10
|
-
save_pdf file:
|
10
|
+
save_pdf file: 'sample-save-pdf.pdf', margin: 75, gap: 5, trim: 37
|
11
11
|
|
12
12
|
#Note that our PNGs still are not trimmed even though the pdf ones are
|
13
|
-
save_png range: 1, prefix:
|
13
|
+
save_png range: 1, prefix: 'save_pdf_'
|
14
14
|
end
|
data/samples/text_options.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'squib'
|
3
3
|
|
4
|
-
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
4
|
+
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
5
5
|
'level' => [1,2,3]}
|
6
6
|
longtext = "This is left-justified text.\nWhat do you know about tweetle beetles? well... \nWhen tweetle beetles fight, it's called a tweetle beetle battle. And when they battle in a puddle, it's a tweetle beetle puddle battle. AND when tweetle beetles battle with paddles in a puddle, they call it a tweetle beetle puddle paddle battle. AND... When beetles battle beetles in a puddle paddle battle and the beetle battle puddle is a puddle in a bottle... ..they call this a tweetle beetle bottle puddle paddle battle muddle. AND... When beetles fight these battles in a bottle with their paddles and the bottle's on a poodle and the poodle's eating noodles... ...they call this a muddle puddle tweetle poodle beetle noodle bottle paddle battle."
|
7
7
|
|
@@ -16,52 +16,52 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
|
16
16
|
|
17
17
|
text str: "UTF-8 \u2663", x: 565, y: 150, font: 'Arial weight=900 36'
|
18
18
|
|
19
|
-
text str:
|
19
|
+
text str: 'Font strings are expressive!', x:65, y: 200,
|
20
20
|
font: 'Impact bold italic 36'
|
21
21
|
|
22
|
-
text str:
|
22
|
+
text str: 'Font strings are expressive!', x:65, y: 300,
|
23
23
|
font: 'Arial,Verdana weight=900 style=oblique 36'
|
24
24
|
|
25
|
-
text str:
|
25
|
+
text str: 'Font string sizes can be overridden per card.', x: 65, y: 350,
|
26
26
|
font: 'Impact 36', font_size: [16, 20, 24]
|
27
27
|
|
28
|
-
text str:
|
28
|
+
text str: 'This text has fixed width, fixed height, center-aligned, middle-valigned, and has a red hint',
|
29
29
|
hint: :red,
|
30
30
|
x: 65, y: 400,
|
31
31
|
width: 300, height: 200,
|
32
|
-
align: :center, valign:
|
32
|
+
align: :center, valign: 'MIDDLE', #case-insenstive strings allowed too.
|
33
33
|
font: 'Arial 18'
|
34
34
|
|
35
|
-
text str:
|
35
|
+
text str: 'Ellipsization!\nThe ultimate question of life, the universe, and everything to life and everything is 42',
|
36
36
|
hint: :green, font: 'Arial 22',
|
37
37
|
x: 450, y: 400,
|
38
38
|
width: 280, height: 180,
|
39
39
|
ellipsize: true
|
40
40
|
|
41
41
|
hint text: :cyan
|
42
|
-
text str:
|
42
|
+
text str: 'Text hints are also globally togglable!',
|
43
43
|
x: 65, y: 625,
|
44
44
|
font: 'Arial 22'
|
45
45
|
hint text: :off
|
46
|
-
text str:
|
46
|
+
text str: 'See? No hint here.',
|
47
47
|
x: 565, y: 625,
|
48
48
|
font: 'Arial 22'
|
49
49
|
|
50
|
-
text str:
|
51
|
-
x: 565, y: 675, angle: 0.
|
52
|
-
font: 'Arial 18'
|
50
|
+
text str: 'Rotated',
|
51
|
+
x: 565, y: 675, angle: 0.2,
|
52
|
+
font: 'Arial 18', hint: :red
|
53
53
|
|
54
54
|
text str: longtext, font: 'Arial 16',
|
55
|
-
x: 65, y: 700,
|
56
|
-
width: inches(2.25), height: inches(1),
|
55
|
+
x: 65, y: 700,
|
56
|
+
width: inches(2.25), height: inches(1),
|
57
57
|
justify: true
|
58
58
|
|
59
|
-
text str:
|
59
|
+
text str: '<b>Markup</b> is also <i>quite</i> <s>easy</s> awesome',
|
60
60
|
markup: true,
|
61
61
|
x: 50, y: 1000,
|
62
|
-
width: 750, height: 100,
|
62
|
+
width: 750, height: 100,
|
63
63
|
valign: :bottom,
|
64
64
|
font: 'Arial 32', hint: :cyan
|
65
|
-
|
65
|
+
|
66
66
|
save prefix: 'text_', format: :png
|
67
67
|
end
|
data/samples/tgc_proofs.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'squib'
|
3
3
|
|
4
4
|
# This sample uses a proof overlay from TheGameCrafter.com to check bleed
|
5
|
-
Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
5
|
+
Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
6
6
|
background color: :white
|
7
7
|
rect x: 38, y: 38, width: 750, height: 1050, x_radius: 38, y_radius: 38
|
8
8
|
rect x: 75, y: 75, width: 128, height: 128, x_radius: 25, y_radius: 25
|
@@ -15,6 +15,6 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
15
15
|
|
16
16
|
# TGC proof overlay
|
17
17
|
png file: 'pokercard.png', x:0, y:0, alpha: 0.5
|
18
|
-
|
18
|
+
|
19
19
|
save_png prefix: 'tgc_sample_'
|
20
|
-
end
|
20
|
+
end
|
data/samples/use_layout.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'squib'
|
2
2
|
|
3
|
-
Squib::Deck.new(layout: 'custom-layout.yml') do
|
3
|
+
Squib::Deck.new(layout: 'custom-layout.yml') do
|
4
4
|
background color: :white
|
5
5
|
hint text: :cyan
|
6
6
|
|
@@ -29,6 +29,6 @@ Squib::Deck.new(layout: 'custom-layout.yml') do
|
|
29
29
|
# For debugging purposes, you can always print out the loaded layout
|
30
30
|
#require 'pp'
|
31
31
|
#pp @layout
|
32
|
-
|
32
|
+
|
33
33
|
save_png prefix: 'layout_'
|
34
|
-
end
|
34
|
+
end
|
data/spec/api/api_text_spec.rb
CHANGED
@@ -3,37 +3,31 @@ require 'squib'
|
|
3
3
|
|
4
4
|
describe Squib::Deck, '#text' do
|
5
5
|
|
6
|
-
context
|
6
|
+
context 'fonts' do
|
7
7
|
it "should use the default font when #text and #set_font don't specify" do
|
8
8
|
card = instance_double(Squib::Card)
|
9
|
-
expect(card).to receive(:text).with('a', 'Arial 36',
|
10
|
-
|
11
|
-
|
12
|
-
Squib::Deck.new do
|
13
|
-
@cards = [card]
|
9
|
+
expect(card).to receive(:text).with('a', 'Arial 36', *([anything] * 15)).once
|
10
|
+
Squib::Deck.new do
|
11
|
+
@cards = [card]
|
14
12
|
text str: 'a'
|
15
13
|
end
|
16
14
|
end
|
17
15
|
|
18
16
|
it "should use the #set_font when #text doesn't specify" do
|
19
17
|
card = instance_double(Squib::Card)
|
20
|
-
expect(card).to receive(:text).with('a', 'Times New Roman 16',
|
21
|
-
|
22
|
-
|
23
|
-
Squib::Deck.new do
|
24
|
-
@cards = [card]
|
18
|
+
expect(card).to receive(:text).with('a', 'Times New Roman 16', *([anything] * 15)).once
|
19
|
+
Squib::Deck.new do
|
20
|
+
@cards = [card]
|
25
21
|
set font: 'Times New Roman 16'
|
26
22
|
text str: 'a'
|
27
23
|
end
|
28
24
|
end
|
29
25
|
|
30
|
-
it
|
26
|
+
it 'should use the specified font no matter what' do
|
31
27
|
card = instance_double(Squib::Card)
|
32
|
-
expect(card).to receive(:text).with('a', 'Arial 18',
|
33
|
-
|
34
|
-
|
35
|
-
Squib::Deck.new do
|
36
|
-
@cards = [card]
|
28
|
+
expect(card).to receive(:text).with('a', 'Arial 18', *([anything] * 15)).once
|
29
|
+
Squib::Deck.new do
|
30
|
+
@cards = [card]
|
37
31
|
set font: 'Times New Roman 16'
|
38
32
|
text str: 'a', font: 'Arial 18'
|
39
33
|
end
|