fsm-js

0.1.0 • Public • Published

Fsm-js

Fsm-js is a module to create and manipulate finite state machines. The module behaviour-js is required to manipulate fsm-js module. The documentation is located in the folder fsm-js_doc.

Installation

Package

Via npm:

$ npm install fsm-js

Getting started

// Add module for OneShotBehaviour
const OneShotBehaviour = require('behaviour-js').OneShotBehaviour;

// Add module for FSM
const FSM = require('fsm-js');

// To create another variables for this exemple
let message = "";
let count = 0;

// To create class "Behaviour1" inherits from OneShotBehaviour
class Behaviour1 extends OneShotBehaviour{

    action(){
        message += "Hello";
    }

    onEnd(){
        return "t1";
    }
}

// To create class "Behaviour2" inherits from OneShotBehaviour
class Behaviour2 extends OneShotBehaviour{

    action(){
        message += " ";
    }

    onEnd(){
        return "t2";
    }
}

// To create class "Behaviour3" inherits from OneShotBehaviour
class Behaviour3 extends OneShotBehaviour{

    action(){
        message += "world";
    }

    onEnd(){
        return "t3";
    }
}

// To create class "Behaviour4" inherits from OneShotBehaviour
class Behaviour4 extends OneShotBehaviour{

    action(){
        message += "!";
    }

    onEnd(){
        if(count < 3){
            count++;
            return "t4";
        }
        return "t5";
    }

}


// To create class "Behaviour5" inherits from OneShotBehaviour
class Behaviour5 extends OneShotBehaviour{

    action(){
        console.log(message);
    }
}

// To create a new FSM
let fsm = new FSM();

// To register all states
fsm.registerFirstState(new Behaviour1(), "b1");
fsm.registerState(new Behaviour2(), "b2");
fsm.registerState(new Behaviour3(), "b3");
fsm.registerState(new Behaviour4(), "b4");
fsm.registerLastState(new Behaviour5(), "b5");

// To register all transitions
fsm.registerTransition("b1", "b2", "t1");
fsm.registerTransition("b2", "b3", "t2");
fsm.registerTransition("b3", "b4", "t3");
fsm.registerTransition("b4", "b4", "t4");
fsm.registerTransition("b4", "b5", "t5");

// To execute the FSM
fsm.run();

Author

If you have any questions or suggestions, please don't hesitate to contact me : belaich.david@outlook.fr .

Package Sidebar

Install

npm i fsm-js

Weekly Downloads

1

Version

0.1.0

License

MIT

Unpacked Size

1.04 MB

Total Files

34

Last publish

Collaborators

  • dbelaich