Sha256: 36182e0939eedf3c315af74e0195a31f8b5e16f6966b4781561e1c3cba13b98b
Contents?: true
Size: 1.15 KB
Versions: 1
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true module Vedeu module Coercers # Provides the mechanism to convert a value into a # {Vedeu::Geometries::Position}. # # @api private # class Position < Vedeu::Coercers::Coercer # @macro raise_fatal # @return [NilClass|Vedeu::Geometries::Position] def coerce if value.nil? || coerced? value elsif tuple? klass.new(*value) elsif hash? klass.new(value.fetch(:y, 1), value.fetch(:x, 1)) elsif numeric?(value) klass.new(value, 1) else incoercible! end end private # @return [Boolean] def hash? value.is_a?(Hash) end # @return [Class] def klass Vedeu::Geometries::Position end # @macro raise_fatal # @return [Boolean] def tuple? return false unless value.is_a?(Array) return true if value.size == 2 raise Vedeu::Error::Fatal, "A '#{klass}' is made up of two elements. (Provided " \ "#{value.size}.)" end end # Position end # Coercers end # Vedeu
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.8.13 | lib/vedeu/coercers/position.rb |