+++ /dev/null
-! Copyright (C) 2010 Maximilian Lupke.
-! See https://factorcode.org/license.txt for BSD license.
-USING: arrays ascii kernel math math.order math.parser sequences
-sorting.human splitting ;
-IN: semantic-versioning
-
-<PRIVATE
-
-: number<=> ( obj1 obj2 -- <=> )
- [ [ zero? ] trim-tail-slice ] bi@ <=> ;
-
-: pre-release<=> ( obj1 obj2 -- <=> )
- 2dup [ empty? ] either?
- [ 2length >=< ] [ human<=> ] if ;
-
-PRIVATE>
-
-: split-version ( string -- array )
- "+" split1 [
- dup [ [ digit? not ] [ CHAR: . = not ] bi and ] find [
- [ cut ] [ CHAR: - = [ rest [ f ] when-empty ] when ] bi*
- ] [ drop f ] if*
- [ "." split [ string>number 0 or ] map 3 0 pad-tail ] dip
- ] dip 3array ;
-
-: version<=> ( version1 version2 -- <=> )
- [ split-version ] bi@
- 2dup [ first ] bi@ number<=> dup +eq+ =
- [ drop [ second ] bi@ pre-release<=> ] [ 2nip ] if ;
-
-: version< ( version1 version2 -- ? )
- version<=> +lt+ eq? ;
-
-: version<= ( version1 version2 -- ? )
- version<=> { +lt+ +eq+ } member-eq? ;
-
-: version= ( version1 version2 -- ? )
- version<=> +eq+ eq? ;
-
-: version>= ( version1 version2 -- ? )
- version<=> { +gt+ +eq+ } member-eq? ;
-
-: version> ( version1 version2 -- ? )
- version<=> +gt+ eq? ;