diff --git a/.gitignore b/.gitignore index 2cc3eef..1f4aa64 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ target/ *.iml .idea/ +.DS_Store \ No newline at end of file diff --git a/src/main/xquery/semver.xq b/src/main/xquery/semver.xqm similarity index 98% rename from src/main/xquery/semver.xq rename to src/main/xquery/semver.xqm index e22a46d..670b820 100644 --- a/src/main/xquery/semver.xq +++ b/src/main/xquery/semver.xqm @@ -40,6 +40,9 @@ xquery version "3.1"; module namespace semver = "http://exist-db.org/xquery/semver"; +declare namespace array="http://www.w3.org/2005/xpath-functions/array"; +declare namespace map="http://www.w3.org/2005/xpath-functions/map"; + (:~ A regular expression for checking a SemVer version string : @author David Fichtmueller : @see https://github.com/semver/semver/pull/460 @@ -313,7 +316,10 @@ declare function semver:serialize($version as map(*)) { : @return -1 if v1 < v2, 0 if v1 = v2, or 1 if v1 > v2. :) declare function semver:compare($v1 as xs:string, $v2 as xs:string) as xs:integer { - semver:compare($parsed-v1, $parsed-v2, false()) + let $parsed-v1 := semver:parse($v1) + let $parsed-v2 := semver:parse($v2) + return + semver:compare-parsed($parsed-v1, $parsed-v2) }; (:~ Compare two versions (with an option to coerce invalid SemVer strings) diff --git a/src/test/xquery/coerce.xqm b/src/test/xquery/coerce.xqm index 465a0d4..6a7a2c0 100644 --- a/src/test/xquery/coerce.xqm +++ b/src/test/xquery/coerce.xqm @@ -28,7 +28,7 @@ xquery version "3.1"; module namespace stco = "http://exist-db.org/xquery/semver/test/coerce"; -import module namespace semver = "http://exist-db.org/xquery/semver" at "file:///Users/aretter/code/semver.xq/src/main/xquery/semver.xq"; +import module namespace semver = "http://exist-db.org/xquery/semver"; declare namespace test = "http://exist-db.org/xquery/xqsuite"; diff --git a/src/test/xquery/compare.xqm b/src/test/xquery/compare.xqm index a9cb14e..410888b 100644 --- a/src/test/xquery/compare.xqm +++ b/src/test/xquery/compare.xqm @@ -68,7 +68,37 @@ function stc:lt-pre-release-dot() { }; declare - %test:assertEquals("false") + %test:assertEquals("true") function stc:gt() { - semver:lt("2.0.0", "1.0.0") + semver:gt("2.0.0", "1.0.0") +}; + +declare + %test:assertEquals("true") +function stc:eq() { + semver:eq("1.0.0", "1.0.0") +}; + +declare + %test:assertEquals("true") +function stc:ne() { + semver:ne("1.0.0", "2.0.0") +}; + +declare + %test:assertEquals("0") +function stc:compare-eq() { + semver:compare("1.0.0", "1.0.0") +}; + +declare + %test:assertEquals("1") +function stc:compare-gt() { + semver:compare("2.0.0", "1.0.0") +}; + +declare + %test:assertEquals("-1") +function stc:compare-lt() { + semver:compare("1.0.0", "2.0.0") }; diff --git a/xar-assembly.xml b/xar-assembly.xml index 12be33f..cf4a9d9 100644 --- a/xar-assembly.xml +++ b/xar-assembly.xml @@ -39,7 +39,7 @@ http://exist-db.org/xquery/semver ${basedir}/src/main/xquery - semver.xq + semver.xqm content