Enums

Enums Operations

Imported from the upstream Vibescript examples at enums/operations.vibe and runnable in the browser today.

Reference View source
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.
upstream enums browser-runner