factor/extra/semantic-versioning/semantic-versioning.factor

32 lines
906 B
Factor
Raw Normal View History

2010-02-22 14:53:29 -05:00
! Copyright (C) 2010 Maximilian Lupke.
! See http://factorcode.org/license.txt for BSD license.
2010-02-22 15:51:29 -05:00
USING: arrays ascii kernel math.order math.parser sequences splitting
;
2010-02-22 14:53:29 -05:00
IN: semantic-versioning
: split-version ( string -- array )
"." split first3 dup [ digit? not ] find
[ cut [ [ string>number ] tri@ ] dip 4array ]
[ drop [ string>number ] tri@ 3array ]
if ;
2010-02-22 15:23:43 -05:00
: version<=> ( version1 version2 -- <=> )
2010-02-22 15:51:29 -05:00
[ split-version ] bi@ drop-prefix
2dup [ length 0 = ] either?
2011-10-14 15:31:06 -04:00
[ [ length ] bi@ >=< ] [ [ first ] compare ] if ;
2010-02-22 15:29:37 -05:00
: version< ( version1 version2 -- ? )
version<=> +lt+ = ;
: version<= ( version1 version2 -- ? )
version<=> [ +lt+ = ] [ +eq+ = ] either? ;
: version= ( version1 version2 -- ? )
version<=> +eq+ = ;
: version>= ( version1 version2 -- ? )
version<=> [ +gt+ = ] [ +eq+ = ] either? ;
: version> ( version1 version2 -- ? )
version<=> +gt+ = ;