From a7962e3728ca951d084a9988a6aafe6e25600b0a Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Sun, 9 Aug 2015 23:25:38 -0400 Subject: [PATCH] Start porting save methods over to args --- lib/squib/api/save.rb | 8 ++++++-- lib/squib/args/card_range.rb | 2 +- lib/squib/args/save_batch.rb | 30 ++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 lib/squib/args/save_batch.rb diff --git a/lib/squib/api/save.rb b/lib/squib/api/save.rb index 8af80ae..cd93636 100644 --- a/lib/squib/api/save.rb +++ b/lib/squib/api/save.rb @@ -1,3 +1,6 @@ +require 'squib/args/save_batch' +require 'squib/args/card_range' + module Squib class Deck @@ -11,7 +14,6 @@ module Squib # @return self # @api public def save(opts = {}) - # opts = needs(opts, [:range, :creatable_dir, :formats, :prefix, :rotate]) save_png(opts) if Array(opts[:format]).include? :png save_pdf(opts) if Array(opts[:format]).include? :pdf self @@ -30,9 +32,11 @@ module Squib # @return [nil] Returns nothing # @api public def save_png(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) opts = needs(opts,[:range, :creatable_dir, :prefix, :count_format, :rotate]) @progress_bar.start("Saving PNGs to #{opts[:dir]}/#{opts[:prefix]}*", @cards.size) do |bar| - opts[:range].each do |i| + range.each do |i| @cards[i].save_png(i, opts[:dir], opts[:prefix], opts[:count_format], opts[:rotate], opts[:angle]) bar.increment end diff --git a/lib/squib/args/card_range.rb b/lib/squib/args/card_range.rb index f071a35..c3352ff 100644 --- a/lib/squib/args/card_range.rb +++ b/lib/squib/args/card_range.rb @@ -29,4 +29,4 @@ module Squib end end -end \ No newline at end of file +end diff --git a/lib/squib/args/save_batch.rb b/lib/squib/args/save_batch.rb new file mode 100644 index 0000000..14c2d71 --- /dev/null +++ b/lib/squib/args/save_batch.rb @@ -0,0 +1,30 @@ +require 'squib/args/arg_loader' + +module Squib + # @api private + module Args + class SaveBatch + include ArgLoader + + def initialize #TODO DSL method default for prefix + end + + def self.parameters + { dir: '_output', + prefix: 'card_', + count_format: '%02d', + rotate: false, + } + end + + def self.expanding_parameters + [] # none of them + end + + def self.params_with_units + [] # none of them + end + + end + end +end