/** * Parses the state. * * @param DomElement $state * @return array */ function _parseState($state) { $parsedState = array(); $parsedTransitions = array(); $transitions = $state->get_elements_by_tagname('transition'); for ($i = 0, $count = count($transitions); $i < $count; ++$i) { $parsedTransition = array(); if ($transitions[$i]->has_attribute('event')) { $parsedTransition['event'] = $transitions[$i]->get_attribute('event'); } if ($transitions[$i]->has_attribute('nextState')) { $parsedTransition['nextState'] = $transitions[$i]->get_attribute('nextState'); } $action = $transitions[$i]->get_elements_by_tagname('action'); if (count($action)) { $parsedTransition['action'] = $this->_parseAction($action[0]); } $guard = $transitions[$i]->get_elements_by_tagname('guard'); if (count($guard)) { $parsedTransition['guard'] = $this->_parseAction($guard[0]); } $parsedTransitions[] = $parsedTransition; } if (count($parsedTransitions)) { $parsedState['transition'] = $parsedTransitions; } $entry = $state->get_elements_by_tagname('entry'); if (count($entry)) { $parsedState['entry'] = $this->_parseAction($entry[0]); } $exit = $state->get_elements_by_tagname('exit'); if (count($exit)) { $parsedState['exit'] = $this->_parseAction($exit[0]); } $activity = $state->get_elements_by_tagname('activity'); if (count($activity)) { $parsedState['activity'] = $this->_parseAction($activity[0]); } return $parsedState; }