module Dry::Types::Composition
def self.included(base)
def self.included(base) composition_name = Inflector.demodulize(base) ast_type = Inflector.underscore(composition_name).to_sym base.define_singleton_method(:ast_type) { ast_type } base.define_singleton_method(:composition_name) { composition_name } base.const_set("Constrained", ::Class.new(base) { include Constrained }) end
def call_safe(input, &) = raise ::NotImplementedError
- Api: - private
Returns:
-
(Object)-
Parameters:
-
input(Object) --
def call_safe(input, &) = raise ::NotImplementedError
def call_unsafe(input) = raise ::NotImplementedError
- Api: - private
Returns:
-
(Object)-
Parameters:
-
input(Object) --
def call_unsafe(input) = raise ::NotImplementedError
def constrained? = false
- Api: - public
Returns:
-
(false)-
def constrained? = false
def default? = false
- Api: - public
Returns:
-
(false)-
def default? = false
def failure(input, _error = nil)
- Api: - private
def failure(input, _error = nil) result = try(input) if result.failure? result else raise ::ArgumentError, "Invalid failure value '#{input}' for #{inspect}" end end
def initialize(left, right, **options)
- Api: - private
Parameters:
-
options(Hash) -- -
right(Type) -- -
left(Type) --
def initialize(left, right, **options) super @left, @right = left, right freeze end
def name = "#{left.name} #{self.class.operator} #{right.name}"
- Api: - public
Returns:
-
(String)-
def name = "#{left.name} #{self.class.operator} #{right.name}"
def optional? = false
- Api: - public
Returns:
-
(Boolean)-
def optional? = false
def primitive?(value) = raise ::NotImplementedError
- Api: - private
Returns:
-
(Boolean)-
Parameters:
-
value(Object) --
def primitive?(value) = raise ::NotImplementedError
def success(input)
- Api: - private
def success(input) result = try(input) if result.success? result else raise ::ArgumentError, "Invalid success value '#{input}' for #{inspect}" end end
def to_ast(meta: true)
- Api: - public
Other tags:
- See: Nominal#to_ast -
def to_ast(meta: true) [self.class.ast_type, [left.to_ast(meta: meta), right.to_ast(meta: meta), meta ? self.meta : EMPTY_HASH]] end
def to_proc = proc { |value| self.(value) }
- Api: - public
Returns:
-
(Proc)-
def to_proc = proc { |value| self.(value) }
def try(input, &) = raise ::NotImplementedError
- Api: - public
Parameters:
-
input(Object) --
def try(input, &) = raise ::NotImplementedError