documentation specs, beginning cleaner conversion

This commit is contained in:
Andy Meneely
2020-03-13 10:38:34 -04:00
parent 750cb40267
commit 76ef45cfa4
13 changed files with 154 additions and 50 deletions
+6 -6
View File
@@ -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
View File
@@ -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
+6
View File
@@ -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
+1 -1
View File
@@ -17,7 +17,7 @@ module Squib
@dsl_method = dsl_method
end
def accepted_params
def self.accepted_params
%i{
range
color
+35
View File
@@ -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}",