Module: Pinspec::Inputs::Boundary

Defined in:
lib/pinspec/inputs/boundary.rb

Constant Summary collapse

BY_TYPE =
{
  "Integer" => [0, 1, -1],
  "Float"   => [0.0, 1.0, -1.0],
  "Boolean" => [true, false],
  "String"  => ["", "pinspec"],
  "Symbol"  => nil,
  "Array"   => [[]],
  "Hash"    => [{}],
  "Proc"    => nil,
  "Date"    => [PINSPEC_EPOCH[0, 10]],
  "Time"    => [PINSPEC_EPOCH]
}.freeze
DECIMAL_HINTS =
%w[BigDecimal Decimal].freeze

Class Method Summary collapse

Class Method Details

.base_value(param, column: nil) ⇒ Object



31
32
33
34
35
36
# File 'lib/pinspec/inputs/boundary.rb', line 31

def base_value(param, column: nil)
  declared = default_value(param)
  return Tags.encode(declared) unless declared == :__none__

  encode(Array(edges_for(param, column)).first, param)
end

.omittable?(param) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/pinspec/inputs/boundary.rb', line 38

def omittable?(param)
  param.optional?
end

.values_for(param, column: nil, default_first: true) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/pinspec/inputs/boundary.rb', line 22

def values_for(param, column: nil, default_first: true)
  declared = default_value(param)
  edges    = edges_for(param, column)

  ordered = default_first ? [declared, *edges] : [*edges, declared]

  present(ordered).map { |value| encode(value, param) }.uniq
end