The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Venus::Enum - Enum Class

ABSTRACT

Enum Class for Perl 5

SYNOPSIS

package main;

use Venus::Enum;

my $enum = Venus::Enum->new(['n', 's', 'e', 'w']);

# my $north = $enum->get('n');

# "n"

DESCRIPTION

This package provides an interface for working with enumerations.

INHERITS

This package inherits behaviors from:

Venus::Sealed

METHODS

This package provides the following methods:

get

get(string $name) (Venus::Enum)

The get method returns a new object representing the enum member specified.

Since 3.55

get example 1
# given: synopsis

package main;

my $get = $enum->get('n');

# bless(..., "Venus::Enum")

# $get->value

# "n"
get example 2
# given: synopsis

package main;

my $get = $enum->get('s');

# bless(..., "Venus::Enum")

# $get->value

# "s"

has

has(string $name) (boolean)

The has method returns true if the member name or value exists in the enum, otherwise returns false.

Since 3.55

has example 1
# given: synopsis

package main;

my $has = $enum->has('n');

# true
has example 2
# given: synopsis

package main;

my $has = $enum->has('z');

# false

is

is(string $name) (boolean)

The is method returns true if the member name or value specified matches the member selected in the enum, otherwise returns false.

Since 3.55

is example 1
# given: synopsis

package main;

my $is = $enum->get('n')->is('n');

# true
is example 2
# given: synopsis

package main;

my $is = $enum->get('s')->is('n');

# false

items

items() (tuple[string, string])

The items method returns an arrayref of arrayrefs containing the name and value pairs for the enumerations. Returns a list in list context.

Since 3.55

items example 1
# given: synopsis

package main;

my $items = $enum->items;

# [["e", "e"], ["n", "n"], ["s", "s"], ["w", "w"]]
items example 2
# given: synopsis

package main;

my @items = $enum->items;

# (["e", "e"], ["n", "n"], ["s", "s"], ["w", "w"])

list

list() (within[arrayref, string])

The list method returns an arrayref containing the values for the enumerations. Returns a list in list context.

Since 3.55

list example 1
# given: synopsis

package main;

my $list = $enum->list;

# ["e", "n", "s", "w"]
list example 2
# given: synopsis

package main;

my @list = $enum->list;

# ("e", "n", "s", "w")

name

name() (maybe[string])

The name method returns the name of the member selected or returns undefined.

Since 3.55

name example 1
# given: synopsis

package main;

my $name = $enum->name;

# undef
name example 2
# given: synopsis

package main;

my $n = $enum->get('n');

my $name = $n->name;

# "n"

names

names() (within[arrayref, string])

The names method returns an arrayref containing the names for the enumerations. Returns a list in list context.

Since 3.55

names example 1
# given: synopsis

package main;

my $names = $enum->names;

# ["e", "n", "s", "w"]
names example 2
# given: synopsis

package main;

my @names = $enum->names;

# ("e", "n", "s", "w")

value

value() (maybe[string])

The value method returns the value of the member selected or returns undefined.

Since 3.55

value example 1
# given: synopsis

package main;

my $value = $enum->value;

# undef
value example 2
# given: synopsis

package main;

my $n = $enum->get('n');

my $value = $n->value;

# "n"

values

values() (within[arrayref, string])

The values method returns an arrayref containing the values for the enumerations. Returns a list in list context.

Since 3.55

values example 1
# given: synopsis

package main;

my $values = $enum->values;

# ["e", "n", "s", "w"]
values example 2
# given: synopsis

package main;

my @values = $enum->values;

# ("e", "n", "s", "w")

OPERATORS

This package overloads the following operators:

operation: ("")

This package overloads the "" operator.

example 1

# given: synopsis;

my $result = "$enum";

# ""

example 2

# given: synopsis;

my $n = $enum->get("n");

my $result = "$n";

# "n"
operation: (eq)

This package overloads the eq operator.

example 1

# given: synopsis;

my $result = $enum eq "";

# 1

example 2

# given: synopsis;

my $s = $enum->get("s");

my $result = $s eq "s";

# 1
operation: (ne)

This package overloads the ne operator.

example 1

# given: synopsis;

my $result = $enum ne "";

# 0

example 2

# given: synopsis;

my $n = $enum->get("n");

my $result = $n ne "";

# 1
operation: (qr)

This package overloads the qr operator.

example 1

# given: synopsis;

my $n = $enum->get('n');

my $test = 'north' =~ qr/$n/;

# 1

AUTHORS

Awncorp, awncorp@cpan.org

LICENSE

Copyright (C) 2022, Awncorp, awncorp@cpan.org.

This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.