]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/semver/semver.factor
semver: more restrictive semver parser for things like 1.2.3.4
[factor.git] / extra / semver / semver.factor
index 92f3f998dd9d11926a80096eec689c79adaad392..1e18e8448459fedb6d3f4d1062ce3f5798c0926d 100644 (file)
@@ -26,10 +26,14 @@ TUPLE: semver
     { prerelease initial: "" }
     { build initial: "" } ;
 
+ERROR: malformed-semver parts ;
+: check-semver-parts ( seq -- seq )
+    dup length 3 <= [ malformed-semver ] unless ;
+
 : parse-semver ( str -- semver )
     "+" split1
     [ "-" split1 ] dip
-    [ "." split [ string>number ] map first3 ] 2dip
+    [ "." split [ string>number ] map check-semver-parts first3 ] 2dip
     semver boa ;
 
 : <semver> ( str -- semver ) parse-semver ; inline