MCStXSnapshotTransformation.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 866 a474daf5e46c
child 992 f46203ad6470
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:

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

Object subclass:#MCStXSnapshotTransformation
	instanceVariableNames:'original transformed'
	classVariableNames:''
	poolDictionaries:''
	category:'SCM-Monticello-St/X Storing'
!

!MCStXSnapshotTransformation class methodsFor:'documentation'!

documentation
"
    An abstract superclass to snapshot tranformations. Used to alter MCSnaphot data
    to hide-out nasty differences between St/X and Squeak/Pharo package model so
    .mcz can be safely passed to from one environment to another without information
    loss. 

    CAUTION: Tricky.

    [author:]
        Jan Vrany <jan.vrany@fit.cvut.cz>

    [instance variables:]

    [class variables:]

    [see also:]
        MCStXSnapshotPreWriteTransformation
        MCStXSnapshotPostReadTransformation
"
! !

!MCStXSnapshotTransformation class methodsFor:'testing'!

isAbstract
    ^self == MCStXSnapshotTransformation

    "Created: / 29-05-2013 / 11:32:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!MCStXSnapshotTransformation class methodsFor:'transforming'!

transform: anMCSnapshot
    "Returns a transformed **copy** of the original snapshot"

    ^self new transform: anMCSnapshot.

    "Created: / 29-05-2013 / 11:36:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!MCStXSnapshotTransformation methodsFor:'accessing'!

original
    ^ original
!

transformed
    ^ transformed
! !

!MCStXSnapshotTransformation methodsFor:'transforming'!

transform: anMCSnapshot
    "Returns a transformed **copy** of the original snapshot"

    original := anMCSnapshot.
    transformed := original copy.

    "use #copy to allow modifications to definitions collection while
     transforming."
    transformed definitions copy reverseDo:[:definition|
        definition accept: self.        
    ].
    ^transformed.

    "Created: / 29-05-2013 / 11:40:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 31-05-2013 / 00:10:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!MCStXSnapshotTransformation methodsFor:'visiting'!

visitClassDefinition: definition

    "Modified: / 29-05-2013 / 12:07:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

visitClassTraitDefinition: definition

    "Modified: / 29-05-2013 / 12:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

visitMetaclassDefinition: definition

    "Modified: / 29-05-2013 / 12:08:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

visitMethodDefinition: definition

    "Modified: / 29-05-2013 / 12:08:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

visitOrganizationDefinition: defintion

    "Modified: / 29-05-2013 / 12:08:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

visitTraitDefinition: definition

    "Modified: / 29-05-2013 / 12:08:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!MCStXSnapshotTransformation class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStXSnapshotTransformation.st,v 1.2 2013-05-30 23:35:33 vrany Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStXSnapshotTransformation.st,v 1.2 2013-05-30 23:35:33 vrany Exp $'
! !