Enums
Enums Operations
Imported from the upstream Vibescript examples at enums/operations.vibe and runnable in the browser today.
Source
enums/operations.vibe
# Enum basics
enum Status
Draft
Published
Archived
end
enum ReviewState
Draft
Approved
end
def member_name() -> string
Status::Draft.name
end
def publish_name(status: Status) -> string
status.name
end
def block_names(values) -> array
values.map do |status: Status|
status.name
end
end
def facts() -> hash
draft = Status::Draft
{
same: draft == Status::Draft,
symbol_same: draft == :draft,
cross_enum_same: draft == ReviewState::Draft,
name: draft.name,
symbol: draft.symbol,
render: "status={{value}}".template({ value: draft }),
payload: JSON.stringify({ status: draft })
}
end
def run
{
member_name: member_name(),
published_name: publish_name(:published),
names: block_names([:draft, Status::Published]),
facts: facts()
}
end
Output
Press run to execute run from this example.