module Dry::Types::Composition
Attributes
left[R]
@return [Type]
right[R]
@return [Type]
Public Class Methods
included(base)
click to toggle source
# File lib/dry/types/composition.rb, line 33 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
new(left, right, **options)
click to toggle source
@param [Type] left @param [Type] right @param [Hash] options
@api private
Calls superclass method
Dry::Types::Meta::new
# File lib/dry/types/composition.rb, line 46 def initialize(left, right, **options) super @left, @right = left, right freeze end
Public Instance Methods
call_safe(input, &block)
click to toggle source
@param [Object] input
@return [Object]
@api private
# File lib/dry/types/composition.rb, line 94 def call_safe(input, &block) raise NotImplementedError end
call_unsafe(input)
click to toggle source
@param [Object] input
@return [Object]
@api private
# File lib/dry/types/composition.rb, line 85 def call_unsafe(input) raise NotImplementedError end
constrained?()
click to toggle source
@return [false]
@api public
# File lib/dry/types/composition.rb, line 69 def constrained? false end
default?()
click to toggle source
@return [false]
@api public
# File lib/dry/types/composition.rb, line 62 def default? false end
failure(input, _error = nil)
click to toggle source
@api private
# File lib/dry/types/composition.rb, line 116 def failure(input, _error = nil) result = try(input) if result.failure? result else raise ArgumentError, "Invalid failure value '#{input}' for #{inspect}" end end
name()
click to toggle source
@return [String]
@api public
# File lib/dry/types/composition.rb, line 55 def name [left, right].map(&:name).join(" #{self.class.operator} ") end
optional?()
click to toggle source
@return [Boolean]
@api public
# File lib/dry/types/composition.rb, line 76 def optional? false end
primitive?(value)
click to toggle source
@param [Object] value
@return [Boolean]
@api private
# File lib/dry/types/composition.rb, line 130 def primitive?(value) raise NotImplementedError end
success(input)
click to toggle source
@api private
# File lib/dry/types/composition.rb, line 106 def success(input) result = try(input) if result.success? result else raise ArgumentError, "Invalid success value '#{input}' for #{inspect}" end end
to_ast(meta: true)
click to toggle source
@see Nominal#to_ast
@api public
# File lib/dry/types/composition.rb, line 137 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
to_proc()
click to toggle source
Wrap the type with a proc
@return [Proc]
@api public
# File lib/dry/types/composition.rb, line 147 def to_proc proc { |value| self.(value) } end
try(input)
click to toggle source
@param [Object] input
@api public
# File lib/dry/types/composition.rb, line 101 def try(input) raise NotImplementedError end