lib/squib/args/scale_box.rb in squib-0.15.3 vs lib/squib/args/scale_box.rb in squib-0.16.0.pre.preview1
- old
+ new
@@ -1,53 +1,57 @@
require_relative 'arg_loader'
+require_relative 'xywh_shorthands'
-module Squib
- # @api private
- module Args
+module Squib::Args
+ module_function def extract_scale_box(opts, deck)
+ ScaleBox.new.extract!(opts, deck)
+ end
- class ScaleBox
- include ArgLoader
+ class ScaleBox
+ include ArgLoader
+ include XYWHShorthands
- def initialize(deck)
- @deck = deck
- end
+ def self.parameters
+ {
+ x: 0, y: 0,
+ width: :native, height: :native
+ }
+ end
- def self.parameters
- { x: 0, y: 0,
- width: :native, height: :native
- }
- end
+ def self.expanding_parameters
+ parameters.keys # all of them
+ end
- def self.expanding_parameters
- parameters.keys # all of them
- end
+ def self.params_with_units
+ parameters.keys # all of them
+ end
- def self.params_with_units
- parameters.keys # all of them
- end
+ def validate_x(arg, i) apply_shorthands(arg, @deck, axis: :x) end
+ def validate_y(arg,_i) apply_shorthands(arg, @deck, axis: :y) end
- def validate_width(arg, i)
- return @deck.width if arg.to_s == 'deck'
- return :native if arg.to_s == 'native'
- return arg if arg.respond_to? :to_f
- if arg.to_s == 'scale'
- raise 'if width is :scale, height must be a number' unless height[i].respond_to? :to_f
- return arg
- end
- raise 'width must be a number, :scale, :native, or :deck'
+ def validate_width(arg, i)
+ return @deck.width if arg.to_s == 'deck'
+ return :native if arg.to_s == 'native'
+ arg = apply_shorthands(arg, @deck, axis: :x)
+ return arg if arg.respond_to? :to_f
+ if arg.to_s == 'scale'
+ raise 'if width is :scale, height must be a number' unless height[i].respond_to? :to_f
+ return arg
end
+ raise 'width must be a number, :scale, :native, or :deck'
+ end
- def validate_height(arg, i)
- return @deck.height if arg.to_s == 'deck'
- return :native if arg.to_s == 'native'
- return arg if arg.respond_to? :to_f
- if arg.to_s == 'scale'
- raise 'if height is \'scale\', width must be a number' unless width[i].respond_to? :to_f
- return arg
- end
- raise 'height must be a number, :scale, :native, or :deck'
+ def validate_height(arg, i)
+ return @deck.height if arg.to_s == 'deck'
+ return :native if arg.to_s == 'native'
+ arg = apply_shorthands(arg, @deck, axis: :y)
+ return arg if arg.respond_to? :to_f
+ if arg.to_s == 'scale'
+ raise 'if height is \'scale\', width must be a number' unless width[i].respond_to? :to_f
+ return arg
end
-
+ raise 'height must be a number, :scale, :native, or :deck'
end
end
+
end