diff --git a/lib/squib/api/image.rb b/lib/squib/api/image.rb index 8d72071..0fbc66c 100644 --- a/lib/squib/api/image.rb +++ b/lib/squib/api/image.rb @@ -28,12 +28,12 @@ module Squib # @return [nil] Returns nil # @api public def png(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout) - box = Args::Box.new(self, {width: :native, height: :native}).load!(opts, expand_by: size, layout: layout, dpi: dpi) - trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) Dir.chdir(img_dir) do + range = Args::CardRange.new(opts[:range], deck_size: size) + paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout) + box = Args::Box.new(self, {width: :native, height: :native}).load!(opts, expand_by: size, layout: layout, dpi: dpi) + trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) @progress_bar.start('Loading PNG(s)', range.size) do |bar| range.each do |i| @cards[i].png(ifile[i].file, box[i], paint[i], trans[i]) @@ -68,13 +68,13 @@ module Squib # @return [nil] Returns nil # @api public def svg(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout) - box = Args::Box.new(self, {width: :native, height: :native}).load!(opts, expand_by: size, layout: layout, dpi: dpi) - trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - svg_args = Args::SvgSpecial.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) Dir.chdir(img_dir) do + range = Args::CardRange.new(opts[:range], deck_size: size) + paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout) + box = Args::Box.new(self, {width: :native, height: :native}).load!(opts, expand_by: size, layout: layout, dpi: dpi) + trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + svg_args = Args::SvgSpecial.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) @progress_bar.start('Loading SVG(s)', range.size) do |bar| range.each do |i| if svg_args.render?(i) diff --git a/lib/squib/args/arg_loader.rb b/lib/squib/args/arg_loader.rb index ef80653..2001474 100644 --- a/lib/squib/args/arg_loader.rb +++ b/lib/squib/args/arg_loader.rb @@ -12,6 +12,7 @@ module Squib # Main class invoked by the client (i.e. api/ methods) def load!(args, expand_by: 1, layout: {}, dpi: 300) + Squib.logger.debug { "ARG LOADER: load! for #{self.class}, args: #{args}" } @dpi = dpi args[:layout] = prep_layout_args(args[:layout], expand_by: expand_by) expand_and_set_and_defaultify(args: args, by: expand_by, layout: layout) @@ -133,4 +134,4 @@ module Squib end end -end \ No newline at end of file +end diff --git a/samples/custom-config.yml b/samples/custom-config.yml index 1aa8e97..9d5badd 100644 --- a/samples/custom-config.yml +++ b/samples/custom-config.yml @@ -2,4 +2,4 @@ progress_bars: true text_hint: '#FF0000' custom_colors: foo: '#ccc' -img_dir: customconfig-imgdir \ No newline at end of file +img_dir: customconfig-imgdir diff --git a/samples/custom_config.rb b/samples/custom_config.rb index 8953f18..e57ae59 100644 --- a/samples/custom_config.rb +++ b/samples/custom_config.rb @@ -9,7 +9,7 @@ Squib::Deck.new(config: 'custom-config.yml') do font: 'Arial 72', align: :center # Progress bars are shown for these commands - # And images are taken from config-imgdir + # And images are taken from img_dir, not the cwd. png file: 'shiny-purse2.png', x: 620, y: 75 svg file: 'spanner2.svg', x: 620, y: 218 save_png prefix: 'custom-config_' diff --git a/spec/args/input_file_spec.rb b/spec/args/input_file_spec.rb new file mode 100644 index 0000000..29d0baa --- /dev/null +++ b/spec/args/input_file_spec.rb @@ -0,0 +1,21 @@ +require 'spec_helper' +require 'squib/args/input_file' + +describe Squib::Args::InputFile do + subject(:ifile) {Squib::Args::InputFile.new} + + context 'validate_file' do + + it 'allows a file if it exists' do + args = {file: __FILE__} # I code therefore I am. + ifile.load!(args, expand_by: 1) + expect(ifile).to have_attributes(file: [File.expand_path(__FILE__)]) + end + + it 'raises on non-existent file' do + args = {file: 'foo.rb'} + expect { ifile.load!(args, expand_by: 1) }.to raise_error + end + + end +end