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 [ + + + | 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 [ @@ -1519,9 +1527,7 @@ XML.'> parseVersion: aString [ - | 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 [