squib 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +29 -29
  3. data/.travis.yml +6 -6
  4. data/.yardopts +7 -7
  5. data/CHANGELOG.md +19 -0
  6. data/Gemfile +2 -2
  7. data/LICENSE.txt +22 -22
  8. data/README.md +256 -244
  9. data/Rakefile +11 -11
  10. data/bin/squib +18 -18
  11. data/lib/squib.rb +31 -31
  12. data/lib/squib/api/background.rb +18 -18
  13. data/lib/squib/api/data.rb +52 -52
  14. data/lib/squib/api/image.rb +66 -66
  15. data/lib/squib/api/save.rb +43 -43
  16. data/lib/squib/api/settings.rb +37 -38
  17. data/lib/squib/api/shapes.rb +116 -116
  18. data/lib/squib/api/text.rb +53 -50
  19. data/lib/squib/api/units.rb +16 -16
  20. data/lib/squib/card.rb +41 -41
  21. data/lib/squib/commands/new.rb +43 -43
  22. data/lib/squib/constants.rb +108 -104
  23. data/lib/squib/deck.rb +170 -116
  24. data/lib/squib/graphics/background.rb +13 -13
  25. data/lib/squib/graphics/image.rb +47 -47
  26. data/lib/squib/graphics/save_doc.rb +54 -54
  27. data/lib/squib/graphics/save_images.rb +32 -32
  28. data/lib/squib/graphics/shapes.rb +59 -59
  29. data/lib/squib/graphics/text.rb +116 -113
  30. data/lib/squib/input_helpers.rb +193 -193
  31. data/lib/squib/progress.rb +37 -37
  32. data/lib/squib/project_template/.gitignore +4 -4
  33. data/lib/squib/project_template/ABOUT.md +19 -19
  34. data/lib/squib/project_template/Gemfile +2 -2
  35. data/lib/squib/project_template/PNP NOTES.md +3 -3
  36. data/lib/squib/project_template/config.yml +19 -19
  37. data/lib/squib/project_template/deck.rb +5 -5
  38. data/lib/squib/version.rb +6 -6
  39. data/samples/autoscale_font.rb +27 -0
  40. data/samples/basic.rb +19 -19
  41. data/samples/colors.rb +15 -15
  42. data/samples/custom-config.yml +5 -5
  43. data/samples/custom-layout.yml +59 -39
  44. data/samples/custom_config.rb +18 -18
  45. data/samples/customconfig-imgdir/spanner2.svg +91 -91
  46. data/samples/draw_shapes.rb +18 -18
  47. data/samples/excel.rb +19 -19
  48. data/samples/hello_world.rb +6 -6
  49. data/samples/load_images.rb +29 -29
  50. data/samples/offset.svg +71 -71
  51. data/samples/portrait-landscape.rb +22 -22
  52. data/samples/ranges.rb +55 -55
  53. data/samples/save_pdf.rb +14 -14
  54. data/samples/spanner.svg +91 -91
  55. data/samples/text_options.rb +67 -60
  56. data/samples/tgc_proofs.rb +19 -19
  57. data/samples/units.rb +12 -12
  58. data/samples/use_layout.rb +33 -28
  59. data/spec/api/api_text_spec.rb +43 -43
  60. data/spec/commands/new_spec.rb +47 -47
  61. data/spec/data/easy-circular-extends.yml +6 -0
  62. data/spec/data/hard-circular-extends.yml +9 -0
  63. data/spec/data/multi-extends-single-entry.yml +14 -13
  64. data/spec/data/multi-level-extends.yml +9 -9
  65. data/spec/data/no-extends.yml +5 -5
  66. data/spec/data/pre-extends.yml +7 -0
  67. data/spec/data/self-circular-extends.yml +3 -0
  68. data/spec/data/single-extends.yml +7 -7
  69. data/spec/data/single-level-multi-extends.yml +11 -11
  70. data/spec/deck_spec.rb +188 -147
  71. data/spec/input_helpers_spec.rb +116 -116
  72. data/spec/samples_run_spec.rb +19 -19
  73. data/squib.gemspec +46 -46
  74. metadata +17 -7
