add suffix option

closes #268
dev
Andy Meneely 2020-11-19 00:14:04 -05:00
parent b2ea6cebde
commit cd3bf1b3f2
13 changed files with 28 additions and 10 deletions

View File

@ -8,6 +8,7 @@ Features:
* Shorthands for `x`, `y`, `width`, and `height`! The words `x: 'middle'` and `x: 'middle + 1in'` will get interpreted. See the docs for details.
* Autoscaling text! `ellipsize: :autoscale` will now downscale your `font_size` if the text ellipsized. Thanks @Qgel! (#288, #111).
* Option checking!! Completely reworked the way we handle arguments in Squib internally (no external behavioral differences). Now, when you give an option to Squib that is not expected. Since every DSL method "knows" what options it takes, that also means we have EVERY option properly documented (missed a few...) AND we have an automated test that will tell us if we forget to document it.
* `save_png` and `save_sheet` now have a `suffix` option which defaults to `''`. So now you can customize the filenames with `prefix`, `count_format`, and `suffix`.
Compatibility:
* When saving PNGs with sprues, outputs start counting at zero - which is more consistent with the rest of Squib.

View File

@ -14,13 +14,18 @@ dir
prefix
default ``'card_'``
the prefix of the file name to be printed.
the prefix of all the filenames saved
count_format
default: ``'%02d'``
the format string used for formatting the card count (e.g. padding zeros). Uses a Ruby format string (see the Ruby doc for ``Kernel::sprintf`` for specifics)
suffix
default: ``''``
the suffix of all the filenames saved, just before the `.png` extension.
rotate
default: ``false``

View File

@ -36,6 +36,11 @@ count_format
the format string used for formatting the card count (e.g. padding zeros). Uses a Ruby format string (see the Ruby doc for ``Kernel::sprintf`` for specifics)
suffix
default: ``''``
the suffix of all the filenames saved, just before the `.png` extension.
dir
default: ``'_output'``

View File

@ -20,6 +20,7 @@ module Squib::Args
dir: '_output',
prefix: 'card_',
rotate: false,
suffix: '',
trim_radius: 0,
trim: 0,
}
@ -53,11 +54,11 @@ module Squib::Args
end
def full_filename(i)
"#{dir[i]}/#{prefix[i]}#{count_format[i] % i}.png"
"#{dir[i]}/#{prefix[i]}#{count_format[i] % i}#{suffix[i]}.png"
end
def summary
"#{dir[0]}/#{prefix[0]}_*"
"#{dir[0]}/#{prefix[0]}_*#{suffix[0]}"
end
end

View File

@ -35,6 +35,7 @@ module Squib::Args
height: 2550,
margin: 75,
prefix: 'sheet_',
suffix: '',
rows: :infinite,
columns: 5,
trim_radius: 0,
@ -95,7 +96,7 @@ module Squib::Args
if i.nil?
"#{dir}/#{file}"
else
"#{dir}/#{prefix}#{count_format % i}.png"
"#{dir}/#{prefix}#{count_format % i}#{suffix}.png"
end
end

View File

@ -22,7 +22,7 @@ module Squib
def self.accepted_params
%i(
range
dir prefix count_format
dir prefix suffix count_format
rotate trim trim_radius
)
end

View File

@ -29,7 +29,7 @@ module Squib
%i(
range sprue
columns rows rtl
prefix count_format dir
dir prefix count_format suffix
margin gap trim trim_radius
)
end

View File

@ -10,7 +10,7 @@ module Squib
else
@cairo_surface
end
write_png(surface, index, batch.dir, batch.prefix, batch.count_format)
write_png(surface, index, batch)
end
# :nodoc:
@ -44,8 +44,8 @@ module Squib
return new_cc.target
end
def write_png(surface, i, dir, prefix, count_format)
surface.write_to_png("#{dir}/#{prefix}#{count_format % i}.png")
def write_png(surface, i, b)
surface.write_to_png("#{b.dir}/#{b.prefix}#{b.count_format % i}#{b.suffix}.png")
end
end

View File

@ -16,6 +16,10 @@ Squib::Deck.new(width: 50, height: 50, cards: 2) do
# bar.png
save_png prefix: ['foo', 'bar'], count_format: ''
# foo_00_bar.png
# foo_01_bar.png
save_png prefix: 'foo_', suffix: '_bar'
# thief.png
# thug.png
data = csv data: "filename\nthief\nthug"

View File

@ -45,6 +45,7 @@ Squib::Deck.new(width: 825, height: 1125, cards: 16) do
# Sheets can arrange left-to-right and right-to-left
save_sheet prefix: 'save_sheet_rtl_',
suffix: '_with_suffix',
range: 0..1, rtl: true,
columns: 2, rows: 1,
margin: 75, gap: 5, trim: 37

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1791,7 +1791,7 @@ cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 662, 75])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rtl_00.png"])
surface: write_to_png(["_output/save_sheet_rtl_00_with_suffix.png"])
surface: finish([])
surface: finish([])
surface: finish([])