diff --git a/lib/squib/dsl/background.rb b/lib/squib/dsl/background.rb index 7118b04..607b771 100644 --- a/lib/squib/dsl/background.rb +++ b/lib/squib/dsl/background.rb @@ -1,32 +1,31 @@ require_relative '../errors_warnings/warn_unexpected_params' + module Squib class Deck def background(opts = {}) # DSL method. See http://squib.readthedocs.io - BackgroundDSLMethod.new(self).run(opts) + BackgroundDSLMethod.new(self, __callee__).run(opts) end end class BackgroundDSLMethod - include WarnUnexpectedParam + include WarnUnexpectedParams + + attr_reader :dsl_method, :deck - def initialize(deck) - @error_cxt = <<~EOS.split("\n").join(' ').strip - to Squib method '#{caller_locations[1].label}' - from #{caller_locations[2].path}:#{caller_locations[2].lineno} - EOS + def initialize(deck, dsl_method) @deck = deck + @dsl_method = dsl_method end def accepted_params - [ - :range, - :color - ] + %i{ + range + color + } end - def run(opts) - warn_unexpected_params(opts) + warn_if_unexpected opts range = Args::CardRange.new(opts[:range], deck_size: @deck.size) draw = Args::Draw.new(@deck.custom_colors).load!(opts, expand_by: @deck.size, layout: @deck.layout, dpi: @deck.dpi) range.each { |i| @deck.cards[i].background(draw.color[i]) } diff --git a/lib/squib/errors_warnings/error_context.rb b/lib/squib/errors_warnings/error_context.rb deleted file mode 100644 index 895f65a..0000000 --- a/lib/squib/errors_warnings/error_context.rb +++ /dev/null @@ -1,12 +0,0 @@ -require 'rainbow/refinement' - -module Squib::ErrorContext - using Rainbow # we can colorize strings now! - - # When we throw an error, we want to be able to find and report: - # (a) the DSL method we called, e.g. 'background' - # (b) the line number from the user's source file - def error_context - "in Squib DSL method #{dsl_method.to_s.aliceblue} from #{user_loc}" - end -end diff --git a/lib/squib/errors_warnings/warn_unexpected_params.rb b/lib/squib/errors_warnings/warn_unexpected_params.rb index 43fd486..8400f40 100644 --- a/lib/squib/errors_warnings/warn_unexpected_params.rb +++ b/lib/squib/errors_warnings/warn_unexpected_params.rb @@ -1,14 +1,13 @@ -require_relative 'error_context' require 'rainbow/refinement' -module Squib::WarnUnexpectedParam +module Squib::WarnUnexpectedParams using Rainbow # we can colorize strings now! - def warn_unexpected_params(opts) + + def warn_if_unexpected(opts, uplevel: 5) unexpected = opts.keys - accepted_params unexpected.each do |key| - Squib.logger.warn do - "Unexpected option '#{key.to_s.yellow}' #{@error_cxt} ...ignoring" - end + warn "Unexpected parameter '#{key.to_s.yellow}:' to #{dsl_method.to_s.cyan}(), ignoring...", + uplevel: uplevel end end end