@@ -1,117 +1,117 @@
1
- require 'spec_helper'
2
- require 'squib/input_helpers'
3
-
4
- class DummyDeck
5
- include Squib::InputHelpers
6
- attr_accessor :layout, :cards, :custom_colors
7
- end
8
-
9
- module Squib
10
- def logger=(l)
11
- @logger = l
12
- end
13
- module_function 'logger='
14
- end
15
-
16
- describe Squib::InputHelpers do
17
-
18
-
19
- before(:each) do
20
- @deck = DummyDeck.new
21
- @deck.layout = {
22
- 'blah' => {x: 25},
23
- 'apples' => {x: 35},
24
- 'oranges' => {y: 45},
25
- }
26
- @deck.cards = %w(a b)
27
- @deck.custom_colors = {}
28
- end
29
-
30
- context '#layoutify' do
31
- it "warns on the logger when the layout doesn't exist" do
32
- @old_logger = Squib.logger
33
- Squib.logger = instance_double(Logger)
34
- expect(Squib.logger).to receive(:warn).with("Layout entry 'foo' does not exist.").twice
35
- expect(Squib.logger).to receive(:debug)
36
- expect(@deck.send(:layoutify, {layout: :foo})).to eq({layout: [:foo,:foo]})
37
- Squib.logger = @old_logger
38
- end
39
-
40
- it "applies the layout in a normal situation" do
41
- expect(@deck.send(:layoutify, {layout: :blah})).to \
42
- eq({layout: [:blah, :blah], x: [25, 25]})
43
- end
44
-
45
- it "applies two different layouts for two different situations" do
46
- expect(@deck.send(:layoutify, {layout: ['blah', 'apples']})).to \
47
- eq({layout: ['blah','apples'], x: [25, 35]})
48
- end
49
-
50
- it "still has nils when not applied two different layouts differ in structure" do
51
- expect(@deck.send(:layoutify, {layout: ['apples', 'oranges']})).to \
52
- eq({layout: ['apples','oranges'], x: [35], y: [nil, 45]})
53
- #...this might behavior that is hard to debug for users. Trying to come up with a warning or something...
54
- end
55
-
56
- it "also looks up based on strings" do
57
- expect(@deck.send(:layoutify, {layout: 'blah'})).to \
58
- eq({layout: ['blah','blah'], x: [25, 25]})
59
- end
60
-
61
- end
62
-
63
- context '#rangeify' do
64
- it "must be within the card size range" do
65
- expect{@deck.send(:rangeify, {range: 2..3})}.to \
66
- raise_error(ArgumentError, '2..3 is outside of deck range of 0..1')
67
- end
68
-
69
- it "cannot be nil" do
70
- expect{@deck.send(:rangeify, {range: nil})}.to \
71
- raise_error(RuntimeError, 'Range cannot be nil')
72
- end
73
-
74
- it "defaults to a range of all cards if :all" do
75
- expect(@deck.send(:rangeify, {range: :all})).to eq({range: 0..1})
76
- end
77
- end
78
-
79
- context "#fileify" do
80
- it "should throw an error if the file doesn't exist" do
81
- expect{@deck.send(:fileify, {file: 'nonexist.txt'}, true)}.to \
82
- raise_error(RuntimeError,"File #{File.expand_path('nonexist.txt')} does not exist!")
83
- end
84
- end
85
-
86
- context "#dir" do
87
- it "should raise an error if the directory does not exist" do
88
- expect{@deck.send(:dirify, {dir: 'nonexist'}, :dir, false)}.to \
89
- raise_error(RuntimeError,"'nonexist' does not exist!")
90
- end
91
- end
92
-
93
- context "#colorify" do
94
- it "should parse if nillable" do
95
- color = @deck.send(:colorify, {color: ['#fff']}, true)[:color]
96
- expect(color.to_a[0].to_a).to eq([1.0, 1.0, 1.0, 1.0])
97
- end
98
-
99
- it "raises and error if the color doesn't exist" do
100
- expect{ @deck.send(:colorify, {color: [:nonexist]}, false) }.to \
101
- raise_error(ArgumentError, "unknown color name: nonexist")
102
- end
103
-
104
- it "pulls from config's custom colors" do
105
- @deck.custom_colors['foo'] = "#abc"
106
- expect(@deck.send(:colorify, {color: [:foo]}, false)[:color][0].to_s).to \
107
- eq('#AABBCCFF')
108
- end
109
-
110
- it "pulls from config's custom colors even when a string" do
111
- @deck.custom_colors['foo'] = "#abc"
112
- expect(@deck.send(:colorify, {color: ['foo']}, false)[:color][0].to_s).to \
113
- eq('#AABBCCFF')
114
- end
115
- end
116
-
1
+ require 'spec_helper'
2
+ require 'squib/input_helpers'
3
+
4
+ class DummyDeck
5
+ include Squib::InputHelpers
6
+ attr_accessor :layout, :cards, :custom_colors
7
+ end
8
+
9
+ module Squib
10
+ def logger=(l)
11
+ @logger = l
12
+ end
13
+ module_function 'logger='
14
+ end
15
+
16
+ describe Squib::InputHelpers do
17
+
18
+
19
+ before(:each) do
20
+ @deck = DummyDeck.new
21
+ @deck.layout = {
22
+ 'blah' => {x: 25},
23
+ 'apples' => {x: 35},
24
+ 'oranges' => {y: 45},
25
+ }
26
+ @deck.cards = %w(a b)
27
+ @deck.custom_colors = {}
28
+ end
29
+
30
+ context '#layoutify' do
31
+ it "warns on the logger when the layout doesn't exist" do
32
+ @old_logger = Squib.logger
33
+ Squib.logger = instance_double(Logger)
34
+ expect(Squib.logger).to receive(:warn).with("Layout entry 'foo' does not exist.").twice
35
+ expect(Squib.logger).to receive(:debug)
36
+ expect(@deck.send(:layoutify, {layout: :foo})).to eq({layout: [:foo,:foo]})
37
+ Squib.logger = @old_logger
38
+ end
39
+
40
+ it "applies the layout in a normal situation" do
41
+ expect(@deck.send(:layoutify, {layout: :blah})).to \
42
+ eq({layout: [:blah, :blah], x: [25, 25]})
43
+ end
44
+
45
+ it "applies two different layouts for two different situations" do
46
+ expect(@deck.send(:layoutify, {layout: ['blah', 'apples']})).to \
47
+ eq({layout: ['blah','apples'], x: [25, 35]})
48
+ end
49
+
50
+ it "still has nils when not applied two different layouts differ in structure" do
51
+ expect(@deck.send(:layoutify, {layout: ['apples', 'oranges']})).to \
52
+ eq({layout: ['apples','oranges'], x: [35], y: [nil, 45]})
53
+ #...this might behavior that is hard to debug for users. Trying to come up with a warning or something...
54
+ end
55
+
56
+ it "also looks up based on strings" do
57
+ expect(@deck.send(:layoutify, {layout: 'blah'})).to \
58
+ eq({layout: ['blah','blah'], x: [25, 25]})
59
+ end
60
+
61
+ end
62
+
63
+ context '#rangeify' do
64
+ it "must be within the card size range" do
65
+ expect{@deck.send(:rangeify, {range: 2..3})}.to \
66
+ raise_error(ArgumentError, '2..3 is outside of deck range of 0..1')
67
+ end
68
+
69
+ it "cannot be nil" do
70
+ expect{@deck.send(:rangeify, {range: nil})}.to \
71
+ raise_error(RuntimeError, 'Range cannot be nil')
72
+ end
73
+
74
+ it "defaults to a range of all cards if :all" do
75
+ expect(@deck.send(:rangeify, {range: :all})).to eq({range: 0..1})
76
+ end
77
+ end
78
+
79
+ context "#fileify" do
80
+ it "should throw an error if the file doesn't exist" do
81
+ expect{@deck.send(:fileify, {file: 'nonexist.txt'}, true)}.to \
82
+ raise_error(RuntimeError,"File #{File.expand_path('nonexist.txt')} does not exist!")
83
+ end
84
+ end
85
+
86
+ context "#dir" do
87
+ it "should raise an error if the directory does not exist" do
88
+ expect{@deck.send(:dirify, {dir: 'nonexist'}, :dir, false)}.to \
89
+ raise_error(RuntimeError,"'nonexist' does not exist!")
90
+ end
91
+ end
92
+
93
+ context "#colorify" do
94
+ it "should parse if nillable" do
95
+ color = @deck.send(:colorify, {color: ['#fff']}, true)[:color]
96
+ expect(color.to_a[0].to_a).to eq([1.0, 1.0, 1.0, 1.0])
97
+ end
98
+
99
+ it "raises and error if the color doesn't exist" do
100
+ expect{ @deck.send(:colorify, {color: [:nonexist]}, false) }.to \
101
+ raise_error(ArgumentError, "unknown color name: nonexist")
102
+ end
103
+
104
+ it "pulls from config's custom colors" do
105
+ @deck.custom_colors['foo'] = "#abc"
106
+ expect(@deck.send(:colorify, {color: [:foo]}, false)[:color][0].to_s).to \
107
+ eq('#AABBCCFF')
108
+ end
109
+
110
+ it "pulls from config's custom colors even when a string" do
111
+ @deck.custom_colors['foo'] = "#abc"
112
+ expect(@deck.send(:colorify, {color: ['foo']}, false)[:color][0].to_s).to \
113
+ eq('#AABBCCFF')
114
+ end
115
+ end
116
+
117
117
  end
