class Bake::Type::Any


“‘
type = Bake::Type::Any(Bake::Type::String, Bake::Type::Integer)
“`ruby
An ordered list of types. The first type to match the input is used.

def self.parse(value)

As a class type, accepts any value.
def self.parse(value)
	value
end

def composite?

@returns [Boolean] true if any of the listed types is `composite?`.
Whether any of the listed types is a composite type.
def composite?
	@types.any?{|type| type.composite?}
end

def initialize(types)

@parameter types [Array] the array of types.
Initialize the instance with an array of types.
def initialize(types)
	@types = types
end

def parse(input)

@parameter input [String] the input to parse, e.g. `"5"`.
Parse an input string, trying the listed types in order, returning the first one which doesn't raise an exception.
def parse(input)
	@types.each do |type|
		return type.parse(input)
	rescue
		# Ignore.
	end
end

def to_s

Generate a readable string representation of the listed types.
def to_s
	"any of #{@types.join(', ')}"
end

def | other

@parameter other [Type] the type instance to append.
Create a copy of the current instance with the other type appended.
def | other
	self.class.new([*@types, other])
end