123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- Smalltalk createPackage: 'Trapped-Backend'!
- (Smalltalk packageAt: 'Trapped-Backend') imports: {'axxord/Axxord'}!
- AxonInterest subclass: #InterestedInTrapPath
- instanceVariableNames: ''
- package: 'Trapped-Backend'!
- !InterestedInTrapPath methodsFor: 'testing'!
- accepts: anAspect
- ^anAspect size <= aspect size and: [anAspect = (aspect copyFrom: 1 to: anAspect size)]
- ! !
- AxonInterest subclass: #InterestedInTrapPathSubtree
- instanceVariableNames: ''
- package: 'Trapped-Backend'!
- !InterestedInTrapPathSubtree methodsFor: 'testing'!
- accepts: anAspect
- ^anAspect size <= aspect size
- ifTrue: [anAspect = (aspect copyFrom: 1 to: anAspect size)]
- ifFalse: [aspect = (anAspect copyFrom: 1 to: aspect size)]
- ! !
- Object subclass: #Isolator
- instanceVariableNames: 'root'
- package: 'Trapped-Backend'!
- !Isolator methodsFor: 'accessing'!
- root
- ^root
- !
- root: anObject
- root := anObject
- ! !
- !Isolator methodsFor: 'action'!
- model: anEavModel modify: aBlock
- | newValue |
- newValue := aBlock value: (anEavModel on: self).
- anEavModel on: self put: newValue deepCopy
- !
- model: anEavModel read: aBlock
- aBlock value: (anEavModel on: self) deepCopy
- ! !
- !Isolator class methodsFor: 'instance creation'!
- on: anObject
- ^self new root: anObject
- ! !
- Object subclass: #TrappedPosition
- instanceVariableNames: 'path model'
- package: 'Trapped-Backend'!
- !TrappedPosition methodsFor: 'accessing'!
- model
- ^model
- !
- path
- ^path
- !
- path: anArray model: aTrappedMW
- path := anArray.
- model := aTrappedMW
- ! !
- !TrappedPosition methodsFor: 'action'!
- modify: aBlock
- self model axes: self path transform: aBlock
- !
- read: aBlock
- self model axes: self path consume: aBlock
- !
- watch: aBlock
- self model registeredAxon addInterest: (self
- interestOn: self path
- block: [ self read: aBlock ])
- ! !
- !TrappedPosition methodsFor: 'private'!
- interestOn: anAspect block: aBlock
- (anAspect notEmpty and: [ anAspect last isNil ])
- ifTrue: [ ^ InterestedInTrapPathSubtree new aspect: anAspect allButLast block: aBlock ]
- ifFalse: [ ^ InterestedInTrapPath new aspect: anAspect block: aBlock ]
- ! !
|