Class: AnyVali::NumberSchema

Inherits:
Schema
  • Object
show all
Defined in:
lib/anyvali/schemas/number_schema.rb

Direct Known Subclasses

IntSchema

Constant Summary collapse

FLOAT_KINDS =
%w[number float32 float64].freeze
INT_KINDS =
%w[int int8 int16 int32 int64 uint8 uint16 uint32 uint64].freeze
INT_RANGES =
{
  "int8"   => [-128, 127],
  "int16"  => [-32_768, 32_767],
  "int32"  => [-2_147_483_648, 2_147_483_647],
  "int64"  => [-9_223_372_036_854_775_808, 9_223_372_036_854_775_807],
  "uint8"  => [0, 255],
  "uint16" => [0, 65_535],
  "uint32" => [0, 4_294_967_295],
  "uint64" => [0, 18_446_744_073_709_551_615],
  "int"    => [-9_223_372_036_854_775_808, 9_223_372_036_854_775_807]
}.freeze
FLOAT32_MAX =
3.4028235e+38

Constants inherited from Schema

Schema::RESERVED_METADATA_KEYS

Instance Attribute Summary

Attributes inherited from Schema

#coerce_config, #constraints, #custom_validators, #default_value, #has_default, #kind, #metadata

Instance Method Summary collapse

Methods inherited from Schema

#coerce, #default, #describe, #export, #parse, #portable?, #refine, #safe_parse, #to_node, type_name, #with_metadata

Constructor Details

#initialize(kind: "number", constraints: {}, **kwargs) ⇒ NumberSchema

Returns a new instance of NumberSchema.



22
23
24
# File 'lib/anyvali/schemas/number_schema.rb', line 22

def initialize(kind: "number", constraints: {}, **kwargs)
  super(kind: kind, constraints: constraints, **kwargs)
end

Instance Method Details

#exclusive_max(n) ⇒ Object



38
39
40
# File 'lib/anyvali/schemas/number_schema.rb', line 38

def exclusive_max(n)
  dup_with(constraints: @constraints.merge("exclusiveMax" => n))
end

#exclusive_min(n) ⇒ Object



34
35
36
# File 'lib/anyvali/schemas/number_schema.rb', line 34

def exclusive_min(n)
  dup_with(constraints: @constraints.merge("exclusiveMin" => n))
end

#max(n) ⇒ Object



30
31
32
# File 'lib/anyvali/schemas/number_schema.rb', line 30

def max(n)
  dup_with(constraints: @constraints.merge("max" => n))
end

#min(n) ⇒ Object



26
27
28
# File 'lib/anyvali/schemas/number_schema.rb', line 26

def min(n)
  dup_with(constraints: @constraints.merge("min" => n))
end

#multiple_of(n) ⇒ Object



42
43
44
# File 'lib/anyvali/schemas/number_schema.rb', line 42

def multiple_of(n)
  dup_with(constraints: @constraints.merge("multipleOf" => n))
end