@@ -1,20 +1,20 @@
1
- require 'spec_helper'
2
- require 'squib'
3
- require 'pp'
4
-
5
- describe Squib do
6
-
7
- context "all samples run without error" do
8
- it "should execute with no errors" do
9
- p = double("ProgressBar")
10
- allow(ProgressBar).to receive(:create).and_return(Squib::DoNothing.new)
11
- samples = File.expand_path('../samples', File.dirname(__FILE__))
12
- Dir["#{samples}/**/*.rb"].each do |sample|
13
- Dir.chdir(samples) do #to save to _output
14
- require_relative "../samples/#{File.basename(sample)}"
15
- end
16
- end
17
- end
18
- end
19
-
1
+ require 'spec_helper'
2
+ require 'squib'
3
+ require 'pp'
4
+
5
+ describe Squib do
6
+
7
+ context "all samples run without error" do
8
+ it "should execute with no errors" do
9
+ p = double("ProgressBar")
10
+ allow(ProgressBar).to receive(:create).and_return(Squib::DoNothing.new)
11
+ samples = File.expand_path('../samples', File.dirname(__FILE__))
12
+ Dir["#{samples}/**/*.rb"].each do |sample|
13
+ Dir.chdir(samples) do #to save to _output
14
+ require_relative "../samples/#{File.basename(sample)}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
20
  end
