--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MCStXSnapshotTransformation.st Wed May 29 13:46:06 2013 +0200
@@ -0,0 +1,121 @@
+"{ 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.
+ use reverseDo: to transform class definitions first"
+ transformed definitions copy reverseDo:[:definition|
+ definition accept: self.
+ ].
+ ^transformed.
+
+ "Created: / 29-05-2013 / 11:40:05 / 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.1 2013-05-29 11:46:06 vrany Exp $'
+!
+
+version_CVS
+ ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStXSnapshotTransformation.st,v 1.1 2013-05-29 11:46:06 vrany Exp $'
+! !
+