Type::Tiny::Enum

string enum type constraints

Status

This module is covered by the Type-Tiny stability policy.

Description

Enum type constraints.

This package inherits from Type::Tiny; see that for most documentation. Major differences are listed below:

Attributes

values

Arrayref of allowable value strings. Non-string values (e.g. objects with overloading) will be stringified in the constructor.

constraint

Unlike Type::Tiny, you cannot pass a constraint coderef to the constructor. Instead rely on the default.

inlined

Unlike Type::Tiny, you cannot pass an inlining coderef to the constructor. Instead rely on the default.

parent

Parent is always Types::Standard::Str, and cannot be passed to the constructor.

unique_values

The list of values but sorted and with duplicates removed. This cannot be passed to the constructor.

Methods

as_regexp

Returns the enum as a regexp which strings can be checked against. If you're checking a lot of strings, then using this regexp might be faster than checking each string against

  my $enum  = Type::Tiny::Enum->new(...);
  my $check = $enum->compiled_check;
  my $re    = $enum->as_regexp;
  
  # fast
  my @valid_tokens = grep $enum->check($_), @all_tokens;
  
  # faster
  my @valid_tokens = grep $check->($_), @all_tokens;
  
  # fastest
  my @valid_tokens = grep /$re/, @all_tokens;

You can get a case-insensitive regexp using $enum->as_regexp('i').

Overloading

  • Arrayrefification calls values.

Bugs

Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Type-Tiny.

See Also

Type::Tiny::Manual.

Type::Tiny.

Moose::Meta::TypeConstraint::Enum.

Manual
The best place to start learning about this module is the manual.