class: ChangeSet
authorClaus Gittinger <cg@exept.de>
Mon, 23 Mar 2015 16:11:20 +0100
changeset 3832 d8158c7c612f
parent 3831 9aedd2c8cb0c
child 3833 f40fb26d03f7
class: ChangeSet some limited support to read gravel smalltalk code
ChangeSet.st
--- a/ChangeSet.st	Fri Mar 20 14:17:02 2015 +0100
+++ b/ChangeSet.st	Mon Mar 23 16:11:20 2015 +0100
@@ -785,7 +785,6 @@
     "Created: / 27.10.1997 / 13:52:54 / cg"
 ! !
 
-
 !ChangeSet class methodsFor:'Compatibility-VW'!
 
 component: component definition: anObject change: changeSymbol
@@ -3136,24 +3135,12 @@
     "Created: / 30-03-2012 / 16:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-process_categoriesFor_
-    "'categoriesFor:' chunk (Dolphin)"
-
-    ^ self handleCategoriesForChange.
-!
-
 process_category_
     "'category:' chunk (ST/X)"
 
     ^ self handleMethodCategoryChange.
 !
 
-process_commentStamp_prior_
-    "'commentStamp:prior::' chunk (Squeak)"
-
-    ^ self handleSqueakCommentStamp.
-!
-
 process_comment_
     "'comment:' chunk (ST/X)"
 
@@ -3194,24 +3181,12 @@
     ^ self handleMethodChange.
 !
 
-process_methodsForUndefined_
-    "'methodsForUndefined:' chunk (?)"
-
-    ^ self handleMethodChange.
-!
-
 process_methodsFor_
     "'methodsFor:' chunk (ST/80, Squeak, ST/X, VW, ...)"
 
     ^ self handleMethodChange.
 !
 
-process_methodsFor_stamp_
-    "'methodsFor:stamp:' chunk (Squeak)"
-
-    ^ self handleMethodChange.
-!
-
 process_name_
     "'name:' chunk (ST/X)"
 
@@ -3310,12 +3285,6 @@
     ^ self handleMethodChange.
 !
 
-process_publicMethods
-    "'publicMethods' chunk (ST/V and dolphin)"
-
-    ^ self handleMethodChange.
-!
-
 process_publicMethodsFor_
     "'publicMethodsFor:' chunk (ST/X)"
 
@@ -3415,6 +3384,179 @@
     "Created: / 02-04-2012 / 19:08:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ChangeSet::ChangeFileReader methodsFor:'reading-private-dolphin'!
