MCPatch.st
author convert-repo
Tue, 28 May 2019 03:27:24 +0000
changeset 1097 180bdb478bc0
parent 664 99444b312701
child 1095 87f223484bc3
permissions -rw-r--r--
update tags

"{ Package: 'stx:goodies/monticello' }"

Object subclass:#MCPatch
	instanceVariableNames:'operations'
	classVariableNames:''
	poolDictionaries:''
	category:'SCM-Monticello-Patching'
!


!MCPatch class methodsFor:'as yet unclassified'!

fromBase: baseSnapshot target: targetSnapshot
	^ self new initializeWithBase: baseSnapshot target: targetSnapshot
!

operations: aCollection
	^ self basicNew initializeWithOperations: aCollection
! !

!MCPatch methodsFor:'accessing'!

operations
	^ operations
! !

!MCPatch methodsFor:'applying'!

applyTo: anObject
	operations do: [:ea | ea applyTo: anObject].

! !

!MCPatch methodsFor:'intializing'!

initializeWithBase: baseSnapshot target: targetSnapshot
	| base target |	
	operations := OrderedCollection new.
	base := MCDefinitionIndex definitions: baseSnapshot definitions.
	target := MCDefinitionIndex definitions: targetSnapshot definitions.
	
	target definitions do:
		[:t |
		base
			definitionLike: t
			ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (MCModification of: b to: t)]]
			ifAbsent: [operations add: (MCAddition of: t)]]
		displayingProgress: 'Diffing...'.
		
	base definitions do:
		[:b |
		target
			definitionLike: b
			ifPresent: [:t]
			ifAbsent: [operations add: (MCRemoval of: b)]]		
!

initializeWithOperations: aCollection
	operations := aCollection
! !

!MCPatch methodsFor:'querying'!

isEmpty
	^ operations isEmpty
! !

!MCPatch class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatch.st,v 1.5 2012-09-11 21:25:17 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatch.st,v 1.5 2012-09-11 21:25:17 cg Exp $'
!

version_SVN
    ^ '§Id: MCPatch.st 5 2010-08-29 07:30:29Z vranyj1 §'
! !