cleaning up
parent
51d425caa7
commit
6774f83b00
|
|
@ -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
|
||||||
|
|
||||||
def initialize(deck)
|
attr_reader :dsl_method, :deck
|
||||||
@error_cxt = <<~EOS.split("\n").join(' ').strip
|
|
||||||
to Squib method '#{caller_locations[1].label}'
|
def initialize(deck, dsl_method)
|
||||||
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]) }
|
||||||
|
|
|
||||||
|
|
@ -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'
|
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…
Reference in New Issue