# Copyright (C) 2018 Avatao.com Innovative Learning Kft. # All Rights Reserved. See LICENSE file for details. from .fsm_base import FSMBase class LinearFSM(FSMBase): # pylint: disable=anomalous-backslash-in-string """ This is a state machine for challenges with linear progression, consisting of a number of steps specified in the constructor. It automatically sets up 2 actions (triggers) between states as such: (0) -- step_1 --> (1) -- step_2 --> (2) -- step_3 --> (3) ... and so on """ def __init__(self, number_of_steps): self.states = list(map(str, range(number_of_steps))) self.transitions = [] for index in self.states[:-1]: self.transitions.append({ 'trigger': f'step_{int(index)+1}', 'source': index, 'dest': str(int(index)+1) }) self.transitions.append({ 'trigger': 'step_next', 'source': index, 'dest': str(int(index)+1) }) super(LinearFSM, self).__init__()