Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc
lib/Tinky
t
xt
.gitignore
.travis.yml
LICENSE
META6.json
README.md
appveyor.yml

README.md

Configuration refinements

Build Status AppVeyor Build Status License

Synopsis

use Tinky::Hash;

class MyStateEngine is Tinky::Hash {

  submethod BUILD ( ) {

    self.from-hash(
      :config( {
          :states([< a z q>]),
          :transitions( {
              :az( { :from<a>, :to<z>}),
              :za( { :from<z>, :to<a>}),
              :zq( { :from<z>, :to<q>}),
              :qa( { :from<q>, :to<a>}),
            }
          ),
          :workflow( { :name<wf4>, :initial-state<a>}),
          :taps( {
              :states( { :q( { :enter<enter-q>})})
              :transitions( { :zq<tr-zq>}),
            }
          ),
        }
      )
    );
  }

  method tr-zq ( $object, Tinky::Transition $trans, Str :$transit ) {
    say "specific transition $transit '", $object.^name,
        "' '$trans.from.name()' ===>> '$trans.to.name()'";
    is $trans.from.name, 'z', "Comes from 'z'";
    is $trans.to.name, 'q', "Goes to 'q'";
  }

  method enter-q ( $object, Str :$state, EventType :$event) {
    say "state enter event: enter q in ", $object.^name;
    is $state, 'q', 'state is q';
    is $event, Enter, 'event is Enter';
  }
}

my MyStateEngine $th .= new;

$th.workflow('wf4');
say $th.state.name;             # 'a'
say $th.next-states>>.name;     # ('z',)

$th.go-state('z');
say $th.state.name;             # 'z'
say $th.next-states>>.name;     # (<a q>)

# specific transition zq 'MyStateEngine' 'z' ===>> 'q'
# state enter event: enter q in MyStateEngine

$th.go-state('q');


Documentation

Please look also at the Tinky documentation of Jonathon Stowe and his story at the perl6 advent calendar 18th december 2016 to understand the purpose of Tinky. After that it will be easy to grasp the use of this module.

Documentation about this class and other information at

Author

Marcel Timmerman: MARTIMM on github

You can’t perform that action at this time.