+
+process_categoriesFor_
+    "'categoriesFor:' chunk (Dolphin)"
+
+    ^ self handleCategoriesForChange.
+!
+
+process_methodsForUndefined_
+    "'methodsForUndefined:' chunk (?)"
+
+    ^ self handleMethodChange.
+!
+
+process_publicMethods
+    "'publicMethods' chunk (ST/V and dolphin)"
+
+    ^ self handleMethodChange.
+! !
+
+!ChangeSet::ChangeFileReader methodsFor:'reading-private-gravel'!
+
+process_addClassMethod_
+    "'reader addClassMethod:' chunk (gravel Smalltalk)"
+
+    ^ self process_addMethodOrClassMethod:true
+!
+
+process_addMethodOrClassMethod:isClassMethod
+    "'reader addMethod:' chunk (gravel Smalltalk)"
+
+    |categoryName methodSource change parser|
+
+    categoryName := (arguments at:1) evaluate.
+
+    lineNumber := inputStream lineNumber.
+    "/ Care for non-positionable streams
+    position := nil.
+    inputStream isPositionable ifTrue:[
+        position := inputStream position + 1.
+    ].
+    methodSource := inputStream nextChunk.
+
+    parser := Parser
+                parseMethodArgAndVarSpecification:methodSource 
+                in:nil 
+                ignoreErrors:true 
+                ignoreWarnings:true
+                parseBody:false.
+
+    parser isNil ifTrue:[
+        "/ something wierd ...
+        methodSelector := '????'.
+    ] ifFalse:[
+        methodSelector := parser selector.
+    ].
+
+    isClassMethod ifTrue:[
+        className := className , ' class'
+    ].
+
+    change := MethodDefinitionChange new.
+    change 
+        className:className
+        selector:methodSelector
+        source:methodSource
+        category:categoryName
+        privacy:nil.
+
+    self addChange:change.
+
+"/ self halt.
+    ^ true
+!
+
+process_addMethod_
+    "'reader addMethod:' chunk (gravel Smalltalk)"
+
+    ^ self process_addMethodOrClassMethod:false
+!
+
+process_addSimpleClassTrait_
+    "'reader defineaddSimpleTraitTrait:' chunk (gravel Smalltalk)"
+
+    |change traitName|
+
+    traitName := (arguments at:1) evaluate.
+
+    change := TraitDefinitionChange new.
+    change 
+        className:className,' class';
+        baseTrait:traitName;
+        source:chunk.
+"/ self halt.
+    self addChange:change.
+    ^ true
+!
+
+process_addSimpleTrait_
+    "'reader defineaddSimpleTraitTrait:' chunk (gravel Smalltalk)"
+
+    |change traitName gravelSuperclassName superclassName|
+
+    traitName := (arguments at:1) evaluate.
+    gravelSuperclassName := (arguments at:2) evaluate.
+    superclassName := SourceFileLoader::GravelSourceFileReader classNameMappingFor:gravelSuperclassName.
+
+    change := TraitDefinitionChange new.
+    change 
+        className:className;
+        superClassName:superclassName;
+        baseTrait:traitName;
+        source:chunk.
+"/ self halt.
+    self addChange:change.
+    ^ true
+!
+
+process_defineClass_superclass_
+    "'reader defineClass:superclass:' chunk (gravel Smalltalk)"
+
+    |nameSpace change gravelSuperclassName superclassName|
+
+    className := (arguments at:1) evaluate.
+    gravelSuperclassName := (arguments at:2) evaluate.
+    superclassName := SourceFileLoader::GravelSourceFileReader classNameMappingFor:gravelSuperclassName.
+
+    nameSpace := Class nameSpaceQuerySignal query.
+    (nameSpace == Smalltalk) ifTrue:[ nameSpace := nil ].
+
+    change := ClassDefinitionChange new.
+    change 
+        className:className; 
+        superClassName:superclassName;
+        source:chunk.
+"/ self halt.
+    self addChange:change.
+    ^ true
+!
+
+process_defineTrait_superclass_
+    "'reader defineTrait:' chunk (gravel Smalltalk)"
+
+    |nameSpace change|
+
+    className := (arguments at:1) evaluate.
+
+    nameSpace := Class nameSpaceQuerySignal query.
+    (nameSpace == Smalltalk) ifTrue:[ nameSpace := nil ].
+
+    change := TraitDefinitionChange new.
+    change 
+        className:className; 
+        source:chunk.
+"/ self halt.
+    self addChange:change.
+    ^ true
+! !
+
+!ChangeSet::ChangeFileReader methodsFor:'reading-private-squeak'!
+
+process_commentStamp_prior_
+    "'commentStamp:prior::' chunk (Squeak)"
+
+    ^ self handleSqueakCommentStamp.
+!
+
+process_methodsFor_stamp_
+    "'methodsFor:stamp:' chunk (Squeak)"
+
+    ^ self handleMethodChange.
+! !
+
 !ChangeSet::BeeChangeFileReader methodsFor:'helpers'!
 
 receiversClassNameRememberingNamespace
@@ -4196,7 +4338,7 @@
 !
 
 version_SVN
-    ^ '$Id: ChangeSet.st,v 1.257 2015-03-09 10:12:21 cg Exp $'
+    ^ '$Id: ChangeSet.st,v 1.258 2015-03-23 15:11:20 cg Exp $'
 ! !
 
 !ChangeSet::ClassSourceWriter::ClassInfo class methodsFor:'instance creation'!
@@ -4875,11 +5017,11 @@
 !ChangeSet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.257 2015-03-09 10:12:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.258 2015-03-23 15:11:20 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.257 2015-03-09 10:12:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.258 2015-03-23 15:11:20 cg Exp $'
 !
 
 version_HG
@@ -4888,6 +5030,6 @@
 !
 
 version_SVN
-    ^ '$Id: ChangeSet.st,v 1.257 2015-03-09 10:12:21 cg Exp $'
+    ^ '$Id: ChangeSet.st,v 1.258 2015-03-23 15:11:20 cg Exp $'
 ! !