squib 0.10.0 → 0.11.0
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/.travis.yml +6 -0
- data/CHANGELOG.md +24 -3
- data/README.md +4 -3
- data/RELEASE TODO.md +3 -1
- data/docs/_static/css/squibdocs.css +5 -0
- data/docs/conf.py +2 -2
- data/docs/config.rst +5 -0
- data/docs/dsl/ellipse.rst +6 -0
- data/docs/dsl/mm.rst +19 -0
- data/docs/dsl/rect.rst +4 -0
- data/docs/dsl/text.rst +2 -2
- data/docs/dsl/triangle.rst +20 -8
- data/docs/guides/game_icons.rst +4 -0
- data/docs/layouts.rst +55 -0
- data/docs/units.rst +1 -1
- data/lib/squib/api/background.rb +1 -1
- data/lib/squib/api/data.rb +4 -4
- data/lib/squib/api/groups.rb +4 -4
- data/lib/squib/api/image.rb +2 -2
- data/lib/squib/api/save.rb +6 -6
- data/lib/squib/api/settings.rb +4 -4
- data/lib/squib/api/shapes.rb +13 -11
- data/lib/squib/api/text.rb +1 -1
- data/lib/squib/api/text_embed.rb +4 -29
- data/lib/squib/api/units.rb +7 -2
- data/lib/squib/args/arg_loader.rb +2 -14
- data/lib/squib/args/draw.rb +1 -1
- data/lib/squib/args/hand_special.rb +37 -37
- data/lib/squib/args/unit_conversion.rb +2 -0
- data/lib/squib/deck.rb +1 -1
- data/lib/squib/graphics/embedding_utils.rb +28 -0
- data/lib/squib/graphics/shapes.rb +6 -3
- data/lib/squib/graphics/text.rb +49 -52
- data/lib/squib/layout_parser.rb +28 -9
- data/lib/squib/layouts/economy.yml +85 -85
- data/lib/squib/layouts/fantasy.yml +101 -101
- data/lib/squib/layouts/hand.yml +62 -62
- data/lib/squib/layouts/playing-card.yml +35 -35
- data/lib/squib/layouts/tuck_box.yml +45 -45
- data/lib/squib/version.rb +1 -1
- data/samples/custom-config.yml +5 -5
- data/samples/custom_config.rb +18 -18
- data/samples/embed_text.rb +27 -9
- data/samples/layouts/_output/.gitignore +2 -0
- data/samples/{layouts_builtin.rb → layouts/builtin_layouts.rb} +74 -51
- data/samples/{custom-layout.yml → layouts/custom-layout.yml} +0 -0
- data/samples/{custom-layout2.yml → layouts/custom-layout2.yml} +0 -0
- data/samples/layouts/expected_layouts_builtin_economy_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_fantasy_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_hand_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_playing_card_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_tuck_box_00.png +0 -0
- data/samples/{layouts.rb → layouts/layouts.rb} +0 -1
- data/samples/layouts/shiny-purse.png +0 -0
- data/samples/layouts/spanner.svg +91 -0
- data/samples/offset.svg +71 -71
- data/samples/shapes/_draw_shapes.rb +8 -2
- data/spec/api/api_units_spec.rb +37 -0
- data/spec/args/embed_key_spec.rb +13 -13
- data/spec/args/showcase_special_spec.rb +15 -15
- data/spec/args/unit_conversion_spec.rb +8 -1
- data/spec/data/csv/qty.csv +2 -2
- data/spec/data/csv/qty_named.csv +2 -2
- data/spec/data/csv/with_spaces.csv +2 -2
- data/spec/data/layouts/extends-units-mixed.yml +8 -0
- data/spec/data/layouts/extends-units.yml +8 -0
- data/spec/data/samples/autoscale_font/_autoscale_font.rb.txt +9 -0
- data/spec/data/samples/basic.rb.txt +18 -0
- data/spec/data/samples/cairo_access.rb.txt +6 -0
- data/spec/data/samples/colors/_gradients.rb.txt +6 -0
- data/spec/data/samples/config_text_markup.rb.txt +72 -72
- data/spec/data/samples/data/_csv.rb.txt +12 -0
- data/spec/data/samples/data/_excel.rb.txt +30 -0
- data/spec/data/samples/embed_text.rb.txt +70 -5
- data/spec/data/samples/hello_world.rb.txt +36 -36
- data/spec/data/samples/images/_more_load_images.rb.txt +3 -0
- data/spec/data/samples/ranges.rb.txt +9 -0
- data/spec/data/samples/saves/_hand.rb.txt +48 -0
- data/spec/data/samples/saves/_saves.rb.txt +48 -0
- data/spec/data/samples/saves/_showcase.rb.txt +12 -0
- data/spec/data/samples/shapes/_draw_shapes.rb.txt +41 -0
- data/spec/data/samples/text_options.rb.txt +1155 -1125
- data/spec/data/samples/tgc_proofs.rb.txt +6 -0
- data/spec/data/samples/units.rb.txt +9 -0
- data/spec/graphics/embedding_utils_spec.rb +73 -0
- data/spec/layout_parser_spec.rb +42 -17
- data/spec/spec_helper.rb +5 -1
- data/squib.gemspec +5 -3
- metadata +61 -15
|
@@ -4,6 +4,9 @@ cairo: set_source_color(["white"])
|
|
|
4
4
|
cairo: paint([])
|
|
5
5
|
cairo: restore([])
|
|
6
6
|
cairo: save([])
|
|
7
|
+
cairo: translate([38, 38])
|
|
8
|
+
cairo: rotate([0])
|
|
9
|
+
cairo: translate([-38, -38])
|
|
7
10
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
|
8
11
|
cairo: set_source_color(["#0000"])
|
|
9
12
|
cairo: fill_preserve([])
|
|
@@ -15,6 +18,9 @@ cairo: set_dash([[]])
|
|
|
15
18
|
cairo: stroke([])
|
|
16
19
|
cairo: restore([])
|
|
17
20
|
cairo: save([])
|
|
21
|
+
cairo: translate([75, 75])
|
|
22
|
+
cairo: rotate([0])
|
|
23
|
+
cairo: translate([-75, -75])
|
|
18
24
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
|
19
25
|
cairo: set_source_color(["#0000"])
|
|
20
26
|
cairo: fill_preserve([])
|
|
@@ -4,6 +4,9 @@ cairo: set_source_color(["#ddd"])
|
|
|
4
4
|
cairo: paint([])
|
|
5
5
|
cairo: restore([])
|
|
6
6
|
cairo: save([])
|
|
7
|
+
cairo: translate([37.5, 37.5])
|
|
8
|
+
cairo: rotate([0])
|
|
9
|
+
cairo: translate([-37.5, -37.5])
|
|
7
10
|
cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
|
|
8
11
|
cairo: set_source_color(["#0000"])
|
|
9
12
|
cairo: fill_preserve([])
|
|
@@ -15,6 +18,9 @@ cairo: set_dash([[]])
|
|
|
15
18
|
cairo: stroke([])
|
|
16
19
|
cairo: restore([])
|
|
17
20
|
cairo: save([])
|
|
21
|
+
cairo: translate([75.0, 75.0])
|
|
22
|
+
cairo: rotate([0])
|
|
23
|
+
cairo: translate([-75.0, -75.0])
|
|
18
24
|
cairo: rounded_rectangle([75.0, 75.0, 675.0, 975.0, 25, 25])
|
|
19
25
|
cairo: set_source_color(["#0000"])
|
|
20
26
|
cairo: fill_preserve([])
|
|
@@ -26,6 +32,9 @@ cairo: set_dash([[]])
|
|
|
26
32
|
cairo: stroke([])
|
|
27
33
|
cairo: restore([])
|
|
28
34
|
cairo: save([])
|
|
35
|
+
cairo: translate([472.4409444, 472.4409444])
|
|
36
|
+
cairo: rotate([0])
|
|
37
|
+
cairo: translate([-472.4409444, -472.4409444])
|
|
29
38
|
cairo: rounded_rectangle([472.4409444, 472.4409444, 100, 100, 0, 0])
|
|
30
39
|
cairo: set_source_color(["#0000"])
|
|
31
40
|
cairo: fill_preserve([])
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'squib/graphics/embedding_utils'
|
|
3
|
+
|
|
4
|
+
describe Squib::EmbeddingUtils do
|
|
5
|
+
|
|
6
|
+
context(:indices) do
|
|
7
|
+
it 'returns nothing when given nothing' do
|
|
8
|
+
expect(Squib::EmbeddingUtils.indices('just some text', [])).to eq({})
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'returns emptiness for given keys that are not in the string' do
|
|
12
|
+
str = 'just some text'
|
|
13
|
+
keys = [':tool:']
|
|
14
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
15
|
+
':tool:' => []
|
|
16
|
+
})
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'returns correctly for one key, one time' do
|
|
20
|
+
str = 'some :tool: text'
|
|
21
|
+
keys = [':tool:']
|
|
22
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
23
|
+
':tool:' => [5..11]
|
|
24
|
+
})
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'handles one key, multiple times' do
|
|
28
|
+
str = 'some :tool: text :tool:'
|
|
29
|
+
keys = [':tool:']
|
|
30
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
31
|
+
':tool:' => [5..11, 17..23]
|
|
32
|
+
})
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'handles one key, multiple times next to each other' do
|
|
36
|
+
str = 'some :tool::tool: text'
|
|
37
|
+
keys = [':tool:']
|
|
38
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
39
|
+
':tool:' => [5..11, 11..17]
|
|
40
|
+
})
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'handles multiple keys, one time each' do
|
|
44
|
+
str = 'some :tool: heart text'
|
|
45
|
+
keys = %w(:tool: heart)
|
|
46
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
47
|
+
':tool:' => [5..11],
|
|
48
|
+
'heart' => [12..17]
|
|
49
|
+
})
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it 'handles multiple keys, multiple times each' do
|
|
53
|
+
str = ':tool:some :tool: heart text heart tool'
|
|
54
|
+
keys = %w(:tool: heart)
|
|
55
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
56
|
+
':tool:' => [0..6, 11..17],
|
|
57
|
+
'heart' => [18..23, 29..34]
|
|
58
|
+
})
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'handles multibyte properly' do
|
|
62
|
+
str = '💡 📷 :tool: heart text'
|
|
63
|
+
keys = %w(:tool: heart 💡)
|
|
64
|
+
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
|
|
65
|
+
':tool:' => [10..16],
|
|
66
|
+
'heart' => [17..22],
|
|
67
|
+
'💡' => [3..4]
|
|
68
|
+
})
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
data/spec/layout_parser_spec.rb
CHANGED
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
|
3
3
|
describe Squib::LayoutParser do
|
|
4
4
|
|
|
5
5
|
it 'loads a normal layout with no extends' do
|
|
6
|
-
layout =
|
|
6
|
+
layout = subject.load_layout(layout_file('no-extends.yml'))
|
|
7
7
|
expect(layout).to eq({ 'frame' => {
|
|
8
8
|
'x' => 38,
|
|
9
9
|
'valign' => :middle,
|
|
@@ -15,7 +15,7 @@ describe Squib::LayoutParser do
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it 'loads with a single extends' do
|
|
18
|
-
layout =
|
|
18
|
+
layout = subject.load_layout(layout_file('single-extends.yml'))
|
|
19
19
|
expect(layout).to eq({ 'frame' => {
|
|
20
20
|
'x' => 38,
|
|
21
21
|
'y' => 38,
|
|
@@ -31,7 +31,7 @@ describe Squib::LayoutParser do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it 'applies the extends regardless of order' do
|
|
34
|
-
layout =
|
|
34
|
+
layout = subject.load_layout(layout_file('pre-extends.yml'))
|
|
35
35
|
expect(layout).to eq({ 'frame' => {
|
|
36
36
|
'x' => 38,
|
|
37
37
|
'y' => 38,
|
|
@@ -47,7 +47,7 @@ describe Squib::LayoutParser do
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
it 'applies the single-level extends multiple times' do
|
|
50
|
-
layout =
|
|
50
|
+
layout = subject.load_layout(layout_file('single-level-multi-extends.yml'))
|
|
51
51
|
expect(layout).to eq({ 'frame' => {
|
|
52
52
|
'x' => 38,
|
|
53
53
|
'y' => 38,
|
|
@@ -69,7 +69,7 @@ describe Squib::LayoutParser do
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
it 'applies multiple extends in a single rule' do
|
|
72
|
-
layout =
|
|
72
|
+
layout = subject.load_layout(layout_file('multi-extends-single-entry.yml'))
|
|
73
73
|
expect(layout).to eq({ 'aunt' => {
|
|
74
74
|
'a' => 101,
|
|
75
75
|
'b' => 102,
|
|
@@ -93,7 +93,7 @@ describe Squib::LayoutParser do
|
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
it 'applies multi-level extends' do
|
|
96
|
-
layout =
|
|
96
|
+
layout = subject.load_layout(layout_file('multi-level-extends.yml'))
|
|
97
97
|
expect(layout).to eq({ 'frame' => {
|
|
98
98
|
'x' => 38,
|
|
99
99
|
'y' => 38,
|
|
@@ -116,26 +116,26 @@ describe Squib::LayoutParser do
|
|
|
116
116
|
|
|
117
117
|
it 'fails on a self-circular extends' do
|
|
118
118
|
file = layout_file('self-circular-extends.yml')
|
|
119
|
-
expect {
|
|
119
|
+
expect { subject.load_layout(file)}
|
|
120
120
|
.to raise_error(RuntimeError, 'Invalid layout: circular extends with \'a\'')
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
it 'fails on a easy-circular extends' do
|
|
124
124
|
file = layout_file('easy-circular-extends.yml')
|
|
125
|
-
expect {
|
|
125
|
+
expect { subject.load_layout(file)}
|
|
126
126
|
.to raise_error(RuntimeError, 'Invalid layout: circular extends with \'a\'')
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
it 'hard on a easy-circular extends' do
|
|
130
130
|
file = layout_file('hard-circular-extends.yml')
|
|
131
|
-
expect {
|
|
131
|
+
expect { subject.load_layout(file)}
|
|
132
132
|
.to raise_error(RuntimeError, 'Invalid layout: circular extends with \'a\'')
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
it 'redefines keys on multiple layouts' do
|
|
136
136
|
a = layout_file('multifile-a.yml')
|
|
137
137
|
b = layout_file('multifile-b.yml')
|
|
138
|
-
layout =
|
|
138
|
+
layout = subject.load_layout([a, b])
|
|
139
139
|
expect(layout).to eq({
|
|
140
140
|
'title' => { 'x' => 300 },
|
|
141
141
|
'subtitle' => { 'x' => 200 },
|
|
@@ -146,7 +146,7 @@ describe Squib::LayoutParser do
|
|
|
146
146
|
it 'evaluates extends on each file first' do
|
|
147
147
|
a = layout_file('multifile-extends-a.yml')
|
|
148
148
|
b = layout_file('multifile-extends-b.yml')
|
|
149
|
-
layout =
|
|
149
|
+
layout = subject.load_layout([a, b])
|
|
150
150
|
expect(layout).to eq({
|
|
151
151
|
'grandparent' => { 'x' => 100 },
|
|
152
152
|
'parent_a' => { 'x' => 110, 'extends' => 'grandparent' },
|
|
@@ -157,12 +157,12 @@ describe Squib::LayoutParser do
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
it 'loads nothing on an empty layout file' do
|
|
160
|
-
layout =
|
|
160
|
+
layout = subject.load_layout(layout_file('empty.yml'))
|
|
161
161
|
expect(layout).to eq({})
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
it 'handles extends on a rule with no args' do
|
|
165
|
-
layout =
|
|
165
|
+
layout = subject.load_layout(layout_file('empty-rule.yml'))
|
|
166
166
|
expect(layout).to eq({
|
|
167
167
|
'empty' => nil
|
|
168
168
|
})
|
|
@@ -170,14 +170,14 @@ describe Squib::LayoutParser do
|
|
|
170
170
|
|
|
171
171
|
it 'logs an error when a file is not found' do
|
|
172
172
|
expect(Squib.logger).to receive(:error).once
|
|
173
|
-
|
|
173
|
+
subject.load_layout('yeti')
|
|
174
174
|
end
|
|
175
175
|
|
|
176
176
|
it 'freaks out if you extend something doesn\'t exist' do
|
|
177
177
|
expect(Squib.logger)
|
|
178
178
|
.to receive(:error)
|
|
179
179
|
.with("Processing layout: 'verbal' attempts to extend a missing 'kaisersoze'")
|
|
180
|
-
layout =
|
|
180
|
+
layout = subject.load_layout(layout_file('extends-nonexists.yml'))
|
|
181
181
|
expect(layout).to eq({
|
|
182
182
|
'verbal' => {
|
|
183
183
|
'font_size' => 25,
|
|
@@ -186,11 +186,36 @@ describe Squib::LayoutParser do
|
|
|
186
186
|
})
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
+
it 'does unit conversion when extending' do
|
|
190
|
+
layout = subject.load_layout(layout_file('extends-units.yml'))
|
|
191
|
+
expect(layout).to eq({
|
|
192
|
+
'parent' => { 'x' => '0.5in', 'y' => '1in'},
|
|
193
|
+
'child' => { 'x' => 450.0, 'y' => 150.0, 'extends' => 'parent' },
|
|
194
|
+
})
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it 'does unit conversion on non-300 dpis' do
|
|
198
|
+
parser = Squib::LayoutParser.new(100)
|
|
199
|
+
layout = parser.load_layout(layout_file('extends-units.yml'))
|
|
200
|
+
expect(layout).to eq({
|
|
201
|
+
'parent' => { 'x' => '0.5in', 'y' => '1in'},
|
|
202
|
+
'child' => { 'x' => 150.0, 'y' => 50.0, 'extends' => 'parent' },
|
|
203
|
+
})
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it 'does mixed unit conversion when extending' do
|
|
207
|
+
layout = subject.load_layout(layout_file('extends-units-mixed.yml'))
|
|
208
|
+
expect(layout).to eq({
|
|
209
|
+
'parent' => { 'x' => '0.5in', 'y' => '1in'},
|
|
210
|
+
'child' => { 'x' => 450.0, 'y' => 150.0, 'extends' => 'parent' },
|
|
211
|
+
})
|
|
212
|
+
end
|
|
213
|
+
|
|
189
214
|
it 'loads progressively on multiple calls' do
|
|
190
215
|
a = layout_file('multifile-a.yml')
|
|
191
216
|
b = layout_file('multifile-b.yml')
|
|
192
|
-
layout =
|
|
193
|
-
layout =
|
|
217
|
+
layout = subject.load_layout(a)
|
|
218
|
+
layout = subject.load_layout(b, layout)
|
|
194
219
|
expect(layout).to eq({
|
|
195
220
|
'title' => { 'x' => 300 },
|
|
196
221
|
'subtitle' => { 'x' => 200 },
|
data/spec/spec_helper.rb
CHANGED
|
@@ -65,6 +65,7 @@ def scrub_hex(str)
|
|
|
65
65
|
str.gsub(/0x\w{1,8}/, '')
|
|
66
66
|
.gsub(/ptr=\w{1,8}/, '')
|
|
67
67
|
.gsub(/#<Pango::FontDescription:.*>/, '')
|
|
68
|
+
.gsub(/#<Pango::AttrList:.*>/, 'Pango::AttrList')
|
|
68
69
|
.gsub(/#<Cairo::ImageSurface:.*>/, 'ImageSurface')
|
|
69
70
|
.gsub(/#<Cairo::LinearPattern:.*>/, 'LinearPattern')
|
|
70
71
|
.gsub(/#<Cairo::RadialPattern:.*>/, 'RadialPattern')
|
|
@@ -103,6 +104,8 @@ def mock_cairo(strio)
|
|
|
103
104
|
allow(pango).to receive(:alignment).and_return(Pango::Layout::Alignment::LEFT)
|
|
104
105
|
allow(pango).to receive(:text).and_return('foo')
|
|
105
106
|
allow(pango).to receive(:context).and_return(pango_cxt)
|
|
107
|
+
allow(pango).to receive(:attributes).and_return(nil)
|
|
108
|
+
allow(pango_cxt).to receive(:set_shape_renderer)
|
|
106
109
|
allow(pango_cxt).to receive(:font_options=)
|
|
107
110
|
allow(iter).to receive(:next_char!).and_return(false)
|
|
108
111
|
allow(iter).to receive(:char_extents).and_return(Pango::Rectangle.new(5, 5, 5, 5))
|
|
@@ -120,7 +123,8 @@ def mock_cairo(strio)
|
|
|
120
123
|
end
|
|
121
124
|
|
|
122
125
|
%w(font_description= text= width= height= wrap= ellipsize= alignment=
|
|
123
|
-
justify= spacing= markup= ellipsized?
|
|
126
|
+
justify= spacing= markup= ellipsized? attributes=
|
|
127
|
+
set_shape_renderer).each do |m|
|
|
124
128
|
allow(pango).to receive(m) {|*args| strio << scrub_hex("pango: #{m}(#{args})\n") }
|
|
125
129
|
end
|
|
126
130
|
|
data/squib.gemspec
CHANGED
|
@@ -28,12 +28,14 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
spec.require_paths = ['lib']
|
|
29
29
|
|
|
30
30
|
spec.add_runtime_dependency 'cairo', '~> 1.15.2'
|
|
31
|
-
spec.add_runtime_dependency 'pango', '~> 3.0.
|
|
31
|
+
spec.add_runtime_dependency 'pango', '~> 3.0.9'
|
|
32
32
|
spec.add_runtime_dependency 'nokogiri', '~> 1.6.7'
|
|
33
|
-
spec.add_runtime_dependency 'roo', '~> 2.
|
|
34
|
-
spec.add_runtime_dependency 'rsvg2', '~> 3.0.
|
|
33
|
+
spec.add_runtime_dependency 'roo', '~> 2.4.0'
|
|
34
|
+
spec.add_runtime_dependency 'rsvg2', '~> 3.0.9'
|
|
35
35
|
spec.add_runtime_dependency 'mercenary', '~> 0.3.4'
|
|
36
36
|
spec.add_runtime_dependency 'ruby-progressbar', '~> 1.8'
|
|
37
|
+
spec.add_runtime_dependency 'gobject-introspection', '~> 3.0.9' # for bug 172
|
|
38
|
+
spec.add_runtime_dependency 'gio2', '~> 3.0.9' # for bug 172
|
|
37
39
|
|
|
38
40
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
|
39
41
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: squib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andy Meneely
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-09-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: cairo
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 3.0.
|
|
33
|
+
version: 3.0.9
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 3.0.
|
|
40
|
+
version: 3.0.9
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: nokogiri
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,28 +58,28 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 2.
|
|
61
|
+
version: 2.4.0
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 2.
|
|
68
|
+
version: 2.4.0
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: rsvg2
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 3.0.
|
|
75
|
+
version: 3.0.9
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 3.0.
|
|
82
|
+
version: 3.0.9
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: mercenary
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -108,6 +108,34 @@ dependencies:
|
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: '1.8'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: gobject-introspection
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: 3.0.9
|
|
118
|
+
type: :runtime
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: 3.0.9
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: gio2
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - "~>"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 3.0.9
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - "~>"
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: 3.0.9
|
|
111
139
|
- !ruby/object:Gem::Dependency
|
|
112
140
|
name: bundler
|
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -248,8 +276,8 @@ extra_rdoc_files:
|
|
|
248
276
|
- samples/intro/03_layout.rb
|
|
249
277
|
- samples/intro/04_arrays.rb
|
|
250
278
|
- samples/intro/05_excel.rb
|
|
251
|
-
- samples/layouts.rb
|
|
252
|
-
- samples/
|
|
279
|
+
- samples/layouts/builtin_layouts.rb
|
|
280
|
+
- samples/layouts/layouts.rb
|
|
253
281
|
- samples/ranges.rb
|
|
254
282
|
- samples/saves/_hand.rb
|
|
255
283
|
- samples/saves/_portrait_landscape.rb
|
|
@@ -322,6 +350,7 @@ files:
|
|
|
322
350
|
- docs/dsl/inches.rst
|
|
323
351
|
- docs/dsl/index.rst
|
|
324
352
|
- docs/dsl/line.rst
|
|
353
|
+
- docs/dsl/mm.rst
|
|
325
354
|
- docs/dsl/png.rst
|
|
326
355
|
- docs/dsl/polygon.rst
|
|
327
356
|
- docs/dsl/rect.rst
|
|
@@ -395,6 +424,7 @@ files:
|
|
|
395
424
|
- lib/squib/deck.rb
|
|
396
425
|
- lib/squib/graphics/background.rb
|
|
397
426
|
- lib/squib/graphics/cairo_context_wrapper.rb
|
|
427
|
+
- lib/squib/graphics/embedding_utils.rb
|
|
398
428
|
- lib/squib/graphics/gradient_regex.rb
|
|
399
429
|
- lib/squib/graphics/hand.rb
|
|
400
430
|
- lib/squib/graphics/image.rb
|
|
@@ -438,8 +468,6 @@ files:
|
|
|
438
468
|
- samples/config_text_markup.rb
|
|
439
469
|
- samples/config_text_markup.yml
|
|
440
470
|
- samples/custom-config.yml
|
|
441
|
-
- samples/custom-layout.yml
|
|
442
|
-
- samples/custom-layout2.yml
|
|
443
471
|
- samples/custom_config.rb
|
|
444
472
|
- samples/customconfig-imgdir/shiny-purse2.png
|
|
445
473
|
- samples/customconfig-imgdir/spanner2.svg
|
|
@@ -456,8 +484,18 @@ files:
|
|
|
456
484
|
- samples/intro/03_layout.rb
|
|
457
485
|
- samples/intro/04_arrays.rb
|
|
458
486
|
- samples/intro/05_excel.rb
|
|
459
|
-
- samples/layouts
|
|
460
|
-
- samples/
|
|
487
|
+
- samples/layouts/_output/.gitignore
|
|
488
|
+
- samples/layouts/builtin_layouts.rb
|
|
489
|
+
- samples/layouts/custom-layout.yml
|
|
490
|
+
- samples/layouts/custom-layout2.yml
|
|
491
|
+
- samples/layouts/expected_layouts_builtin_economy_00.png
|
|
492
|
+
- samples/layouts/expected_layouts_builtin_fantasy_00.png
|
|
493
|
+
- samples/layouts/expected_layouts_builtin_hand_00.png
|
|
494
|
+
- samples/layouts/expected_layouts_builtin_playing_card_00.png
|
|
495
|
+
- samples/layouts/expected_layouts_builtin_tuck_box_00.png
|
|
496
|
+
- samples/layouts/layouts.rb
|
|
497
|
+
- samples/layouts/shiny-purse.png
|
|
498
|
+
- samples/layouts/spanner.svg
|
|
461
499
|
- samples/load_images_config.yml
|
|
462
500
|
- samples/offset.svg
|
|
463
501
|
- samples/pokercard.png
|
|
@@ -477,6 +515,7 @@ files:
|
|
|
477
515
|
- samples/units.rb
|
|
478
516
|
- spec/api/api_data_spec.rb
|
|
479
517
|
- spec/api/api_settings_spec.rb
|
|
518
|
+
- spec/api/api_units_spec.rb
|
|
480
519
|
- spec/args/box_spec.rb
|
|
481
520
|
- spec/args/draw_spec.rb
|
|
482
521
|
- spec/args/embed_key_spec.rb
|
|
@@ -509,6 +548,8 @@ files:
|
|
|
509
548
|
- spec/data/layouts/empty-rule.yml
|
|
510
549
|
- spec/data/layouts/empty.yml
|
|
511
550
|
- spec/data/layouts/extends-nonexists.yml
|
|
551
|
+
- spec/data/layouts/extends-units-mixed.yml
|
|
552
|
+
- spec/data/layouts/extends-units.yml
|
|
512
553
|
- spec/data/layouts/hard-circular-extends.yml
|
|
513
554
|
- spec/data/layouts/multi-extends-single-entry.yml
|
|
514
555
|
- spec/data/layouts/multi-level-extends.yml
|
|
@@ -550,6 +591,7 @@ files:
|
|
|
550
591
|
- spec/data/xlsx/with_macros.xlsm
|
|
551
592
|
- spec/deck_spec.rb
|
|
552
593
|
- spec/graphics/cairo_context_wrapper_spec.rb
|
|
594
|
+
- spec/graphics/embedding_utils_spec.rb
|
|
553
595
|
- spec/graphics/graphics_save_doc_spec.rb
|
|
554
596
|
- spec/layout_parser_spec.rb
|
|
555
597
|
- spec/logger_spec.rb
|
|
@@ -641,13 +683,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
641
683
|
version: '0'
|
|
642
684
|
requirements: []
|
|
643
685
|
rubyforge_project:
|
|
644
|
-
rubygems_version: 2.
|
|
686
|
+
rubygems_version: 2.5.1
|
|
645
687
|
signing_key:
|
|
646
688
|
specification_version: 2
|
|
647
689
|
summary: A Ruby DSL for prototyping card games
|
|
648
690
|
test_files:
|
|
649
691
|
- spec/api/api_data_spec.rb
|
|
650
692
|
- spec/api/api_settings_spec.rb
|
|
693
|
+
- spec/api/api_units_spec.rb
|
|
651
694
|
- spec/args/box_spec.rb
|
|
652
695
|
- spec/args/draw_spec.rb
|
|
653
696
|
- spec/args/embed_key_spec.rb
|
|
@@ -680,6 +723,8 @@ test_files:
|
|
|
680
723
|
- spec/data/layouts/empty-rule.yml
|
|
681
724
|
- spec/data/layouts/empty.yml
|
|
682
725
|
- spec/data/layouts/extends-nonexists.yml
|
|
726
|
+
- spec/data/layouts/extends-units-mixed.yml
|
|
727
|
+
- spec/data/layouts/extends-units.yml
|
|
683
728
|
- spec/data/layouts/hard-circular-extends.yml
|
|
684
729
|
- spec/data/layouts/multi-extends-single-entry.yml
|
|
685
730
|
- spec/data/layouts/multi-level-extends.yml
|
|
@@ -721,6 +766,7 @@ test_files:
|
|
|
721
766
|
- spec/data/xlsx/with_macros.xlsm
|
|
722
767
|
- spec/deck_spec.rb
|
|
723
768
|
- spec/graphics/cairo_context_wrapper_spec.rb
|
|
769
|
+
- spec/graphics/embedding_utils_spec.rb
|
|
724
770
|
- spec/graphics/graphics_save_doc_spec.rb
|
|
725
771
|
- spec/layout_parser_spec.rb
|
|
726
772
|
- spec/logger_spec.rb
|