squib 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|