documentation specs, beginning cleaner conversion
This commit is contained in:
@@ -34,12 +34,12 @@ module Squib
|
||||
end
|
||||
|
||||
# DSL method. See http://squib.readthedocs.io
|
||||
def grid(opts = {})
|
||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||
draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
range.each { |i| @cards[i].grid(box[i], draw[i]) }
|
||||
end
|
||||
# def grid(opts = {})
|
||||
# range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||
# draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
# box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
# range.each { |i| @cards[i].grid(box[i], draw[i]) }
|
||||
# end
|
||||
|
||||
# DSL method. See http://squib.readthedocs.io
|
||||
def triangle(opts = {})
|
||||
|
||||
+41
-39
@@ -1,55 +1,57 @@
|
||||
require_relative 'arg_loader'
|
||||
|
||||
module Squib
|
||||
# @api private
|
||||
module Args
|
||||
module Squib::Args
|
||||
|
||||
class Box
|
||||
include ArgLoader
|
||||
module_function
|
||||
def extract_box(opts, deck, dsl_method_defaults = {})
|
||||
Box.new(deck, dsl_method_defaults).extract!(opts, deck)
|
||||
end
|
||||
|
||||
def initialize(deck = nil, dsl_method_defaults = {})
|
||||
@deck = deck
|
||||
@dsl_method_defaults = dsl_method_defaults
|
||||
end
|
||||
class Box
|
||||
include ArgLoader
|
||||
|
||||
def self.parameters
|
||||
{ x: 0, y: 0,
|
||||
width: :deck, height: :deck,
|
||||
radius: nil, x_radius: 0, y_radius: 0
|
||||
}
|
||||
end
|
||||
def initialize(deck = nil, dsl_method_defaults = {})
|
||||
@deck = deck
|
||||
@dsl_method_defaults = dsl_method_defaults
|
||||
end
|
||||
|
||||
def self.expanding_parameters
|
||||
parameters.keys # all of them
|
||||
end
|
||||
def self.parameters
|
||||
{ x: 0, y: 0,
|
||||
width: :deck, height: :deck,
|
||||
radius: nil, x_radius: 0, y_radius: 0
|
||||
}
|
||||
end
|
||||
|
||||
def self.params_with_units
|
||||
parameters.keys # all of them
|
||||
end
|
||||
def self.expanding_parameters
|
||||
parameters.keys # all of them
|
||||
end
|
||||
|
||||
def validate_width(arg, _i)
|
||||
return arg if @deck.nil?
|
||||
return @deck.width if arg == :deck
|
||||
arg
|
||||
end
|
||||
def self.params_with_units
|
||||
parameters.keys # all of them
|
||||
end
|
||||
|
||||
def validate_height(arg, _i)
|
||||
return arg if @deck.nil?
|
||||
return @deck.height if arg == :deck
|
||||
arg
|
||||
end
|
||||
def validate_width(arg, _i)
|
||||
return arg if @deck.nil?
|
||||
return @deck.width if arg == :deck
|
||||
arg
|
||||
end
|
||||
|
||||
def validate_x_radius(arg, i)
|
||||
return radius[i] unless radius[i].nil?
|
||||
arg
|
||||
end
|
||||
def validate_height(arg, _i)
|
||||
return arg if @deck.nil?
|
||||
return @deck.height if arg == :deck
|
||||
arg
|
||||
end
|
||||
|
||||
def validate_y_radius(arg, i)
|
||||
return radius[i] unless radius[i].nil?
|
||||
arg
|
||||
end
|
||||
def validate_x_radius(arg, i)
|
||||
return radius[i] unless radius[i].nil?
|
||||
arg
|
||||
end
|
||||
|
||||
def validate_y_radius(arg, i)
|
||||
return radius[i] unless radius[i].nil?
|
||||
arg
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -112,5 +112,11 @@ module Squib
|
||||
require_relative 'api/text'
|
||||
require_relative 'api/units'
|
||||
|
||||
###################
|
||||
### DSL METHODS ###
|
||||
###################
|
||||
require_relative 'dsl/background'
|
||||
require_relative 'dsl/grid'
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ module Squib
|
||||
@dsl_method = dsl_method
|
||||
end
|
||||
|
||||
def accepted_params
|
||||
def self.accepted_params
|
||||
%i{
|
||||
range
|
||||
color
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
require_relative '../errors_warnings/warn_unexpected_params'
|
||||
|
||||
module Squib
|
||||
class Deck
|
||||
def grid(opts = {})
|
||||
DSL::Grid.new(self, __callee__).run(opts)
|
||||
end
|
||||
end
|
||||
|
||||
module DSL
|
||||
class Grid
|
||||
include WarnUnexpectedParams
|
||||
attr_reader :dsl_method, :deck
|
||||
|
||||
def initialize(deck, dsl_method)
|
||||
@deck = deck
|
||||
@dsl_method = dsl_method
|
||||
end
|
||||
|
||||
def self.accepted_params
|
||||
%i(x y width height
|
||||
fill_color stroke_color stroke_width stroke_strategy dash cap
|
||||
range layout)
|
||||
end
|
||||
|
||||
def run(opts)
|
||||
warn_if_unexpected opts
|
||||
range = Args::CardRange.new(opts[:range], deck_size: deck.size)
|
||||
draw = Args::Draw.new(@deck.custom_colors).extract!(opts, deck)
|
||||
box = Args.extract_box(opts, deck)
|
||||
range.each { |i| deck.cards[i].grid(box[i], draw[i]) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -4,6 +4,7 @@ module Squib::WarnUnexpectedParams
|
||||
using Rainbow # we can colorize strings now!
|
||||
|
||||
def warn_if_unexpected(opts, uplevel: 5)
|
||||
accepted_params = self.class.accepted_params
|
||||
unexpected = opts.keys - accepted_params
|
||||
unexpected.each do |key|
|
||||
warn "Unexpected parameter '#{key.to_s.yellow}:' to #{dsl_method.to_s.cyan}(). Accepted parameters: #{accepted_params}",
|
||||
|
||||
Reference in New Issue
Block a user