squib 0.15.1 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +22 -0
  3. data/.gitignore +41 -41
  4. data/CHANGELOG.md +422 -387
  5. data/CONTRIBUTING.md +40 -40
  6. data/Dockerfile +27 -25
  7. data/Gemfile +2 -2
  8. data/Guardfile +8 -0
  9. data/LICENSE.txt +22 -22
  10. data/README.md +139 -121
  11. data/RELEASE TODO.md +22 -21
  12. data/Rakefile +51 -48
  13. data/bin/squib +4 -4
  14. data/lib/squib.rb +34 -32
  15. data/lib/squib/api/settings.rb +21 -21
  16. data/lib/squib/args/arg_loader.rb +129 -126
  17. data/lib/squib/args/box.rb +59 -55
  18. data/lib/squib/args/card_range.rb +34 -32
  19. data/lib/squib/args/color_validator.rb +7 -12
  20. data/lib/squib/args/coords.rb +49 -35
  21. data/lib/squib/args/csv_opts.rb +22 -25
  22. data/lib/squib/args/dir_validator.rb +11 -16
  23. data/lib/squib/args/draw.rb +93 -92
  24. data/lib/squib/args/embed_adjust.rb +22 -25
  25. data/lib/squib/args/embed_key.rb +12 -17
  26. data/lib/squib/args/hand_special.rb +37 -37
  27. data/lib/squib/args/import.rb +67 -40
  28. data/lib/squib/args/input_file.rb +33 -37
  29. data/lib/squib/args/paint.rb +43 -44
  30. data/lib/squib/args/paragraph.rb +118 -116
  31. data/lib/squib/args/save_batch.rb +65 -63
  32. data/lib/squib/args/scale_box.rb +57 -53
  33. data/lib/squib/args/sheet.rb +170 -172
  34. data/lib/squib/args/showcase_special.rb +41 -41
  35. data/lib/squib/args/sprue_file.rb +44 -44
  36. data/lib/squib/args/svg_special.rb +37 -37
  37. data/lib/squib/args/transform.rb +55 -61
  38. data/lib/squib/args/typographer.rb +115 -119
  39. data/lib/squib/args/unit_conversion.rb +27 -29
  40. data/lib/squib/args/xywh_shorthands.rb +51 -0
  41. data/lib/squib/builtin/layouts/economy.yml +85 -85
  42. data/lib/squib/builtin/layouts/fantasy.yml +101 -101
  43. data/lib/squib/builtin/layouts/hand.yml +62 -62
  44. data/lib/squib/builtin/layouts/party.yml +94 -94
  45. data/lib/squib/builtin/layouts/playing-card.yml +35 -35
  46. data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
  47. data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
  48. data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
  49. data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
  50. data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
  51. data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
  52. data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
  53. data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
  54. data/lib/squib/builtin/projects/advanced/config.yml +50 -49
  55. data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
  56. data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
  57. data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
  58. data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
  59. data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
  60. data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
  61. data/lib/squib/builtin/projects/basic/.gitignore +4 -4
  62. data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
  63. data/lib/squib/builtin/projects/basic/Gemfile +3 -3
  64. data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
  65. data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
  66. data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
  67. data/lib/squib/builtin/projects/basic/RULES.md +21 -21
  68. data/lib/squib/builtin/projects/basic/Rakefile +7 -7
  69. data/lib/squib/builtin/projects/basic/config.yml +50 -49
  70. data/lib/squib/builtin/projects/basic/deck.rb +6 -6
  71. data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
  72. data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
  73. data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
  74. data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
  75. data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
  76. data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
  77. data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
  78. data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
  79. data/lib/squib/card.rb +75 -75
  80. data/lib/squib/commands/cli.rb +39 -39
  81. data/lib/squib/commands/data/template_option.rb +109 -109
  82. data/lib/squib/commands/make_sprue.rb +277 -277
  83. data/lib/squib/commands/new.rb +77 -77
  84. data/lib/squib/conf.rb +144 -139
  85. data/lib/squib/constants.rb +17 -17
  86. data/lib/squib/deck.rb +138 -116
  87. data/lib/squib/dsl/background.rb +35 -0
  88. data/lib/squib/dsl/circle.rb +39 -0
  89. data/lib/squib/dsl/csv.rb +42 -0
  90. data/lib/squib/dsl/curve.rb +35 -0
  91. data/lib/squib/dsl/cut_zone.rb +47 -0
  92. data/lib/squib/dsl/ellipse.rb +37 -0
  93. data/lib/squib/dsl/grid.rb +35 -0
  94. data/lib/squib/{api → dsl}/groups.rb +54 -54
  95. data/lib/squib/dsl/hand.rb +42 -0
  96. data/lib/squib/dsl/line.rb +35 -0
  97. data/lib/squib/dsl/png.rb +56 -0
  98. data/lib/squib/dsl/polygon.rb +36 -0
  99. data/lib/squib/dsl/rect.rb +37 -0
  100. data/lib/squib/dsl/safe_zone.rb +48 -0
  101. data/lib/squib/dsl/save.rb +21 -0
  102. data/lib/squib/dsl/save_pdf.rb +50 -0
  103. data/lib/squib/dsl/save_png.rb +44 -0
  104. data/lib/squib/dsl/save_sheet.rb +53 -0
  105. data/lib/squib/dsl/showcase.rb +43 -0
  106. data/lib/squib/dsl/star.rb +37 -0
  107. data/lib/squib/dsl/svg.rb +62 -0
  108. data/lib/squib/dsl/text.rb +54 -0
  109. data/lib/squib/dsl/text_embed.rb +78 -0
  110. data/lib/squib/dsl/triangle.rb +35 -0
  111. data/lib/squib/{api → dsl}/units.rb +37 -27
  112. data/lib/squib/dsl/xlsx.rb +40 -0
  113. data/lib/squib/dsl/yaml.rb +40 -0
  114. data/lib/squib/errors_warnings/warn_unexpected_params.rb +14 -0
  115. data/lib/squib/graphics/background.rb +14 -14
  116. data/lib/squib/graphics/cairo_context_wrapper.rb +113 -113
  117. data/lib/squib/graphics/embedding_utils.rb +28 -28
  118. data/lib/squib/graphics/gradient_regex.rb +47 -47
  119. data/lib/squib/graphics/hand.rb +42 -42
  120. data/lib/squib/graphics/image.rb +123 -123
  121. data/lib/squib/graphics/save_doc.rb +61 -61
  122. data/lib/squib/graphics/save_images.rb +52 -52
  123. data/lib/squib/graphics/save_pdf.rb +90 -90
  124. data/lib/squib/graphics/save_sprue.rb +231 -219
  125. data/lib/squib/graphics/shapes.rb +143 -143
  126. data/lib/squib/graphics/showcase.rb +85 -85
  127. data/lib/squib/graphics/text.rb +202 -174
  128. data/lib/squib/import/csv_importer.rb +45 -0
  129. data/lib/squib/import/data_frame.rb +108 -108
  130. data/lib/squib/import/quantity_exploder.rb +18 -0
  131. data/lib/squib/import/xlsx_importer.rb +28 -0
  132. data/lib/squib/import/yaml_importer.rb +30 -0
  133. data/lib/squib/layout_parser.rb +155 -138
  134. data/lib/squib/progress.rb +38 -38
  135. data/lib/squib/sample_helpers.rb +34 -34
  136. data/lib/squib/sprues/crop_line.rb +28 -28
  137. data/lib/squib/sprues/crop_line_dash.rb +35 -35
  138. data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
  139. data/lib/squib/sprues/sprue.rb +208 -206
  140. data/lib/squib/sprues/sprue_schema.rb +50 -50
  141. data/lib/squib/version.rb +11 -10
  142. data/samples/autoscale_font/_autoscale_font.rb +98 -29
  143. data/samples/backend/_backend.rb +26 -26
  144. data/samples/basic.rb +19 -19
  145. data/samples/build_groups/build_groups.rb +36 -36
  146. data/samples/colors/_colors.rb +44 -44
  147. data/samples/colors/_gradients.rb +34 -34
  148. data/samples/colors/_switch_color.rb +33 -33
  149. data/samples/config/config_text_markup.rb +20 -20
  150. data/samples/config/custom_config.rb +18 -18
  151. data/samples/data/_csv.rb +33 -33
  152. data/samples/data/_excel.rb +55 -55
  153. data/samples/data/_yaml.rb +12 -12
  154. data/samples/hello_world.rb +6 -6
  155. data/samples/images/_cairo_access.rb +39 -39
  156. data/samples/images/_images.rb +104 -104
  157. data/samples/images/_more_load_images.rb +102 -102
  158. data/samples/intro/01_hello.rb +8 -8
  159. data/samples/intro/02_options.rb +14 -14
  160. data/samples/intro/03_layout.rb +11 -11
  161. data/samples/intro/04_arrays.rb +15 -15
  162. data/samples/intro/05_excel.rb +14 -14
  163. data/samples/layouts/builtin_layouts.rb +97 -97
  164. data/samples/layouts/layouts.rb +71 -71
  165. data/samples/project/src/characters.rb +8 -8
  166. data/samples/project/src/skills.rb +7 -7
  167. data/samples/proofs/_tgc_proofs.rb +16 -16
  168. data/samples/ranges/_ranges.rb +64 -64
  169. data/samples/saves/_hand.rb +23 -23
  170. data/samples/saves/_portrait_landscape.rb +23 -23
  171. data/samples/saves/_save_filenames.rb +28 -24
  172. data/samples/saves/_save_pdf.rb +29 -29
  173. data/samples/saves/_saves.rb +52 -51
  174. data/samples/saves/_showcase.rb +25 -25
  175. data/samples/shapes/_draw_shapes.rb +60 -60
  176. data/samples/shapes/_proofs.rb +22 -22
  177. data/samples/sprues/_advanced_sprues.rb +25 -25
  178. data/samples/sprues/_builtin_sprues.rb +22 -21
  179. data/samples/sprues/_fold_sheet.rb +30 -27
  180. data/samples/sprues/_hex_tiles.rb +15 -15
  181. data/samples/sprues/_mints.rb +11 -11
  182. data/samples/sprues/_sprue_example.rb +11 -11
  183. data/samples/text/_embed_text.rb +128 -128
  184. data/samples/text/_text.rb +52 -47
  185. data/samples/text/_text_options.rb +103 -102
  186. data/samples/text/bug134.rb +14 -14
  187. data/samples/units/_cells.rb +51 -0
  188. data/samples/units/_shorthands.rb +48 -0
  189. data/samples/units/_units.rb +39 -32
  190. data/squib.gemspec +58 -52
  191. metadata +177 -91
  192. data/.travis.yml +0 -17
  193. data/appveyor.yml +0 -25
  194. data/lib/squib/api/background.rb +0 -15
  195. data/lib/squib/api/data.rb +0 -137
  196. data/lib/squib/api/image.rb +0 -49
  197. data/lib/squib/api/save.rb +0 -83
  198. data/lib/squib/api/shapes.rb +0 -124
  199. data/lib/squib/api/text.rb +0 -25
  200. data/lib/squib/api/text_embed.rb +0 -71
