Skip to content

kossyak/csmjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

csm

Context State Machine

https://cdn.jsdelivr.net/gh/kossyak/csmjs@latest/csm.min.js

Example:

const project = {
  name: 'switcer',
  context: ['off'],
  actions: {
    on: {
      toggle: 'off'
    },
    off: {
      toggle: 'on'
    }
  }
}
import csm from './csm.js'
csm.create(project)

Контекстная машина состояний (CSM) основана на принципе конечных автоматов. В отличии от автоматов Мура и Мили, в CSM изменение состояния автоматов зависит от общего контекста. Контекст - это набор уникальных ключей, на котрые ариентируются все автоматы. Включение и выключения каждого автомата зависит от установленного правила изменения котекста. Автомат может быть включен или выключен, в зависимости от того какие ключи присутствуют или отсутствуют в контексте.

CSM позволяет значительно упростить создание сложных алгоритмов, избавиться от многочисленных условий в коде, улучшить контроль и надежность работы вашего приложения.

Параметры автоматов

Автоматы (action) могут использовать параметры, которые описывают правила изменения состояния самого автомата и общего контекста.

actions

Создание уровней вложенности. Дочернии action могут вбыть включены, только если включен родительский action.

contains

Активирует action, только если все заданные ключи присутствуют в контексте.

toggle

Активирует состояние, только если все ключи присутствуют в контексте. После активации удаляет эти ключи из контекста.

excludes

Запрещает активацию action, если хотя бы один ключей есть в контексте.

add

Добавляет ключи в контест.

remove

Удаляет ключи из контекста.

set

Устанавливает новый контекст, заменяя старый.

to

Переводит на указанный уровень вложенности.

do

Включение автомата

Параметры могут содержать один или несколько ключей. Если ключей несколько, то они должны передаваться в виде массива строк, если только один, то в виде строки. Ключи соответсвуют именам action.

Ключ добавляется в контекст, только если он не был добавлен ранее. Таким образом в контексте не может быть двух повторяющихся ключей.

Методы

init

destroy

do

on

off

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors