Acme-FSM

 view release on metacpan or  search on metacpan

Build.PL  view on Meta::CPAN

I<v5.10>, but that's not verified yet.

B<(v2.3.6>)
It's complicated now.

=item B<version>

I<v0.77>.
That's definetely contradicts B<perl>.
I haven't dug through F<Changes> yet,
can't say when The Core has switched to I<v0.77> though.

=item C<Carp>

Whatever comes with B<perl>, hopefully.

=item B<Module::Build>

Whatever comes with B<perl>.
Cut off version to be determined yet.

README  view on Meta::CPAN


    A::F doesn't need anything (even core modules).  However,

:   perl
        *v5.10*, but that's not verified yet.

        (v2.3.6) It's complicated now.

:   version
        *v0.77*.  That's definetely contradicts perl.  I haven't dug through
        Changes yet, can't say when The Core has switched to *v0.77* though.

:   ``Carp''
        Whatever comes with perl, hopefully.

:   Module::Build
        Whatever comes with perl.  Cut off version to be determined yet.


==== AVAILABILITY ====

lib/FSM.pm  view on Meta::CPAN

=over

=cut

=item B<verify()>

    $rc = $self->query_rc( @args );
    $rc = $self->verify( $rc, $state, $tag, $subject, $test );

Here comes rationale.
Writing (or should I say "composing"?) correct {fst} B<A::F> style is hard
(I know what I'm talking about, I've made a dozen already).
The purpose of B<verify()> is to check if the I<{fst}> at hands isn't fubar.
Nothing more, nothing less.
B<query_rc()> is a placeholder for one of B<query_.*()> methods,
I<$test> will be matched against C<ref $rc>.
Other arguments are to fill diagnostic output (if any).
I<$state> hints from what I<{state}> I<$rc> has been queried.
I<$subject> and I<$tag> are short descriptive name and actual value of I<$rc>.
Yup, dealing with B<verify()> might be fubar too.

lib/FSM.pm  view on Meta::CPAN


Returns C<HASH> for C<STOP> and C<BREAK> I<$state>s without any further
processing
(For those I<$state>s any I<$rule> is ignored and C<HASH> enables I<switch()>
callbacks to give more informative logs
(while that information is mangled anyway);
Probably bad idea).

=item *

C<undef> is returned if there's nothing to say --
neither I<tturn>, nor I<fturn>, nor turn map --
this record is kind of void.
The record should be studied to find out why.
B<carp>s in that case.

=back

=item query specific I<[turn]>

Two scalars are I<$state> and specially encoded I<$rule>

lib/FSM.pm  view on Meta::CPAN


=item B<turn()> and B<fst()>

B<(misdesign)>
Encoding (so to speak) in use by B<turn()> (in prediction mode) is plain
stupid.
C<undef> signals two distinct conditions
(granted, both are manifest of broken I<{fst}>).
Empty string doesn't distinguish safe (both C<tturn> and C<fturn> are present)
and risky (C<tturn> or C<fturn> is missing) I<{state}>.
C<HASH> doesn't say if there's anything in turn map.
All that needs loads of workout.

=back

=cut

=head1 DIAGNOSTICS

=over



( run in 0.938 second using v1.01-cache-2.11-cpan-b85c58fdc1d )