@@ -1,14 +1,14 @@
1
- require 'squib'
2
- require 'game_icons'
3
-
4
- Squib::Deck.new(cards: 1) do
5
- rect
6
- text str: 'foo', x: 275, y: 75, width: 500, height: 500, valign: :middle, hint: :blue
7
- text(str: '(heart)(heart2)',
8
- x: 75, y: 75, width: 500, height: 500,
9
- valign: :middle, hint: :red) do |embed|
10
- embed.svg key: '(heart)', width: 50, height: 50, data: GameIcons.get('glass-heart').string
11
- embed.svg key: '(heart2)', width: 50, height: 50, data: GameIcons.get('glass-heart').string
12
- end
13
- save_png prefix: 'bug_134_'
14
- end
1
+ require 'squib'
2
+ require 'game_icons'
3
+
4
+ Squib::Deck.new(cards: 1) do
5
+ rect
6
+ text str: 'foo', x: 275, y: 75, width: 500, height: 500, valign: :middle, hint: :blue
7
+ text(str: '(heart)(heart2)',
8
+ x: 75, y: 75, width: 500, height: 500,
9
+ valign: :middle, hint: :red) do |embed|
10
+ embed.svg key: '(heart)', width: 50, height: 50, data: GameIcons.get('glass-heart').string
11
+ embed.svg key: '(heart2)', width: 50, height: 50, data: GameIcons.get('glass-heart').string
12
+ end
13
+ save_png prefix: 'bug_134_'
14
+ end
@@ -0,0 +1,51 @@
1
+ require 'squib'
2
+
3
+ Squib::Deck.new(width: '1.5in', height: '1.5in') do
4
+ background color: :white
5
+
6
+ # Squib has a custom unit, called "cell"
7
+ # A "cell" unit defaults to 37.5px, which at 300dpi is 1/8in or 3.175mm
8
+ # This is a very common multiple for layouts.
9
+ # This helps us lay things out in grids without doing much math in our heads
10
+ # Here's an example... with grid!
11
+ grid width: '1 cell', height: '1 cell'
12
+
13
+ # Plurals are fine or just 'c' as a unit is fine
14
+ # Whitespace is pretty lenient too.
15
+ rect fill_color: :blue,
16
+ x: '1 cell', y: '2 cells',
17
+ width: '1c', height: '1cell '
18
+
19
+ # Technically, the "cell" is actually a "unit", so you can even combine
20
+ # with xywh shorhands!!
21
+ rect fill_color: :red,
22
+ x: 'middle + 0.5c', y: 'height - 1.5c',
23
+ width: '1c', height: '1c'
24
+
25
+ # And, unlike xywh shorthands, this applies basically everywhere we support
26
+ # unit conversion.
27
+ circle fill_color: :green,
28
+ x: '3c', y: '2c', radius: '1c'
29
+ # Decimals are fine too
30
+ circle fill_color: :green,
31
+ x: '5c', y: '2c', radius: '0.5c'
32
+ # Even dashes!
33
+ circle fill_color: '#0000', stroke_color: :purple,
34
+ x: '1c', y: '4c', radius: '0.5c', dash: '0.25c 0.25c'
35
+
36
+ # We can also do stuff in layout. Check out the yml file...
37
+ # (even cleaner in Yaml since we don't need quotes!)
38
+ use_layout file: 'cells.yml'
39
+ rect layout: :example
40
+ rect layout: :extends_example
41
+
42
+ save_png prefix: 'cells_'
43
+ end
44
+
45
+
46
+ # You can customize this with the cell_px configuration option
47
+ Squib::Deck.new(width: 100, height: 100, config: 'cell_config.yml') do
48
+ background color: :white
49
+ rect x: '1c', y: '1c', width: '1c', height: '1c', fill_color: :purple
50
+ save_png prefix: 'custom_cell_'
51
+ end
@@ -0,0 +1,48 @@
1
+ require_relative '../../lib/squib'
2
+
3
+ # Lots of DSL methods have shorthands that are accepted for
4
+ # x, y, width, and height parameters.
5
+ Squib::Deck.new(width: '0.5in', height: '0.25in') do
6
+ background color: :white
7
+
8
+ # middle for x and y will resolve to half the height
9
+ text str: 'xymiddle', font: 'Sans Bold 3', hint: :red,
10
+ x: 'middle', y: :middle
11
+
12
+ # 'center' also works
13
+ rect width: 30, height: 30,
14
+ x: :center, y: 'center'
15
+
16
+ # Applies to shapes
17
+ triangle x1: 20, y1: 20,
18
+ x2: 60, y2: 20,
19
+ x3: :middle, y3: :middle
20
+
21
+ # We can also do width-, height-, width/, height/
22
+ rect x: 20, y: 5, stroke_color: :green,
23
+ width: 'deck - 0.1in', height: 10
24
+
25
+ rect x: 10, y: 50, width: 10, height: 'deck / 3',
26
+ stroke_color: :purple
27
+
28
+ # And middle+/-
29
+ rect x: 'middle + 0.1in', y: 'center - 0.1in',
30
+ width: '0.1in', height: '0.1in', fill_color: :blue
31
+
32
+ # Layouts apply this too.
33
+ use_layout file: 'shorthands.yml'
34
+ rect layout: :example
35
+
36
+ # HOWEVER! Shorthands don't combine in an "extends" situation,
37
+ # e.g. this won't work:
38
+ # parent:
39
+ # x: middle
40
+ # child:
41
+ # extends: parent
42
+ # x: += 0.5in
43
+
44
+ # These shorthands are not intended for every xywh parameter or
45
+ # length parameter, see docs for when they do or do not apply.
46
+
47
+ save_png prefix: 'shorthand_'
48
+ end
@@ -1,32 +1,39 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new(width: '1.5in', height: '1.5in') do
4
- background color: :white
5
-
6
- # We can use our DSL-method to use inches
7
- # Computed using @dpi (set to 300 by default)
8
- bleed = inches(0.125)
9
- cut = inches(1.25)
10
- rect x: bleed, y: bleed,
11
- width: cut, height: cut,
12
- dash: '0.5mm 0.5mm' # yes, units are in dashes too
13
-
14
- # other units too
15
- cm(2) # We can also use cm this way
16
- cm(2) + inches(2) # We can mix units too
17
-
18
- # Or we can use a string ending with cm or in
19
- safe_margin = '0.25 in' #you can have a space too
20
- safe_width = '1 in'
21
- safe_height = '1.0 in ' # trailing space is ok too
22
- rect x: safe_margin, y: safe_margin,
23
- width: safe_width, height: safe_height,
24
- radius: '2 mm '
25
-
26
- # We can also do stuff in layout. Check out the yml file...
27
- # (even cleaner in Yaml since we don't need quotes!)
28
- use_layout file: 'using_units.yml'
29
- text str: 'Hello.', layout: :example
30
-
31
- save prefix: 'units_', format: :png
32
- end
1
+ require 'squib'
2
+
3
+ Squib::Deck.new(width: '1.5in', height: '1.5in') do
4
+ background color: :white
5
+
6
+ # We can use our DSL-method to use inches
7
+ # Computed using @dpi (set to 300 by default)
8
+ bleed = inches(0.125)
9
+ cut = inches(1.25)
10
+ rect x: bleed, y: bleed,
11
+ width: cut, height: cut,
12
+ dash: '0.5mm 0.5mm' # yes, units are in dashes too
13
+
14
+ # other units too
15
+ cm(2) # We can also use cm this way
16
+ cm(2) + inches(2) # We can mix units too
17
+
18
+ # Or we can use a string ending with cm or in
19
+ safe_margin = '0.25 in' #you can have a space too
20
+ safe_width = '1 in'
21
+ safe_height = '1.0 in ' # trailing space is ok too
22
+ rect x: safe_margin, y: safe_margin,
23
+ width: safe_width, height: safe_height,
24
+ radius: '2 mm '
25
+
26
+ # Angles are also automatically converted to radians if you use deg
27
+ svg file: '../spanner.svg',
28
+ x: 100, y: 100, width: 40, height: 40, angle: '30deg'
29
+
30
+ # We can also do stuff in layout. Check out the yml file...
31
+ # (even cleaner in Yaml since we don't need quotes!)
32
+ use_layout file: 'using_units.yml'
33
+ text str: 'Hello.', layout: :example
34
+ svg file: '../spanner.svg', layout: :angled
35
+
36
+ save prefix: 'units_', format: :png
37
+
38
+ # But wait... there's more! See _shorthands.rb for more fanciness with units
39
+ end
@@ -1,52 +1,58 @@
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.4.0'
11
-
12
- spec.name = 'squib'
13
- spec.version = Squib::VERSION
14
- spec.license = 'MIT'
15
-
16
- spec.summary = 'A Ruby DSL for prototyping card games'
17
- spec.description = 'Squib is a Ruby DSL for prototyping card games'
18
- spec.authors = ['Andy Meneely']
19
- spec.email = 'andy.meneely@gmail.com'
20
- spec.homepage = 'https://github.com/andymeneely/squib'
21
-
22
- spec.rdoc_options = ['--charset=UTF-8']
23
- spec.extra_rdoc_files = Dir['README.md', 'samples/**/*.rb']
24
-
25
- spec.files = `git ls-files -z`.
26
- split("\x0").
27
- reject { |f| f.match(%r{^(spec|samples|docs|benchmarks)/}) }
28
- spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
29
- spec.test_files = spec.files.grep(/^(spec|samples|docs|benchmarks)\//)
30
- spec.require_paths = ['lib']
31
-
32
- spec.add_runtime_dependency 'cairo', '1.16.4'
33
- spec.add_runtime_dependency 'classy_hash', '0.2.1'
34
- spec.add_runtime_dependency 'gio2', '3.3.7'
35
- spec.add_runtime_dependency 'gobject-introspection', '3.3.7'
36
- spec.add_runtime_dependency 'highline', '2.0.2'
37
- spec.add_runtime_dependency 'mercenary', '0.3.6'
38
- spec.add_runtime_dependency 'nokogiri', '1.10.3'
39
- spec.add_runtime_dependency 'pango', '3.3.7'
40
- spec.add_runtime_dependency 'roo', '2.8.2'
41
- spec.add_runtime_dependency 'rsvg2', '3.3.7'
42
- spec.add_runtime_dependency 'ruby-progressbar', '1.10.0'
43
-
44
- spec.add_development_dependency 'bundler'
45
- spec.add_development_dependency 'coveralls', '>= 0.8.21'
46
- spec.add_development_dependency 'game_icons'
47
- spec.add_development_dependency 'launchy'
48
- spec.add_development_dependency 'rake'
49
- spec.add_development_dependency 'byebug'
50
- spec.add_development_dependency 'rspec', '~> 3.8'
51
-
52
- 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.5.0'
11
+
12
+ spec.name = 'squib'
13
+ spec.version = Squib::VERSION
14
+ spec.license = 'MIT'
15
+
16
+ spec.summary = 'A Ruby DSL for prototyping card games'
17
+ spec.description = 'Squib is a Ruby DSL for prototyping card games'
18
+ spec.post_install_message = 'Happy Squibbing!'
19
+ spec.authors = ['Andy Meneely']
20
+ spec.email = 'andy.meneely@gmail.com'
21
+ spec.homepage = 'https://github.com/andymeneely/squib'
22
+ spec.requirements << 'On Windows, you need the Ruby+DevKit. See https://rubyinstaller.org/downloads'
23
+
24
+ spec.rdoc_options = ['--charset=UTF-8']
25
+ spec.extra_rdoc_files = Dir['README.md', 'samples/**/*.rb']
26
+
27
+ spec.files = `git ls-files -z`.
28
+ split("\x0").
29
+ reject { |f| f.match(%r{^(spec|samples|docs|benchmarks)/}) }
30
+ spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
31
+ spec.test_files = spec.files.grep(/^(spec|samples|docs|benchmarks)\//)
32
+ spec.require_paths = ['lib']
33
+
34
+ spec.add_runtime_dependency 'cairo', '~> 1.16'
35
+ spec.add_runtime_dependency 'classy_hash', '0.2.1'
36
+ spec.add_runtime_dependency 'gio2', '~> 3.4'
37
+ spec.add_runtime_dependency 'gobject-introspection', '~> 3.4'
38
+ spec.add_runtime_dependency 'highline', '2.0.3'
39
+ spec.add_runtime_dependency 'mercenary', '0.4.0'
40
+ spec.add_runtime_dependency 'nokogiri', '~> 1.10'
41
+ spec.add_runtime_dependency 'pango', '~> 3.4'
42
+ spec.add_runtime_dependency 'rainbow', '~> 3.0'
43
+ spec.add_runtime_dependency 'roo', '~> 2.8'
44
+ spec.add_runtime_dependency 'rsvg2', '~> 3.4'
45
+ spec.add_runtime_dependency 'ruby-progressbar', '~> 1.10'
46
+
47
+ spec.add_development_dependency 'activesupport'
48
+ spec.add_development_dependency 'bundler'
49
+ spec.add_development_dependency 'coveralls', '>= 0.8.21'
50
+ spec.add_development_dependency 'guard'
51
+ spec.add_development_dependency 'guard-rake'
52
+ spec.add_development_dependency 'game_icons'
53
+ spec.add_development_dependency 'launchy'
54
+ spec.add_development_dependency 'rake'
55
+ spec.add_development_dependency 'byebug'
56
+ spec.add_development_dependency 'rspec', '~> 3.8'
57
+
58
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.1
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Meneely
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-27 00:00:00.000000000 Z
11
+ date: 2020-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cairo
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.16.4
19
+ version: '1.16'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.16.4
26
+ version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: classy_hash
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,128 +42,156 @@ dependencies:
42
42
  name: gio2
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.3.7
47
+ version: '3.4'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '='
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.3.7
54
+ version: '3.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: gobject-introspection
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.3.7
61
+ version: '3.4'
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: 3.3.7
68
+ version: '3.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: highline
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 2.0.2
75
+ version: 2.0.3
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: 2.0.2
82
+ version: 2.0.3
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: mercenary
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.3.6
89
+ version: 0.4.0
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: 0.3.6
96
+ version: 0.4.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: nokogiri
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '='
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.10.3
103
+ version: '1.10'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '='
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.10.3
110
+ version: '1.10'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: pango
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '='
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 3.3.7
117
+ version: '3.4'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '='
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 3.3.7
124
+ version: '3.4'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rainbow
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
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'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: roo
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '='
143
+ - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: 2.8.2
145
+ version: '2.8'
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '='
150
+ - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: 2.8.2
152
+ version: '2.8'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: rsvg2
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - '='
157
+ - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 3.3.7
159
+ version: '3.4'
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - '='
164
+ - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 3.3.7
166
+ version: '3.4'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: ruby-progressbar
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - '='
171
+ - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: 1.10.0
173
+ version: '1.10'
160
174
  type: :runtime
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - '='
178
+ - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: 1.10.0
180
+ version: '1.10'
181
+ - !ruby/object:Gem::Dependency
182
+ name: activesupport
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: bundler
169
197
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +220,34 @@ dependencies:
192
220
  - - ">="
193
221
  - !ruby/object:Gem::Version
194
222
  version: 0.8.21
223
+ - !ruby/object:Gem::Dependency
224
+ name: guard
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: guard-rake
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
195
251
  - !ruby/object:Gem::Dependency
196
252
  name: game_icons
197
253
  requirement: !ruby/object:Gem::Requirement
@@ -269,76 +325,69 @@ executables:
269
325
  extensions: []
270
326
  extra_rdoc_files:
271
327
  - README.md
272
- - samples/ranges/_ranges.rb
273
- - samples/sprues/_builtin_sprues.rb
274
- - samples/sprues/_sprue_example.rb
275
- - samples/sprues/_advanced_sprues.rb
276
- - samples/sprues/_mints.rb
277
- - samples/sprues/_fold_sheet.rb
278
- - samples/sprues/_hex_tiles.rb
328
+ - samples/autoscale_font/_autoscale_font.rb
329
+ - samples/backend/_backend.rb
330
+ - samples/basic.rb
331
+ - samples/build_groups/build_groups.rb
332
+ - samples/colors/_colors.rb
333
+ - samples/colors/_gradients.rb
334
+ - samples/colors/_switch_color.rb
335
+ - samples/config/config_text_markup.rb
336
+ - samples/config/custom_config.rb
337
+ - samples/data/_csv.rb
338
+ - samples/data/_excel.rb
339
+ - samples/data/_yaml.rb
340
+ - samples/hello_world.rb
341
+ - samples/images/_cairo_access.rb
342
+ - samples/images/_images.rb
343
+ - samples/images/_more_load_images.rb
279
344
  - samples/intro/01_hello.rb
345
+ - samples/intro/02_options.rb
280
346
  - samples/intro/03_layout.rb
281
347
  - samples/intro/04_arrays.rb
282
348
  - samples/intro/05_excel.rb
283
- - samples/intro/02_options.rb
284
- - samples/config/custom_config.rb
285
- - samples/config/config_text_markup.rb
286
- - samples/images/_more_load_images.rb
287
- - samples/images/_cairo_access.rb
288
- - samples/images/_images.rb
289
- - samples/proofs/_tgc_proofs.rb
290
- - samples/shapes/_draw_shapes.rb
291
- - samples/shapes/_proofs.rb
292
- - samples/backend/_backend.rb
293
- - samples/basic.rb
294
- - samples/units/_units.rb
349
+ - samples/layouts/builtin_layouts.rb
350
+ - samples/layouts/layouts.rb
295
351
  - samples/project/src/characters.rb
296
352
  - samples/project/src/skills.rb
297
- - samples/saves/_save_filenames.rb
353
+ - samples/proofs/_tgc_proofs.rb
354
+ - samples/ranges/_ranges.rb
355
+ - samples/saves/_hand.rb
356
+ - samples/saves/_portrait_landscape.rb
298
357
  - samples/saves/_saves.rb
299
- - samples/saves/_showcase.rb
358
+ - samples/saves/_save_filenames.rb
300
359
  - samples/saves/_save_pdf.rb
301
- - samples/saves/_portrait_landscape.rb
302
- - samples/saves/_hand.rb
303
- - samples/layouts/layouts.rb
304
- - samples/layouts/builtin_layouts.rb
305
- - samples/colors/_switch_color.rb
306
- - samples/colors/_gradients.rb
307
- - samples/colors/_colors.rb
308
- - samples/build_groups/build_groups.rb
309
- - samples/hello_world.rb
360
+ - samples/saves/_showcase.rb
361
+ - samples/shapes/_draw_shapes.rb
362
+ - samples/shapes/_proofs.rb
363
+ - samples/sprues/_advanced_sprues.rb
364
+ - samples/sprues/_builtin_sprues.rb
365
+ - samples/sprues/_fold_sheet.rb
366
+ - samples/sprues/_hex_tiles.rb
367
+ - samples/sprues/_mints.rb
368
+ - samples/sprues/_sprue_example.rb
310
369
  - samples/text/bug134.rb
311
- - samples/text/_text.rb
312
370
  - samples/text/_embed_text.rb
371
+ - samples/text/_text.rb
313
372
  - samples/text/_text_options.rb
314
- - samples/autoscale_font/_autoscale_font.rb
315
- - samples/data/_yaml.rb
316
- - samples/data/_csv.rb
317
- - samples/data/_excel.rb
373
+ - samples/units/_cells.rb
374
+ - samples/units/_shorthands.rb
375
+ - samples/units/_units.rb
318
376
  files:
377
+ - ".github/workflows/tests.yml"
319
378
  - ".gitignore"
320
- - ".travis.yml"
321
379
  - CHANGELOG.md
322
380
  - CONTRIBUTING.md
323
381
  - Dockerfile
324
382
  - Gemfile
383
+ - Guardfile
325
384
  - LICENSE.txt
326
385
  - README.md
327
386
  - RELEASE TODO.md
328
387
  - Rakefile
329
- - appveyor.yml
330
388
  - bin/squib
331
389
  - lib/squib.rb
332
- - lib/squib/api/background.rb
333
- - lib/squib/api/data.rb
334
- - lib/squib/api/groups.rb
335
- - lib/squib/api/image.rb
336
- - lib/squib/api/save.rb
337
390
  - lib/squib/api/settings.rb
338
- - lib/squib/api/shapes.rb
339
- - lib/squib/api/text.rb
340
- - lib/squib/api/text_embed.rb
341
- - lib/squib/api/units.rb
342
391
  - lib/squib/args/arg_loader.rb
343
392
  - lib/squib/args/box.rb
344
393
  - lib/squib/args/card_range.rb
@@ -363,6 +412,7 @@ files:
363
412
  - lib/squib/args/transform.rb
364
413
  - lib/squib/args/typographer.rb
365
414
  - lib/squib/args/unit_conversion.rb
415
+ - lib/squib/args/xywh_shorthands.rb
366
416
  - lib/squib/builtin/layouts/economy.yml
367
417
  - lib/squib/builtin/layouts/fantasy.yml
368
418
  - lib/squib/builtin/layouts/hand.yml
@@ -413,6 +463,34 @@ files:
413
463
  - lib/squib/conf.rb
414
464
  - lib/squib/constants.rb
415
465
  - lib/squib/deck.rb
466
+ - lib/squib/dsl/background.rb
467
+ - lib/squib/dsl/circle.rb
468
+ - lib/squib/dsl/csv.rb
469
+ - lib/squib/dsl/curve.rb
470
+ - lib/squib/dsl/cut_zone.rb
471
+ - lib/squib/dsl/ellipse.rb
472
+ - lib/squib/dsl/grid.rb
473
+ - lib/squib/dsl/groups.rb
474
+ - lib/squib/dsl/hand.rb
475
+ - lib/squib/dsl/line.rb
476
+ - lib/squib/dsl/png.rb
477
+ - lib/squib/dsl/polygon.rb
478
+ - lib/squib/dsl/rect.rb
479
+ - lib/squib/dsl/safe_zone.rb
480
+ - lib/squib/dsl/save.rb
481
+ - lib/squib/dsl/save_pdf.rb
482
+ - lib/squib/dsl/save_png.rb
483
+ - lib/squib/dsl/save_sheet.rb
484
+ - lib/squib/dsl/showcase.rb
485
+ - lib/squib/dsl/star.rb
486
+ - lib/squib/dsl/svg.rb
487
+ - lib/squib/dsl/text.rb
488
+ - lib/squib/dsl/text_embed.rb
489
+ - lib/squib/dsl/triangle.rb
490
+ - lib/squib/dsl/units.rb
491
+ - lib/squib/dsl/xlsx.rb
492
+ - lib/squib/dsl/yaml.rb
493
+ - lib/squib/errors_warnings/warn_unexpected_params.rb
416
494
  - lib/squib/graphics/background.rb
417
495
  - lib/squib/graphics/cairo_context_wrapper.rb
418
496
  - lib/squib/graphics/embedding_utils.rb
@@ -426,7 +504,11 @@ files:
426
504
  - lib/squib/graphics/shapes.rb
427
505
  - lib/squib/graphics/showcase.rb
428
506
  - lib/squib/graphics/text.rb
507
+ - lib/squib/import/csv_importer.rb
429
508
  - lib/squib/import/data_frame.rb
509
+ - lib/squib/import/quantity_exploder.rb
510
+ - lib/squib/import/xlsx_importer.rb
511
+ - lib/squib/import/yaml_importer.rb
430
512
  - lib/squib/layout_parser.rb
431
513
  - lib/squib/progress.rb
432
514
  - lib/squib/sample_helpers.rb
@@ -481,13 +563,15 @@ files:
481
563
  - samples/text/_text.rb
482
564
  - samples/text/_text_options.rb
483
565
  - samples/text/bug134.rb
566
+ - samples/units/_cells.rb
567
+ - samples/units/_shorthands.rb
484
568
  - samples/units/_units.rb
485
569
  - squib.gemspec
486
570
  homepage: https://github.com/andymeneely/squib
487
571
  licenses:
488
572
  - MIT
489
573
  metadata: {}
490
- post_install_message:
574
+ post_install_message: Happy Squibbing!
491
575
  rdoc_options:
492
576
  - "--charset=UTF-8"
493
577
  require_paths:
@@ -496,16 +580,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
496
580
  requirements:
497
581
  - - ">="
498
582
  - !ruby/object:Gem::Version
499
- version: 2.4.0
583
+ version: 2.5.0
500
584
  required_rubygems_version: !ruby/object:Gem::Requirement
501
585
  requirements:
502
586
  - - ">="
503
587
  - !ruby/object:Gem::Version
504
588
  version: '0'
505
- requirements: []
506
- rubyforge_project:
507
- rubygems_version: 2.7.3
508
- signing_key:
589
+ requirements:
590
+ - On Windows, you need the Ruby+DevKit. See https://rubyinstaller.org/downloads
591
+ rubygems_version: 3.1.4
592
+ signing_key:
509
593
  specification_version: 2
510
594
  summary: A Ruby DSL for prototyping card games
511
595
  test_files:
@@ -554,4 +638,6 @@ test_files:
554
638
  - samples/text/_text.rb
555
639
  - samples/text/_text_options.rb
556
640
  - samples/text/bug134.rb
641
+ - samples/units/_cells.rb
642
+ - samples/units/_shorthands.rb
557
643
  - samples/units/_units.rb