AbstractSourceCodeManager.st
changeset 3673 62cfdf4894c6
parent 3663 4cd9f90aaad3
child 3684 7f6dc6208ae7
--- a/AbstractSourceCodeManager.st	Sat Nov 29 03:33:04 2014 +0100
+++ b/AbstractSourceCodeManager.st	Sat Nov 29 03:33:25 2014 +0100
@@ -2640,6 +2640,36 @@
     "
 !
 
+extractKeyValueFor:key fromRevisionString:aString 
+    "{ Pragma: +optSpace }"
+
+    "extract a particular value from a string which has the format:
+        key1: value1, key2: value2, .... keyN: valueN"
+
+    |value idx1 idx2|
+
+    "/ 'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
+
+    idx1 := aString indexOfSubCollection:(key,': ').
+    idx1 ~~ 0 ifTrue:[
+        idx1 := idx1 + (key,': ') size.
+        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
+        idx2 == 0 ifTrue:[ idx2 := aString size + 1 ].
+        value := aString copyFrom:idx1 to:idx2-1.     
+    ].
+    ^ value
+
+    "
+     self 
+        extractKeyValueFor:'Path' 
+        fromRevisionString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
+
+     self 
+        extractKeyValueFor:'Time' 
+        fromRevisionString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
+    "
+!
+
 fileOutSourceCodeExtensions: extensions package: package on: stream
     "File out extension methods for given package on stream. 
      Not programming-language safe  - can handle smalltalk methods."
@@ -2939,57 +2969,24 @@
      This extracts the relevant info from aString which is in the format as created
      by standardRevisionStringFor:...."
 
-    |info path version user ts timeStamp idx1 idx2|
+    |info path version user timeStamp|
 
     "/ 'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
 
-    idx1 := aString indexOfSubCollection:'Path: '.
-    idx1 ~~ 0 ifTrue:[
-        idx1 := idx1 + 'Path: ' size.
-        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
-        path := aString copyFrom:idx1 to:idx2-1.     
-    ].
-    idx1 := aString indexOfSubCollection:'Version: '.
-    idx1 ~~ 0 ifTrue:[
-        idx1 := idx1 + 'Version: ' size.
-        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
-        idx2 == 0 ifTrue:[
-            version := aString copyFrom:idx1     
-        ] ifFalse:[
-            version := aString copyFrom:idx1 to:idx2-1.     
-        ].
-    ].
-    idx1 := aString indexOfSubCollection:'User: '.
-    idx1 ~~ 0 ifTrue:[
-        idx1 := idx1 + 'User: ' size.
-        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
-        idx2 == 0 ifTrue:[
-            user := aString copyFrom:idx1     
-        ] ifFalse:[
-            user := aString copyFrom:idx1 to:idx2-1.     
-        ].
-    ].
-    idx1 := aString indexOfSubCollection:'Time: '.
-    idx1 ~~ 0 ifTrue:[
-        idx1 := idx1 + 'Time: ' size.
-        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
-        idx2 == 0 ifTrue:[
-            ts := aString copyFrom:idx1     
-        ] ifFalse:[
-            ts := aString copyFrom:idx1 to:idx2-1.     
-        ].
-        timeStamp := Timestamp readIso8601FormatFrom:ts
-    ].
+    path := self extractKeyValueFor:'Path' fromRevisionString:aString.
+    version := self extractKeyValueFor:'Version' fromRevisionString:aString.
+    user := self extractKeyValueFor:'User' fromRevisionString:aString.
+    timeStamp := self extractKeyValueFor:'Time' fromRevisionString:aString.
 
     info := self versionInfoClass new.
     path notNil ifTrue:[ info fileName:(path asFilename baseName) ].
     info revision:version.
     user notNil ifTrue:[ info user:user ].
-    timeStamp notNil ifTrue:[ info timeStamp:timeStamp ].
+    timeStamp notNil ifTrue:[ info timeStamp:(Timestamp readFrom:timeStamp) ].
     ^ info
 
     "
-     self revisionInfoFromString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826' 
+     self revisionInfoFromStandardVersionString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826' 
     "
 
     "Created: / 23-07-2012 / 18:45:41 / cg"
@@ -3984,15 +3981,15 @@
 !AbstractSourceCodeManager class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.335 2014-11-29 02:06:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.336 2014-11-29 02:33:25 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.335 2014-11-29 02:06:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.336 2014-11-29 02:33:25 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: AbstractSourceCodeManager.st,v 1.335 2014-11-29 02:06:15 cg Exp $'
+    ^ '$Id: AbstractSourceCodeManager.st,v 1.336 2014-11-29 02:33:25 cg Exp $'
 ! !