squib 0.17.2 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ee8653b18081af7af0fefe9713a87c44ce979437dd198ed251d241bb9e7c32b
4
- data.tar.gz: aaf0af1bf44f085376e240f438bdc375a09d3f6c74cc288204879801243302c0
3
+ metadata.gz: 8e5921a89334684b7770be1b6d85ef150fd02f5c1b305ae795c0b349ac3e8a6d
4
+ data.tar.gz: bd29c5c8b101957a1ade535d14a128137185c002195d832d349e51c0aff9fcf4
5
5
  SHA512:
6
- metadata.gz: c3b2348477dc9915e86cc08786e1ed11c07dacfcb0946f19635c5a725bc9ca1cf87e58bf9536d874f29529648962ff25c197785b6479b025e0cb06c1a00cab4d
7
- data.tar.gz: 334a87f006492a9891aaf0d6ff520923dd99e95fc3847eea4e1784f60a2fe5cab3f9d2fc74ca28ae9f69667d3b4071c142bb823976676d697ad7103e194abcc6
6
+ metadata.gz: 021b8f98bab301f65e300523447fb4fc172cc12df0d7436da200e716e6dfd87d843b11ac3e07bd8496319eaa62803c59ad1a5ed88d9dc830e8858f99c4288366
7
+ data.tar.gz: 8c3d7a1b44ac551ce24716ab6da853e1bfcacac55c5ce8ba13a847990c863860cb5bc186832812d8b14aacc774ee96bf3d41057cd65ee966cbad1dda130681e7
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report something that seems wrong
4
+ title: ''
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. My code looks like this...
16
+ 2. When I run it like this...
17
+ 3. I see this error...
18
+
19
+ **Expected behavior**
20
+ A clear and concise description of what you expected to happen.
21
+
22
+ **Screenshots**
23
+ We love screenshots!
24
+ * Windows: `Print Screen` key and then `ctrl+v` directly into GitHub issues here.
25
+ * Shift + Command + 3, then `command+v` directly into GitHub issues here.
26
+
27
+ **Environment**
28
+ - OS: (e.g. Windows 11)
29
+ - Ruby version (e.g. 2.7, 3.0)
30
+
31
+ **Additional context**
32
+ Add any other context about the problem here.
33
+
34
+ **Check the following:**
35
+
36
+ - [ ] I have updated Squib to the latest version.
37
+ - [ ] I have checked the Squib issues backlog for something similar
38
+ - [ ] I have attempted to make a minimal script demonstrating my problem
39
+ - [ ] I have reviewed the [Squib Docs](https://squib.readthedocs.io/) and there's still a problem
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: enhancement
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen. Make an example of what you want the syntax to look like.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
21
+
22
+ - [ ] I might be interested in implementing this myself
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: Help Wanted - USE GITHUB DISCUSSIONS INSTEAD
3
+ about: Need help doing something in Squib? We prefer you use the (new!) Discussions tab
4
+ title: Help Wanted - USE GITHUB DISCUSSIONS INSTEAD
5
+ labels: help wanted
6
+ assignees: andymeneely
7
+ ---
8
+
9
+ Need help doing something in Squib? We prefer you use the (new!) Discussions tab
10
+
11
+ We prefer that GitHub issues be used for features or bugs.
12
+
13
+
@@ -1,4 +1,12 @@
1
- Be sure to remember to do the following for releases. (Copy into a GitHub issue)
1
+ ---
2
+ name: Release TODO list
3
+ about: Use this checklist when we release
4
+ title: Release v0.XYZ
5
+ labels: release
6
+ assignees: andymeneely
7
+ ---
8
+
9
+ Be sure to remember to do the following for releases.
2
10
 
3
11
  - [ ] CHANGELOG is written for all new changes
4
12
  - [ ] README is updated
@@ -0,0 +1,13 @@
1
+ ### Motivation
2
+
3
+ *Replace this line with why you are making this change.*
4
+
5
+ ### Have you...
6
+
7
+ - [ ] Written a sample in `_samples`?
8
+ - [ ] Updated documentation in the `docs/` folder?
9
+ - [ ] Linked this PR to an issue?
10
+ - [ ] Written any automated tests?
11
+ - [ ] Refactored your code to be maintainable?
12
+
13
+ The above things are not required, but appreciated.
@@ -1,6 +1,6 @@
1
1
  name: Squib Unit Tests
2
2
 
3
- on: [push]
3
+ on: [push, pull_request]
4
4
 
5
5
  jobs:
6
6
  test:
@@ -8,9 +8,9 @@ jobs:
8
8
  fail-fast: false
9
9
  matrix:
10
10
  os: [ubuntu, macos]
11
- ruby: [2.5, 2.6, 2.7, 3.0, head]
11
+ ruby: [2.7, 3.0, head]
12
12
  runs-on: ${{ matrix.os }}-latest
13
- continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' || (matrix.ruby == '3.0' && matrix.os == 'macos')}}
13
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') || (matrix.ruby == '3.0' && matrix.os == 'macos')}}
14
14
  steps:
15
15
  - uses: actions/checkout@v2
16
16
  - uses: ruby/setup-ruby@v1
@@ -0,0 +1,4 @@
1
+ {
2
+ "restructuredtext.confPath": "${workspaceFolder}\\docs",
3
+ "restructuredtext.linter.disabled": true
4
+ }
data/CHANGELOG.md CHANGED
@@ -1,10 +1,25 @@
1
1
  # Squib CHANGELOG
2
2
  Squib follows [semantic versioning](http://semver.org).
3
3
 
4
+ ## v0.18.0 / Unreleased
5
+
6
+ Features:
7
+ * Placeholders! Missing images to `svg` and `png` can be replaced by a `placeholder` (#339)
8
+ * New config option: `img_missing`. When an image is missing, warn or error to the console (#339)
9
+ * `save_sheet` learned how to `rotate` individual images! (#301)
10
+
11
+ Compatibility:
12
+ * Because of the features above, the new default behavior is to warn instead of errors on a missing file
13
+ * Ruby 2.7 is officially our minimum Ruby, since Ruby 2.6 will EOL in about six months from now
14
+
4
15
  ## v0.17.1 / 2021-09-07
5
16
 
6
17
  Bugs:
7
18
  * Fix frozen string error on `Squib.xlsx` import when stripping newlines is enabled
19
+ * `save_sheet` works with `rtl` and `trim` altogether properly now.
20
+
21
+ Chores:
22
+ * Added autoloading for various slow-loading libraries, speeding up initial `require`
8
23
 
9
24
  ## v0.17.1 / 2021-08-11
10
25
 
data/README.md CHANGED
@@ -31,7 +31,7 @@ Wanna see more? Check out the website: http://andymeneely.github.io/squib/
31
31
 
32
32
  ## Installation
33
33
 
34
- Squib requires Ruby 2.5 or later.
34
+ Squib requires Ruby 2.7 or later.
35
35
 
36
36
  Install it yourself with:
37
37
 
data/bin/squib CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'squib'
3
+ require 'squib/commands/cli'
3
4
 
4
5
  Squib::CLI.new.run
@@ -126,4 +126,13 @@ module Squib::Args::ArgLoader
126
126
  self
127
127
  end
128
128
 
129
+ # Return the deck's configuration
130
+ # This keeps the @deck local to this mixin instead of forcing args classes
131
+ # to "know" that @deck works.
132
+ #
133
+ # It also makes unit testing easier. Sue me.
134
+ def deck_conf
135
+ @deck.conf
136
+ end
137
+
129
138
  end
@@ -13,7 +13,10 @@ module Squib::Args
13
13
  end
14
14
 
15
15
  def self.parameters
16
- { file: nil }
16
+ {
17
+ file: nil,
18
+ placeholder: nil
19
+ }
17
20
  end
18
21
 
19
22
  def self.expanding_parameters
@@ -24,10 +27,29 @@ module Squib::Args
24
27
  [] # none of them
25
28
  end
26
29
 
27
- def validate_file(arg, _i)
30
+ def validate_file(arg, i)
28
31
  return nil if arg.nil?
29
- raise "File #{File.expand_path(arg)} does not exist!" unless File.exists?(arg)
30
- File.expand_path(arg)
32
+ return File.expand_path(arg) if File.exists?(arg)
33
+ return File.expand_path(placeholder[i]) if File.exists?(placeholder[i].to_s)
34
+
35
+ case deck_conf.img_missing.to_sym
36
+ when :error
37
+ raise "File #{File.expand_path(arg)} does not exist!"
38
+ when :warn
39
+ Squib.logger.warn "File #{File.expand_path(arg)} does not exist!"
40
+ end
41
+ return nil # the silent option - as if nil in the first place
42
+ end
43
+
44
+ def validate_placeholder(arg, _i)
45
+ # What if they specify placeholder, but it doesn't exist?
46
+ # ...always warn... that's probably a mistake they made
47
+ unless arg.nil? || File.exists?(arg)
48
+ msg = "Image placeholder #{File.expand_path(arg)} does not exist!"
49
+ Squib.logger.warn msg
50
+ return nil
51
+ end
52
+ return arg
31
53
  end
32
54
  end
33
55
  end
data/lib/squib/conf.rb CHANGED
@@ -23,6 +23,7 @@ module Squib
23
23
  'dir' => '_output',
24
24
  'hint' => :none,
25
25
  'img_dir' => '.',
26
+ 'img_missing' => :warn,
26
27
  'progress_bars' => false,
27
28
  'prefix' => 'card_',
28
29
  'ldquote' => "\u201C", # UTF8 chars
@@ -74,6 +75,10 @@ module Squib
74
75
  @config_hash['img_dir']
75
76
  end
76
77
 
78
+ def img_missing
79
+ @config_hash['img_missing'].to_sym
80
+ end
81
+
77
82
  def text_hint
78
83
  @config_hash['text_hint']
79
84
  end
data/lib/squib/dsl/png.rb CHANGED
@@ -31,6 +31,7 @@ module Squib
31
31
  crop_corner_radius crop_corner_x_radius crop_corner_y_radius
32
32
  flip_horizontal flip_vertical
33
33
  range layout
34
+ placeholder
34
35
  )
35
36
  end
36
37
 
@@ -30,7 +30,7 @@ module Squib
30
30
  range sprue
31
31
  columns rows rtl
32
32
  dir prefix count_format suffix
33
- margin gap trim trim_radius
33
+ margin gap trim trim_radius rotate
34
34
  )
35
35
  end
36
36
 
data/lib/squib/dsl/svg.rb CHANGED
@@ -33,6 +33,7 @@ module Squib
33
33
  flip_horizontal flip_vertical angle
34
34
  id force_id data
35
35
  range layout
36
+ placeholder
36
37
  )
37
38
  end
38
39
 
@@ -23,6 +23,7 @@ module Squib
23
23
  id force_id data
24
24
  flip_horizontal flip_vertical
25
25
  alpha angle blend mask
26
+ placeholder
26
27
  )
27
28
  end
28
29
 
@@ -4,13 +4,13 @@ module Squib
4
4
  # :nodoc:
5
5
  # @api private
6
6
  def render_sheet(range, batch, sheet)
7
- sheet_width = (sheet.columns * (@width + 2 * sheet.gap - 2 * sheet.trim)) + (2 * sheet.margin)
8
- sheet_height = (sheet.rows * (@height + 2 * sheet.gap - 2 * sheet.trim)) + (2 * sheet.margin)
7
+ rotate = batch.rotate.any? true # either rotate all or none
8
+ w,h,sheet_width,sheet_height = compute_dimensions(sheet, rotate)
9
9
  cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
10
10
  num_this_sheet = 0
11
11
  sheet_num = 0
12
12
  y = sheet.margin
13
- x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
13
+ x = sheet.rtl ? rtl_start_x(sheet_width, sheet, w) : sheet.margin
14
14
  @progress_bar.start("Saving PNG sheet to #{batch.summary}", @cards.size + 1) do |bar|
15
15
  range.each do |i|
16
16
  if num_this_sheet >= (sheet.columns * sheet.rows) # new sheet
@@ -20,17 +20,19 @@ module Squib
20
20
  num_this_sheet = 0
21
21
  sheet_num += 1
22
22
  y = sheet.margin
23
- x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
23
+ x = sheet.rtl ? rtl_start_x(sheet_width, sheet, w) : sheet.margin
24
24
  cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
25
25
  end
26
- surface = trim(@cards[i].cairo_surface, sheet.trim, @width, @height)
26
+ surface = preprocess(@cards[i].cairo_surface,
27
+ sheet.trim, w, h,
28
+ rotate, batch.angle[i])
27
29
  cc.set_source(surface, x, y)
28
30
  cc.paint
29
31
  num_this_sheet += 1
30
- x += (surface.width + sheet.gap) * (sheet.rtl ? -1 : 1)
32
+ x += (w + sheet.gap) * (sheet.rtl ? -1 : 1)
31
33
  if num_this_sheet % sheet.columns == 0 # new row
32
- x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
33
- y += surface.height + sheet.gap
34
+ x = sheet.rtl ? rtl_start_x(sheet_width, sheet, w) : sheet.margin
35
+ y += h + sheet.gap
34
36
  end
35
37
  bar.increment
36
38
  end
@@ -38,18 +40,32 @@ module Squib
38
40
  end
39
41
  end
40
42
 
41
- # Return a new Cairo::ImageSurface that is trimmed from the original
42
- #
43
- # @param surface The surface to trim
44
- # @param trim The number of pixels around the edge to trim
45
- # @param width The width of the surface prior to the trim
46
- # @param height The height of the surface prior to the trim
43
+ def compute_dimensions(sheet, rotate)
44
+ w,h = rotate ? [@height,@width] : [@width,@height]
45
+ w -= 2 * sheet.trim
46
+ h -= 2 * sheet.trim
47
+ sheet_width = (sheet.columns * (w + 2 * sheet.gap)) + (2 * sheet.margin)
48
+ sheet_height = (sheet.rows * (h + 2 * sheet.gap)) + (2 * sheet.margin)
49
+ return [w, h, sheet_width, sheet_height]
50
+ end
51
+
52
+ def rtl_start_x(sheet_width, sheet, w)
53
+ return sheet_width - sheet.margin - sheet.gap - w
54
+ end
55
+
56
+ # Return a new Cairo::ImageSurface that is trimmed and rotated
57
+ # from the original
47
58
  # :nodoc:
48
59
  # @api private
49
- def trim(surface, trim, width, height)
50
- if trim > 0
51
- tmp = Cairo::ImageSurface.new(width - 2 * trim, height - 2 * trim)
60
+ def preprocess(surface, trim, w, h, rotate, angle)
61
+ if trim > 0 || rotate
62
+ tmp = Cairo::ImageSurface.new(w, h)
52
63
  cc = Cairo::Context.new(tmp)
64
+ if rotate
65
+ cc.translate w * 0.5, h * 0.5
66
+ cc.rotate angle
67
+ cc.translate h * -0.5, w * -0.5
68
+ end
53
69
  cc.set_source(surface, -1 * trim, -1 * trim)
54
70
  cc.paint
55
71
  surface = tmp
@@ -1,4 +1,4 @@
1
- require 'roo'
1
+ autoload :Roo, 'roo'
2
2
  require_relative 'quantity_exploder'
3
3
 
4
4
  module Squib::Import
data/lib/squib/version.rb CHANGED
@@ -6,6 +6,6 @@ module Squib
6
6
  # Most of the time this is in the alpha of the next release.
7
7
  # e.g. v0.0.5a is on its way to becoming v0.0.5
8
8
  #
9
- VERSION = '0.17.2'
9
+ VERSION = '0.18.0'
10
10
  end
11
11
 
data/lib/squib.rb CHANGED
@@ -1,7 +1,7 @@
1
+ autoload :Cairo, 'cairo'
2
+ autoload :Pango, 'pango'
3
+ autoload :Rsvg, 'rsvg2'
1
4
  require 'logger'
2
- require 'cairo'
3
- require 'pango'
4
- require 'rsvg2'
5
5
  require 'rainbow/refinement'
6
6
  require_relative 'squib/version'
7
7
  require_relative 'squib/commands/cli'
@@ -9,7 +9,6 @@ require_relative 'squib/deck'
9
9
  require_relative 'squib/card'
10
10
  require_relative 'squib/system_fonts'
11
11
 
12
-
13
12
  module Squib
14
13
  using Rainbow # we can colorize strings now!
15
14
 
@@ -0,0 +1,49 @@
1
+ # require 'squib'
2
+ require_relative '../../lib/squib'
3
+
4
+ # By default Squib will simply warn you if an image is missing
5
+ # Instead, you can give it a `placeholder`
6
+ Squib.configure img_missing: :silent # no warnings, no errors, no placeholder
7
+ # Squib.configure img_missing: :warn # default
8
+ # Squib.configure img_missing: :error # pre Squib v0.18 behavior... blech
9
+
10
+ Squib::Deck.new(width: 100, height: 100, cards: 3) do
11
+ background color: :white
12
+
13
+ files = %w(angler-fish.png does-not-exist.png) # last one is nil
14
+ png file: files, placeholder: 'grit.png'
15
+ save_sheet columns: 1, prefix: 'placeholder_sheet_'
16
+ end
17
+
18
+ # Placeholders can be per-image too.
19
+ # What if a placeholder is specified but doesn't exist? It'll always warn.
20
+ Squib.configure img_missing: :warn # default
21
+ Squib::Deck.new(width: 100, height: 100, cards: 4) do
22
+ background color: :white
23
+
24
+ files = %w(angler-fish.png does-not-exist.png does-not-exist.png does-not-exist.png)
25
+ placeholders = %w(grit.png does-not-exist.png grit.png )
26
+ png file: files, placeholder: placeholders
27
+
28
+ # text embeds can have placeholders too
29
+ text(str: 'A', color: :red) do |embed|
30
+ embed.png key: 'A', file: files, placeholder: placeholders, width: 30, height: 30
31
+ end
32
+
33
+ save_sheet columns: 1, prefix: 'multi_placeholder_sheet_'
34
+ end
35
+
36
+ # Do errors work?
37
+ # If you REALLY want the old, pre-Squib v0.18 functionality
38
+ # ...you can still have it
39
+ # This is really more of a regression test than example.
40
+ Squib.configure img_missing: :error
41
+ Squib::Deck.new(width: 100, height: 100, cards: 1) do
42
+ begin
43
+ png file: 'does-not-exist.png' # no placeholder... should error!
44
+ raise Exception.new 'Runtime Error should have been thrown!'
45
+ rescue RuntimeError => e
46
+ # a runtime error should have happened here. So nothing happens. Good.
47
+ Squib.logger.error 'Yay! An error we expected was thrown.'
48
+ end
49
+ end
@@ -1,7 +1,7 @@
1
- require 'squib'
1
+ # require 'squib'
2
+ require_relative '../../lib/squib'
2
3
 
3
4
  # This sample demonstrates how to use the various save methods
4
-
5
5
  Squib::Deck.new(width: 825, height: 1125, cards: 16) do
6
6
  background color: :gray
7
7
  rect x: 38, y: 38, width: 750, height: 1050,
@@ -60,3 +60,16 @@ Squib::Deck.new(width: 100, height: 100, cards: 3) do
60
60
  # Buggy behavior was to revert to 1 row and not respect the rows arg.
61
61
  save_sheet prefix: 'save_sheet_bug332_', rows: 2, columns: 4
62
62
  end
63
+
64
+ # Allow rotating
65
+ Squib::Deck.new(width: 100, height: 50, cards: 8) do
66
+ background color: :white
67
+ rect x: 10, y: 10, width: 80, height: 30
68
+ rect x: 5, y: 5, width: 90, height: 40, stroke_width: 5, stroke_color: :blue
69
+ text y: 2, str: 0..7, font: 'Open Sans Bold 8', align: :center, width: 100
70
+ save_sheet prefix: 'save_sheet_unrotated_', rows: 2, columns: 3
71
+ save_sheet prefix: 'save_sheet_custom_rotate_', rows: 2, columns: 3, rotate: [:clockwise, :counterclockwise] * 4
72
+ save_sheet prefix: 'save_sheet_rotated_', rows: 2, columns: 3, rotate: true
73
+ save_sheet prefix: 'save_sheet_rotated_trimmed_', rows: 2, columns: 3, rotate: true, trim: 5
74
+ save_sheet prefix: 'save_sheet_rotated_trimmed_rtl_', rows: 2, columns: 3, rotate: true, trim: 5, rtl: true
75
+ end
data/squib.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.specification_version = 2 if spec.respond_to? :specification_version=
8
8
  spec.required_rubygems_version = Gem::Requirement.new('>= 0') if spec.respond_to? :required_rubygems_version=
9
9
  spec.rubygems_version = '2.2.2'
10
- spec.required_ruby_version = '>= 2.5.0'
10
+ spec.required_ruby_version = '>= 2.7.0'
11
11
 
12
12
  spec.name = 'squib'
13
13
  spec.version = Squib::VERSION
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.17.2
4
+ version: 0.18.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: 2021-09-07 00:00:00.000000000 Z
11
+ date: 2021-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cairo
@@ -341,6 +341,7 @@ extra_rdoc_files:
341
341
  - samples/images/_cairo_access.rb
342
342
  - samples/images/_images.rb
343
343
  - samples/images/_more_load_images.rb
344
+ - samples/images/_placeholders.rb
344
345
  - samples/intro/01_hello.rb
345
346
  - samples/intro/02_options.rb
346
347
  - samples/intro/03_layout.rb
@@ -377,8 +378,14 @@ extra_rdoc_files:
377
378
  - samples/units/_shorthands.rb
378
379
  - samples/units/_units.rb
379
380
  files:
381
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
382
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
383
+ - ".github/ISSUE_TEMPLATE/help-wanted.md"
384
+ - ".github/ISSUE_TEMPLATE/release-todo.md"
385
+ - ".github/PULL_REQUEST_TEMPLATE.md"
380
386
  - ".github/workflows/tests.yml"
381
387
  - ".gitignore"
388
+ - ".vscode/settings.json"
382
389
  - CHANGELOG.md
383
390
  - CONTRIBUTING.md
384
391
  - Dockerfile
@@ -386,7 +393,6 @@ files:
386
393
  - Guardfile
387
394
  - LICENSE.txt
388
395
  - README.md
389
- - RELEASE TODO.md
390
396
  - Rakefile
391
397
  - bin/squib
392
398
  - lib/squib.rb
@@ -539,6 +545,7 @@ files:
539
545
  - samples/images/_cairo_access.rb
540
546
  - samples/images/_images.rb
541
547
  - samples/images/_more_load_images.rb
548
+ - samples/images/_placeholders.rb
542
549
  - samples/intro/01_hello.rb
543
550
  - samples/intro/02_options.rb
544
551
  - samples/intro/03_layout.rb
@@ -588,7 +595,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
588
595
  requirements:
589
596
  - - ">="
590
597
  - !ruby/object:Gem::Version
591
- version: 2.5.0
598
+ version: 2.7.0
592
599
  required_rubygems_version: !ruby/object:Gem::Requirement
593
600
  requirements:
594
601
  - - ">="
@@ -617,6 +624,7 @@ test_files:
617
624
  - samples/images/_cairo_access.rb
618
625
  - samples/images/_images.rb
619
626
  - samples/images/_more_load_images.rb
627
+ - samples/images/_placeholders.rb
620
628
  - samples/intro/01_hello.rb
621
629
  - samples/intro/02_options.rb
622
630
  - samples/intro/03_layout.rb