import { regEx } from '../../../util/regex.ts'; import type { Range } from './types.ts'; // This range format was chosen because it is common in the ecosystem const gteAndLtRange = regEx(/>=(?[\d.]+)&&<(?[\d.]+)/); const ltAndGteRange = regEx(/<(?[\d.]+)&&>=(?[\d.]+)/); export function parseRange(input: string): Range | null { const noSpaces = input.replaceAll(' ', ''); let m = gteAndLtRange.exec(noSpaces); if (!m?.groups) { m = ltAndGteRange.exec(noSpaces); if (!m?.groups) { return null; } } return { lower: m.groups.lower, upper: m.groups.upper, }; }