You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.2 KiB
63 lines
1.2 KiB
require 'squib/args/arg_loader' |
|
require 'squib/args/dir_validator' |
|
|
|
module Squib |
|
# @api private |
|
module Args |
|
class SaveBatch |
|
include ArgLoader |
|
include DirValidator |
|
|
|
def initialize |
|
end |
|
|
|
def self.parameters |
|
{ |
|
angle: 0, |
|
count_format: '%02d', |
|
dir: '_output', |
|
prefix: 'card_', |
|
rotate: false, |
|
trim_radius: 0, |
|
trim: 0, |
|
} |
|
end |
|
|
|
def self.expanding_parameters |
|
self.parameters.keys # all of them |
|
end |
|
|
|
def self.params_with_units |
|
[:trim, :trim_radius] |
|
end |
|
|
|
def validate_dir(arg, _i) |
|
ensure_dir_created(arg) |
|
end |
|
|
|
def validate_rotate(arg, i) |
|
case arg |
|
when true, :clockwise |
|
angle[i] = 0.5 * Math::PI |
|
return true |
|
when :counterclockwise |
|
angle[i] = 1.5 * Math::PI |
|
return true |
|
when false |
|
false |
|
else |
|
raise 'invalid option to rotate: only [true, false, :clockwise, :counterclockwise]' |
|
end |
|
end |
|
|
|
def full_filename(i) |
|
"#{dir[i]}/#{prefix[i]}#{count_format[i] % i}.png" |
|
end |
|
|
|
def summary |
|
"#{dir[0]}/#{prefix[0]}_*" |
|
end |
|
|
|
end |
|
end |
|
end
|
|
|