Ripping out the notorious input_helpers.rb
This commit is contained in:
@@ -142,11 +142,6 @@ module Squib
|
||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||
hand = Args::HandSpecial.new(height).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
sheet = Args::Sheet.new(custom_colors, {file: 'hand.png', trim_radius: 0}).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
|
||||
opts = {file: 'hand.png', fill_color: :white, radius: :auto, trim_radius: 0}
|
||||
.merge(opts)
|
||||
opts = needs(opts,[:range, :margin, :trim, :trim_radius, :creatable_dir, :file_to_save])
|
||||
opts[:radius] = 0.3 * height if opts[:radius] == :auto
|
||||
render_hand(range, sheet, hand)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'cairo'
|
||||
require 'squib/input_helpers'
|
||||
require 'squib/graphics/cairo_context_wrapper'
|
||||
|
||||
module Squib
|
||||
|
||||
+7
-9
@@ -1,16 +1,15 @@
|
||||
require 'yaml'
|
||||
require 'pp'
|
||||
require 'forwardable'
|
||||
require 'pp'
|
||||
require 'squib'
|
||||
require 'squib/card'
|
||||
require 'squib/progress'
|
||||
require 'squib/input_helpers'
|
||||
require 'squib/constants'
|
||||
require 'squib/layout_parser'
|
||||
require 'squib/args/unit_conversion'
|
||||
require 'squib/card'
|
||||
require 'squib/conf'
|
||||
require 'squib/graphics/showcase'
|
||||
require 'squib/constants'
|
||||
require 'squib/graphics/hand'
|
||||
require 'squib/graphics/showcase'
|
||||
require 'squib/layout_parser'
|
||||
require 'squib/progress'
|
||||
|
||||
|
||||
# The project module
|
||||
#
|
||||
@@ -22,7 +21,6 @@ module Squib
|
||||
# @api public
|
||||
class Deck
|
||||
include Enumerable
|
||||
include Squib::InputHelpers
|
||||
extend Forwardable
|
||||
|
||||
# Attributes for the width, height (in pixels) and number of cards
|
||||
|
||||
@@ -1,242 +0,0 @@
|
||||
require 'squib/constants'
|
||||
require 'squib/args/unit_conversion'
|
||||
|
||||
module Squib
|
||||
# :nodoc:
|
||||
# @api private
|
||||
module InputHelpers
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def needs(opts, params)
|
||||
Squib.logger.debug {"Method #{caller(1,1)} was given the following opts: #{opts}"}
|
||||
opts = layoutify(opts) if params.include? :layout
|
||||
opts = Squib::SYSTEM_DEFAULTS.merge(opts)
|
||||
opts = expand_singletons(opts, params)
|
||||
opts = rangeify(opts) if params.include? :range
|
||||
opts = fileify(opts) if params.include? :file
|
||||
opts = fileify(opts, false) if params.include? :file_to_save
|
||||
opts = colorify(opts, true) if params.include? :nillable_color
|
||||
opts = dirify(opts, :dir, true) if params.include? :creatable_dir
|
||||
opts = dirify(opts, :img_dir, false) if params.include? :img_dir
|
||||
opts = fileify(opts, false) if params.include? :files
|
||||
opts = colorify(opts) if params.include? :color
|
||||
opts = colorify(opts, false, :fill_color) if params.include? :fill_color
|
||||
opts = colorify(opts, false, :stroke_color) if params.include? :stroke_color
|
||||
opts = fontify(opts) if params.include? :font
|
||||
opts = radiusify(opts) if params.include? :rect_radius
|
||||
opts = svgidify(opts) if params.include? :svgid
|
||||
opts = formatify(opts) if params.include? :formats
|
||||
opts = rotateify(opts) if params.include? :rotate
|
||||
opts = rowify(opts) if params.include? :rows
|
||||
opts = faceify(opts) if params.include? :face
|
||||
opts = convert_units(opts, params)
|
||||
opts
|
||||
end
|
||||
module_function :needs
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def expand_singletons(opts, needed_params)
|
||||
Squib::EXPANDING_PARAMS.each_pair do |param_name, api_param|
|
||||
if needed_params.include? param_name
|
||||
unless opts[api_param].respond_to?(:each)
|
||||
opts[api_param] = [opts[api_param]] * @cards.size
|
||||
end
|
||||
end
|
||||
end
|
||||
Squib.logger.debug {"After expand_singletons: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :expand_singletons
|
||||
|
||||
# Layouts have to come before, so we repeat expand_singletons here
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def layoutify(opts)
|
||||
unless opts[:layout].respond_to?(:each)
|
||||
opts[:layout] = [opts[:layout]] * @cards.size
|
||||
end
|
||||
opts[:layout].each_with_index do |layout, i|
|
||||
unless layout.nil?
|
||||
entry = @layout[layout.to_s]
|
||||
unless entry.nil?
|
||||
entry.each do |key, value|
|
||||
opts[key.to_sym] = [] if opts[key.to_sym].nil?
|
||||
opts[key.to_sym][i] ||= entry[key] #don't override if it's already there
|
||||
end
|
||||
else
|
||||
Squib.logger.warn ("Layout entry '#{layout}' does not exist." )
|
||||
end
|
||||
end
|
||||
end
|
||||
Squib.logger.debug {"After layoutify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :layoutify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def formatify(opts)
|
||||
opts[:format] = [opts[:format]].flatten
|
||||
opts
|
||||
end
|
||||
module_function :formatify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def rangeify (opts)
|
||||
range = opts[:range]
|
||||
raise 'Range cannot be nil' if range.nil?
|
||||
range = 0..(@cards.size-1) if range == :all
|
||||
range = range..range if range.is_a? Integer
|
||||
if range.max > (@cards.size-1)
|
||||
raise ArgumentError.new("#{range} is outside of deck range of 0..#{@cards.size-1}")
|
||||
end
|
||||
opts[:range] = range
|
||||
Squib.logger.debug {"After rangeify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :rangeify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def fileify(opts, file_must_exist=true)
|
||||
[opts[:file]].flatten.each do |file|
|
||||
if file_must_exist and !File.exists?(file)
|
||||
raise "File #{File.expand_path(file)} does not exist!"
|
||||
end
|
||||
end
|
||||
opts
|
||||
end
|
||||
module_function :fileify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def dirify(opts, key, allow_create=false)
|
||||
return opts if Dir.exists?(opts[key])
|
||||
if allow_create
|
||||
Squib.logger.warn("Dir '#{opts[key]}' does not exist, creating it.")
|
||||
Dir.mkdir opts[key]
|
||||
return opts
|
||||
else
|
||||
raise "'#{opts[key]}' does not exist!"
|
||||
end
|
||||
end
|
||||
module_function :dirify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def colorify(opts, nillable=false, key=:color)
|
||||
opts[key].each_with_index do |color, i|
|
||||
unless nillable && color.nil?
|
||||
if custom_colors.key? color.to_s
|
||||
color = custom_colors[color.to_s]
|
||||
end
|
||||
opts[key][i] = color
|
||||
end
|
||||
end
|
||||
Squib.logger.debug {"After colorify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :colorify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def fontify (opts)
|
||||
opts[:font].each_with_index do |font, i|
|
||||
opts[:font][i] = @font if font==:use_set
|
||||
opts[:font][i] = Squib::SYSTEM_DEFAULTS[:default_font] if font == :default
|
||||
end
|
||||
Squib.logger.debug {"After fontify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :fontify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def radiusify(opts)
|
||||
opts[:radius].each_with_index do |radius, i|
|
||||
unless radius.nil?
|
||||
opts[:x_radius][i] = radius
|
||||
opts[:y_radius][i] = radius
|
||||
end
|
||||
end
|
||||
Squib.logger.debug {"After radiusify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :radiusify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def svgidify(opts)
|
||||
opts[:id].each_with_index do |id, i|
|
||||
unless id.nil?
|
||||
opts[:id][i] = '#' << id unless id.start_with? '#'
|
||||
end
|
||||
end
|
||||
Squib.logger.debug {"After svgidify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :svgidify
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def rotateify(opts)
|
||||
case opts[:rotate]
|
||||
when true, :clockwise
|
||||
opts[:angle] = 0.5 * Math::PI
|
||||
when :counterclockwise
|
||||
opts[:angle] = 1.5 * Math::PI
|
||||
end
|
||||
Squib.logger.debug {"After rotateify: #{opts}"}
|
||||
opts
|
||||
end
|
||||
module_function :rotateify
|
||||
|
||||
# Convert units
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def convert_units(opts, needed_params)
|
||||
UNIT_CONVERSION_PARAMS.each_pair do |param_name, api_param|
|
||||
if needed_params.include? param_name
|
||||
if EXPANDING_PARAMS.include? param_name
|
||||
opts[api_param].each_with_index do |arg, i|
|
||||
opts[api_param][i] = Args::UnitConversion.parse(arg, @dpi)
|
||||
end
|
||||
else #not an expanding param
|
||||
opts[api_param] = Args::UnitConversion.parse(opts[api_param], @dpi)
|
||||
end
|
||||
end
|
||||
end
|
||||
Squib.logger.debug {"After convert_units: #{opts}"}
|
||||
return opts
|
||||
end
|
||||
module_function :convert_units
|
||||
|
||||
# Handles expanding rows. If the "rows" does not respond to to_i (e.g. :infinite),
|
||||
# then compute what we need based on number of cards and number of columns.
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def rowify(opts)
|
||||
unless opts[:rows].respond_to? :to_i
|
||||
raise "Columns must be an integer" unless opts[:columns].respond_to? :to_i
|
||||
if @cards.size < opts[:columns].to_i
|
||||
opts[:rows] = 1
|
||||
else
|
||||
opts[:rows] = (@cards.size / opts[:columns].to_i).ceil
|
||||
end
|
||||
end
|
||||
opts
|
||||
end
|
||||
|
||||
# Used for showcase - face right if it's :right
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def faceify(opts)
|
||||
opts[:face] = (opts[:face].to_s.downcase == 'right')
|
||||
opts
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user