Module: Plushie::Type::Padding
- Defined in:
- lib/plushie/type/padding.rb
Overview
Padding specification with per-side values.
Accepts a uniform number, [vertical, horizontal], [top, right, bottom, left], a Hash with :top/:right/:bottom/:left keys, or a Padding struct.
Defined Under Namespace
Classes: Pad
Constant Summary collapse
- FIELD_KEYS =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Recognized field keys for padding specs.
%i[top right bottom left].freeze
Class Method Summary collapse
-
.cast(value) ⇒ Hash
Normalise any padding input to a canonical four-side hash.
-
.encode(value) ⇒ Numeric, Hash
Encode a padding value for the wire protocol.
-
.from_opts(opts) ⇒ Pad
Construct a Padding struct from keyword options.
Class Method Details
.cast(value) ⇒ Hash
Normalise any padding input to a canonical four-side hash.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/plushie/type/padding.rb', line 59 def cast(value) case value when Numeric {top: value, right: value, bottom: value, left: value} when Array case value.length when 2 then {top: value[0], right: value[1], bottom: value[0], left: value[1]} when 4 then {top: value[0], right: value[1], bottom: value[2], left: value[3]} else raise ArgumentError, "padding array must have 2 or 4 elements, got #{value.length}" end when Pad value.to_wire when Hash value.slice(:top, :right, :bottom, :left).compact else raise ArgumentError, "invalid padding: #{value.inspect}" end end |
.encode(value) ⇒ Numeric, Hash
Encode a padding value for the wire protocol.
82 83 84 85 86 87 88 |
# File 'lib/plushie/type/padding.rb', line 82 def encode(value) case value when Numeric then value when Pad then cast(value) else cast(value) end end |
.from_opts(opts) ⇒ Pad
Construct a Padding struct from keyword options.
49 50 51 52 53 |
# File 'lib/plushie/type/padding.rb', line 49 def from_opts(opts) unknown = opts.keys - FIELD_KEYS raise ArgumentError, "unknown padding fields: #{unknown.inspect}. Valid: #{FIELD_KEYS.inspect}" if unknown.any? Pad.new(**opts.slice(*FIELD_KEYS)) end |