Project.st
changeset 4099 f6984fc5cb6c
parent 4097 66466729c1de
child 4112 5ee841c34b10
--- a/Project.st	Fri Apr 16 21:53:38 1999 +0200
+++ b/Project.st	Sat Apr 17 01:56:15 1999 +0200
@@ -514,6 +514,18 @@
     "Modified: 27.1.1997 / 12:10:09 / cg"
 !
 
+prerequisiteClasses
+    "return the prerequisiteClasses of the project"
+
+    ^ (self propertyAt:#prerequisiteClasses) ? #()
+!
+
+prerequisiteClasses:aCollectionOfClassesPrClassNames
+    "set the prerequisiteClasses of the project"
+
+    ^ self propertyAt:#prerequisiteClasses put:aCollectionOfClassesPrClassNames
+!
+
 prerequisites
     "return the prerequisites of the project"
 
@@ -736,6 +748,9 @@
     repositoryModule := pack at:'repository.module' ifAbsent:repositoryModule.
     repositoryDirectory := pack at:'repository.directory' ifAbsent:repositoryDirectory.
 
+    prerequisites := pack at:'prerequisites' ifAbsent:#().
+    self prerequisiteClasses:(pack at:'prerequisiteClasses' ifAbsent:#()).
+
     s := pack at:'nameSpace' ifAbsent:nil.
     s notNil ifTrue:[
         defaultNameSpace := Namespace name:s.
@@ -787,6 +802,13 @@
 
     self wasLoadedFromFile:true.
 
+    "/ all remaining properties
+    pack keysAndValuesDo:[:key :val |
+        (key startsWith:'property.') ifTrue:[
+            self propertyAt:(key copyFrom:'property.' size+1) asSymbol put:val.
+        ]
+    ].
+
     "
      Project current saveAsProjectFile.
 
@@ -827,7 +849,7 @@
 
     s := aStream.
 
-    s nextPutLine:'; $Header: /cvs/stx/stx/libbasic/Project.st,v 1.77 1999-04-16 19:00:27 cg Exp $'; nextPutLine:';'.
+    s nextPutLine:'; $Header' , '$'; nextPutLine:';'.
     s nextPutLine:'; Project saved ' , Smalltalk timeStamp; nextPutLine:';'.
     s nextPutLine:'; Be careful when editing - do not corrupt the files syntax.'.
     s nextPutLine:'; (Lines starting with a semicolon are comment lines)'.
@@ -854,9 +876,9 @@
 
     s cr; nextPutLine:';'; nextPutLine:'; repository:'; nextPutLine:';'.
     s nextPutAll:'repository.module'. 
-    s tab. s nextPutLine:repositoryModule ? 'private'.
+    s tab. s nextPutLine:(repositoryModule ? 'private') storeString.
     s nextPutAll:'repository.directory'. 
-    s tab. s nextPutLine:repositoryDirectory ? self packageName.
+    s tab. s nextPutLine:(repositoryDirectory ? self packageName) storeString.
     s cr.
 
     first := true.
@@ -867,6 +889,7 @@
             targetconditions
             classes
             classInfo
+            prerequisiteClasses
         ) includes:key) ifFalse:[
             first ifTrue:[
                 first := false.
@@ -897,6 +920,22 @@
         ].
         s nextPutLine:')'.
     ].
+    s cr; nextPutLine:';'; nextPutLine:'; required classes:'; nextPutLine:';'.
+    s nextPutAll:'prerequisiteClasses'; tab.
+    coll := self prerequisiteClasses.
+    coll size = 0 ifTrue:[
+        s nextPutLine:'#()'. 
+    ] ifFalse:[    
+        s nextPutLine:'#( \'. 
+        coll do:[:aClassOrSymbol | |className|
+
+            (className := aClassOrSymbol) isSymbol ifFalse:[
+                className := aClassOrSymbol name
+            ].
+            s tab. s nextPutAll:(className storeString); nextPutLine:' \'.
+        ].
+        s nextPutLine:')'.
+    ].
 
     s cr; nextPutLine:';'; nextPutLine:'; classes:'; nextPutLine:';'.
     s nextPutLine:'; (for each class, one line of the form: ( #''className'' [fileName [condition]] )'.
@@ -1730,6 +1769,6 @@
 !Project class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.77 1999-04-16 19:00:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.78 1999-04-16 23:56:01 cg Exp $'
 ! !
 Project initialize!