@@ -1,46 +1,46 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'squib/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.specification_version = 2 if spec.respond_to? :specification_version=
8
- spec.required_rubygems_version = Gem::Requirement.new(">= 0") if spec.respond_to? :required_rubygems_version=
9
- spec.rubygems_version = '2.2.2'
10
- spec.required_ruby_version = '>= 2.0.0'
11
-
12
- spec.name = "squib"
13
- spec.version = Squib::VERSION
14
- spec.license = "MIT"
15
-
16
- spec.summary = %q{A Ruby DSL for prototyping card games}
17
- spec.description = %q{Squib is a Ruby DSL for prototyping card games}
18
- spec.authors = ["Andy Meneely"]
19
- spec.email = ["playconfidencegames@gmail.com"]
20
- spec.homepage = "https://github.com/andymeneely/squib"
21
-
22
- spec.rdoc_options = ["--charset=UTF-8"]
23
- spec.extra_rdoc_files = %w[README.md LICENSE.txt]
24
-
25
- spec.files = `git ls-files -z`.split("\x0")
26
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
27
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_runtime_dependency 'cairo', '~> 1.12.9'
31
- spec.add_runtime_dependency 'pango', '~> 2.2.0'
32
- spec.add_runtime_dependency 'roo', '~> 1.13.2'
33
- spec.add_runtime_dependency 'rsvg2', '~> 2.2.0'
34
- spec.add_runtime_dependency 'mercenary', '~> 0.3.4'
35
- spec.add_runtime_dependency 'ruby-progressbar', '~> 1.5.1'
36
-
37
- spec.add_development_dependency "bundler", "~> 1.6"
38
- spec.add_development_dependency "rake"
39
- spec.add_development_dependency "rspec", "~> 3.0"
40
- spec.add_development_dependency "rspec-mocks", "~> 3.0"
41
- spec.add_development_dependency "redcarpet", '~> 3.1.2'
42
- spec.add_development_dependency "github-markup", '~> 1.2.1'
43
- spec.add_development_dependency "yard"
44
- spec.add_development_dependency "coveralls"
45
-
46
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'squib/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.specification_version = 2 if spec.respond_to? :specification_version=
8
+ spec.required_rubygems_version = Gem::Requirement.new(">= 0") if spec.respond_to? :required_rubygems_version=
9
+ spec.rubygems_version = '2.2.2'
10
+ spec.required_ruby_version = '>= 2.0.0'
11
+
12
+ spec.name = "squib"
13
+ spec.version = Squib::VERSION
14
+ spec.license = "MIT"
15
+
16
+ spec.summary = %q{A Ruby DSL for prototyping card games}
17
+ spec.description = %q{Squib is a Ruby DSL for prototyping card games}
18
+ spec.authors = ["Andy Meneely"]
19
+ spec.email = ["playconfidencegames@gmail.com"]
20
+ spec.homepage = "https://github.com/andymeneely/squib"
21
+
22
+ spec.rdoc_options = ["--charset=UTF-8"]
23
+ spec.extra_rdoc_files = %w[README.md LICENSE.txt]
24
+
25
+ spec.files = `git ls-files -z`.split("\x0")
26
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
27
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_runtime_dependency 'cairo', '~> 1.12.9'
31
+ spec.add_runtime_dependency 'pango', '~> 2.2.0'
32
+ spec.add_runtime_dependency 'roo', '~> 1.13.2'
33
+ spec.add_runtime_dependency 'rsvg2', '~> 2.2.0'
34
+ spec.add_runtime_dependency 'mercenary', '~> 0.3.4'
35
+ spec.add_runtime_dependency 'ruby-progressbar', '~> 1.6'
36
+
37
+ spec.add_development_dependency "bundler", "~> 1.6"
38
+ spec.add_development_dependency "rake"
39
+ spec.add_development_dependency "rspec", "~> 3.0"
40
+ spec.add_development_dependency "rspec-mocks", "~> 3.0"
41
+ spec.add_development_dependency "redcarpet", '~> 3.1.2'
42
+ spec.add_development_dependency "github-markup", '~> 1.3'
43
+ spec.add_development_dependency "yard"
44
+ spec.add_development_dependency "coveralls"
45
+
46
+ end
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.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Meneely
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-31 00:00:00.000000000 Z
11
+ date: 2014-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cairo
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: 1.5.1
89
+ version: '1.6'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: 1.5.1
96
+ version: '1.6'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: 1.2.1
173
+ version: '1.3'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ~>
179
179
  - !ruby/object:Gem::Version
