Sha256: 8a91a5e53341a76546e8e7decb7e1973f57be94b985945f197f020d8ea4b9606
Contents?: true
Size: 1.2 KB
Versions: 3
Compression:
Stored size: 1.2 KB
Contents
require 'dry/core/constants' module Dry module Types module Builder include Dry::Core::Constants def constrained_type Constrained end def |(other) klass = constrained? && other.constrained? ? Sum::Constrained : Sum klass.new(self, other) end def optional Types['strict.nil'] | self end def constrained(options) constrained_type.new(self, rule: Types.Rule(options)) end def default(input = Undefined, &block) value = input == Undefined ? block : input if value.is_a?(Proc) || valid?(value) Default[value].new(self, value) else raise ConstraintError.new("default value #{value.inspect} violates constraints", value) end end def enum(*values) Enum.new(constrained(included_in: values), values: values) end def safe Safe.new(self) end def constructor(constructor = nil, **options, &block) Constructor.new(with(options), fn: constructor || block) end end end end require 'dry/types/default' require 'dry/types/constrained' require 'dry/types/enum' require 'dry/types/safe' require 'dry/types/sum'
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-types-0.9.2 | lib/dry/types/builder.rb |
dry-types-0.9.1 | lib/dry/types/builder.rb |
dry-types-0.9.0 | lib/dry/types/builder.rb |