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) могут использовать параметры, которые описывают правила изменения состояния самого автомата и общего контекста.
Создание уровней вложенности. Дочернии action могут вбыть включены, только если включен родительский action.
Активирует action, только если все заданные ключи присутствуют в контексте.
Активирует состояние, только если все ключи присутствуют в контексте. После активации удаляет эти ключи из контекста.
Запрещает активацию action, если хотя бы один ключей есть в контексте.
Добавляет ключи в контест.
Удаляет ключи из контекста.
Устанавливает новый контекст, заменяя старый.
Переводит на указанный уровень вложенности.
Включение автомата
Параметры могут содержать один или несколько ключей. Если ключей несколько, то они должны передаваться в виде массива строк, если только один, то в виде строки. Ключи соответсвуют именам action.
Ключ добавляется в контекст, только если он не был добавлен ранее. Таким образом в контексте не может быть двух повторяющихся ключей.