On Thu, 2009-12-31 at 00:55 +0100, Paolo Bonzini wrote: > On 12/30/2009 11:15 PM, Gwenael Casaccio wrote: > > + parseVersion: aString [ > > + <category: 'version parsing'> > > + > > + | tokens | > > + (tokens := aString tokenize: '\.') size = 3 ifFalse: [ self error: 'Bad > > version string : ', aString, ' should be xx.yy.zz' ]. > > + self version: (Version major: tokens first asInteger minor: tokens > > second asInteger patch: tokens third asInteger) > > + ] > > This should: > > 1) use #subStrings: or alternatively a single regex match > > ^(\d+)\.(\d+)(?:\.(\d+))$ > > instead of tokenize. > > 2) be in Version class>>#fromString: > > 3) accept a version like 1.0 and change it to 1.0.0 (see regex above). > > Otherwise looks fine, filtering of prerequisites based on their version > can be done later. > > Paolo
Hi, Here are the changes. Cheers, Gwen
diff --git a/kernel/PkgLoader.st b/kernel/PkgLoader.st index 2118433..475d544 100644 --- a/kernel/PkgLoader.st +++ b/kernel/PkgLoader.st @@ -1106,6 +1106,14 @@ Namespace current: Kernel [ Object subclass: Version [ | major minor patch | + Version class >> fromString: aString [ + <category: 'instance creation'> + + | result | + [ result := aString searchRegex: '^(\d+)\.(\d+)(?:\.(\d+))?' ] on: Error do: [ :ex | self error: 'Bad version format ', aString, ' should be xx.yy(.zz)' ]. + ^ self major: result first asInteger minor: result second asInteger patch: (result third ifNil: [ 0 ] ifNotNil: [ result third asInteger ]) + ] + Version class >> major: major minor: minor patch: patch [ <category: 'instance creation'> @@ -1519,9 +1527,7 @@ XML.'> parseVersion: aString [ <category: 'version parsing'> - | tokens | - (tokens := aString tokenize: '\.') size = 3 ifFalse: [ self error: 'Bad version string : ', aString, ' should be xx.yy.zz' ]. - self version: (Version major: tokens first asInteger minor: tokens second asInteger patch: tokens third asInteger) + self version: (Version fromString: aString) ] primFileIn [
_______________________________________________ help-smalltalk mailing list help-smalltalk@gnu.org http://lists.gnu.org/mailman/listinfo/help-smalltalk