NAME

Data::FSM::Transition - Data object for Finite Transition Machine transition.

SYNOPSIS

use Data::FSM::Transition;

my $obj = Data::FSM::Transition->new(%params);
my $callback = $obj->callback;
my $from = $obj->from;
my $id = $obj->id;
my $name = $obj->name;
my $to = $obj->to;

METHODS

new

my $obj = Data::FSM::Transition->new(%params);

Constructor.

  • callback

    Transition callback.

    It's optional.

    Default value is undef.

  • from

    Data::FSM::State state object.

    It's required.

    Default value is undef.

  • id

    FSM state id. The id is positive natural number.

    It's optional.

    Default value is undef.

  • name

    FSM state name. The length of name is 100 characters.

    Default value is undef.

  • to

    Data::FSM::State state object.

    It's required.

    Default value is undef.

Returns instance of object.

callback

my $callback = $obj->callback;

Get transition callback.

Returns reference to code.

from

my $from = $obj->from;

Get state object from which transition starts.

Returns Data::FSM::State instance.

id

my $id = $obj->id;

Get FSM state id.

Returns positive natural number.

initial

my $initial = $obj->initial;

Get inital flag..

Returns boolean (0/1).

name

my $name = $obj->name;

Get FSM state name.

Returns string.

to

my $to = $obj->to;

Get state object from which transition ends.

Returns Data::FSM::State instance.

ERRORS

new():
        From Mo::Utils::check_code():
                Parameter '%s' must be a code.
                        Value: %s

        From Mo::utils::check_code():
                Parameter '%s' must be a '%s' object.
                        Value: %s
                        Reference: %s

        From Mo::Utils::check_length():
                Parameter 'name' has length greater than '100'.
                        Value: %s

        From Mo::utils::check_required():
                Parameter '%s' is required.

        From Mo::utils::Number::check_positive_natural():
                Parameter 'id' must be a positive natural number.
                        Value: %s

EXAMPLE

use strict;
use warnings;

use Data::FSM::Transition;
use Data::FSM::State;

my $locked = Data::FSM::State->new(
        'name' => 'Locked',
);
my $unlocked = Data::FSM::State->new(
        'name' => 'Unlocked',
);
my $obj = Data::FSM::Transition->new(
        'callback' => sub {
                my $self = shift;
                print 'Id: '.$self->id."\n";
        },
        'from' => $locked,
        'id' => 7,
        'name' => 'Coin',
        'to' => $unlocked,
);

# Print out.
print 'Id: '.$obj->id."\n";
print 'From: '.$obj->from->name."\n";
print 'To: '.$obj->from->name."\n";
print 'Name: '.$obj->name."\n";

# Output:
# Id: 7
# From: Locked
# To: Locked
# Name: Coin

DEPENDENCIES

Mo, Mo::utils, Mo::utils::Number.

REPOSITORY

https://github.com/michal-josef-spacek/Data-FSM

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2025-2026 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.01