BakeSourceBakeTypesAny

class Any

An ordered list of types. The first type to match the input is used.

type = Bake::Types::Any(Bake::Types::String, Bake::Types::Integer)

Definitions

def initialize(types)

Initialize the instance with an array of types.

Signature

parameter types Array

the array of types.

Implementation

def initialize(types)
	@types = types
end

def | other

Create a copy of the current instance with the other type appended.

Signature

parameter other Type

the type instance to append.

Implementation

def | other
	self.class.new([*@types, other])
end

def composite?

Whether any of the listed types is a composite type.

Signature

returns Boolean

true if any of the listed types is composite?.

Implementation

def composite?
	@types.any?{|type| type.composite?}
end

def parse(input)

Parse an input string, trying the listed types in order, returning the first one which doesn't raise an exception.

Signature

parameter input String

the input to parse, e.g. "5".

Implementation

def parse(input)
	@types.each do |type|
		return type.parse(input)
	rescue
		# Ignore.
	end
end

def self.parse(value)

As a class type, accepts any value.

Implementation

def self.parse(value)
	value
end

def to_s

Generate a readable string representation of the listed types.

Implementation

def to_s
	"any of #{@types.join(', ')}"
end