cleaning up
parent
51d425caa7
commit
6774f83b00
|
|
@ -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
|
||||
|
||||
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
|
||||
attr_reader :dsl_method, :deck
|
||||
|
||||
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]) }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue