. */ //require 'Yay/StatePredicate.php'; //require 'Yay/States.php'; /** * An expectation about what State a state machine is in. * @author Chris Corbyn * @package Yay */ class Yay_SimpleStatePredicate implements Yay_StatePredicate { /** * The state machine which this predicate checks. * @var Yay_States * @access private */ protected $_stateMachine; /** * The state name to check for in the state machine. * @var string * @access private */ protected $_stateName; /** * True if the state is wanted, false otherwise. * @var boolean * @access private */ private $_is = true; /** * Create a new StatePredicate. * @param Yay_States $stateMachine * @param string $stateName to expect * @param boolean $is (negation point) */ public function __construct(Yay_States $stateMachine, $stateName, $is = true) { $this->_stateMachine = $stateMachine; $this->_stateName = $stateName; $this->_is = $is; } /** * Return true if the state machine is in this state. * @return boolean */ public function isActive() { return (($this->_is && $this->_stateMachine->getCurrentState() == $this->_stateName) || (!$this->_is && $this->_stateMachine->getCurrentState() != $this->_stateName)); } /** * Write a description of this self describing object to Description. * @param Yay_Description $description */ public function describeTo(Yay_Description $description) { $this->_stateMachine->describeTo($description); $description->appendText(sprintf( ' %s %s;', ($this->_is ? 'is' : 'is not'), $this->_stateName )); } }