180
- version: 1.2.1
180
+ version: '1.3'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: yard
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -219,6 +219,7 @@ files:
219
219
  - .gitignore
220
220
  - .travis.yml
221
221
  - .yardopts
222
+ - CHANGELOG.md
222
223
  - Gemfile
223
224
  - LICENSE.txt
224
225
  - README.md
@@ -255,6 +256,7 @@ files:
255
256
  - lib/squib/project_template/layout.yml
256
257
  - lib/squib/version.rb
257
258
  - samples/_output/gitkeep.txt
259
+ - samples/autoscale_font.rb
258
260
  - samples/ball.png
259
261
  - samples/basic.rb
260
262
  - samples/colors.rb
@@ -282,9 +284,13 @@ files:
282
284
  - samples/use_layout.rb
283
285
  - spec/api/api_text_spec.rb
284
286
  - spec/commands/new_spec.rb
287
+ - spec/data/easy-circular-extends.yml
288
+ - spec/data/hard-circular-extends.yml
285
289
  - spec/data/multi-extends-single-entry.yml
286
290
  - spec/data/multi-level-extends.yml
287
291
  - spec/data/no-extends.yml
292
+ - spec/data/pre-extends.yml
293
+ - spec/data/self-circular-extends.yml
288
294
  - spec/data/single-extends.yml
289
295
  - spec/data/single-level-multi-extends.yml
290
296
  - spec/deck_spec.rb
@@ -313,16 +319,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
313
319
  version: '0'
314
320
  requirements: []
315
321
  rubyforge_project:
316
- rubygems_version: 2.2.2
322
+ rubygems_version: 2.0.14
317
323
  signing_key:
318
324
  specification_version: 2
319
325
  summary: A Ruby DSL for prototyping card games
320
326
  test_files:
321
327
  - spec/api/api_text_spec.rb
322
328
  - spec/commands/new_spec.rb
329
+ - spec/data/easy-circular-extends.yml
330
+ - spec/data/hard-circular-extends.yml
323
331
  - spec/data/multi-extends-single-entry.yml
324
332
  - spec/data/multi-level-extends.yml
325
333
  - spec/data/no-extends.yml
334
+ - spec/data/pre-extends.yml
335
+ - spec/data/self-circular-extends.yml
326
336
  - spec/data/single-extends.yml
327
337
  - spec/data/single-level-multi-extends.yml
328
338
  - spec/deck_spec.rb