Smalltalk Programming/Overview

      removeEventsTriggeredFor: anObject inState: aState
              "Remove all the events triggered by the receiver which would have
              been sent to anObject in the given state."
      
              | events |
              events := transitions at: aState ifAbsent: [ ^self ].
              events copy keysAndValuesDo:
                      [:evtSym :msgSendSet |
                      | newSet |
                      newSet := msgSendSet reject: [:each | each receiver == anObject
                              and: [ (anObject == self and: [ each selector == #newState: ]) not ] ].
                      msgSendSet size = newSet size ifFalse:
                              [newSet isEmpty
                                      ifTrue: [ events removeKey: evtSym]
                                      ifFalse: [ events at: evtSym put: newSet]]].
      

      Claim: Lots of indentions is a sign that code needs to be refactored. CPS

      Last modified on 3 June 2009, at 03:58