Browse Source

cleaning up

dev
Andy Meneely 6 years ago
parent
commit
6774f83b00
  1. 25
      lib/squib/dsl/background.rb
  2. 12
      lib/squib/errors_warnings/error_context.rb
  3. 11
      lib/squib/errors_warnings/warn_unexpected_params.rb

25
lib/squib/dsl/background.rb

@ -1,32 +1,31 @@
require_relative '../errors_warnings/warn_unexpected_params' require_relative '../errors_warnings/warn_unexpected_params'
module Squib module Squib
class Deck class Deck
def background(opts = {}) # DSL method. See http://squib.readthedocs.io def background(opts = {}) # DSL method. See http://squib.readthedocs.io
BackgroundDSLMethod.new(self).run(opts) BackgroundDSLMethod.new(self, __callee__).run(opts)
end end
end end
class BackgroundDSLMethod class BackgroundDSLMethod
include WarnUnexpectedParam include WarnUnexpectedParams
attr_reader :dsl_method, :deck
def initialize(deck) def initialize(deck, dsl_method)
@error_cxt = <<~EOS.split("\n").join(' ').strip
to Squib method '#{caller_locations[1].label}'
from #{caller_locations[2].path}:#{caller_locations[2].lineno}
EOS
@deck = deck @deck = deck
@dsl_method = dsl_method
end end
def accepted_params def accepted_params
[ %i{
:range, range
:color color
] }
end end
def run(opts) def run(opts)
warn_unexpected_params(opts) warn_if_unexpected opts
range = Args::CardRange.new(opts[:range], deck_size: @deck.size) 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) 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]) } range.each { |i| @deck.cards[i].background(draw.color[i]) }

12
lib/squib/errors_warnings/error_context.rb

@ -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

11
lib/squib/errors_warnings/warn_unexpected_params.rb

@ -1,14 +1,13 @@
require_relative 'error_context'
require 'rainbow/refinement' require 'rainbow/refinement'
module Squib::WarnUnexpectedParam module Squib::WarnUnexpectedParams
using Rainbow # we can colorize strings now! 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 = opts.keys - accepted_params
unexpected.each do |key| unexpected.each do |key|
Squib.logger.warn do warn "Unexpected parameter '#{key.to_s.yellow}:' to #{dsl_method.to_s.cyan}(), ignoring...",
"Unexpected option '#{key.to_s.yellow}' #{@error_cxt} ...ignoring" uplevel: uplevel
end
end end
end end
end end

Loading…
Cancel
Save