diff --git a/emvar-lite/mod.ts b/emvar-lite/mod.ts index e5239b5..5193fbc 100644 --- a/emvar-lite/mod.ts +++ b/emvar-lite/mod.ts @@ -142,6 +142,13 @@ export class Checker { if (range instanceof Checker) { return range } + range = range.trim(); + if (range.indexOf('&&') !== -1) { + return rangeAnd(...range.split('&&').map(x => Checker.parse(x))); + } + if (range.indexOf('||') !== -1) { + return rangeOr(...range.split('||').map(x => Checker.parse(x))); + } if (range === '*') return new Checker((version) => { EmVar.from(version) return true diff --git a/emvar-lite/test.ts b/emvar-lite/test.ts index 4edeba6..3280ee8 100644 --- a/emvar-lite/test.ts +++ b/emvar-lite/test.ts @@ -199,4 +199,31 @@ const { test } = Deno; expect(checker.check("1.2.3")).toBe(true); expect(checker.check("1")).toBe(true); }) -} \ No newline at end of file +} + +test(">1 && =1.2", () => { + const checker = rangeOf(">1 && =1.2"); + + expect(checker.check("1.2")).toBe(true); + expect(checker.check("1.2.1")).toBe(false); + +}) +test("=1 || =2", () => { + const checker = rangeOf("=1 || =2"); + + expect(checker.check("1")).toBe(true); + expect(checker.check("2")).toBe(true); + expect(checker.check("3")).toBe(false); + +}) + + +test(">1 && =1.2 || =2", () => { + const checker = rangeOf(">1 && =1.2 || =2"); + + expect(checker.check("1.2")).toBe(true); + expect(checker.check("1")).toBe(false); + expect(checker.check("2")).toBe(true); + expect(checker.check("3")).toBe(false); + +}) \ No newline at end of file