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