std/semver/format_range.ts

33 lines
1014 B
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// This module is browser compatible.
import { format } from "./format.ts";
import type { Comparator, Range } from "./types.ts";
import { isWildcardComparator } from "./_shared.ts";
function formatComparator(comparator: Comparator): string {
const { operator } = comparator;
return `${operator === undefined ? "" : operator}${
isWildcardComparator(comparator) ? "*" : format(comparator)
}`;
}
/**
* Formats the SemVerrange into a string.
*
* @example Usage
* ```ts
* import { formatRange, parseRange } from "@std/semver";
* import { assertEquals } from "@std/assert";
*
* const range = parseRange(">=1.2.3 <1.2.4");
* assertEquals(formatRange(range), ">=1.2.3 <1.2.4");
* ```
*
* @param range The range to format
* @returns A string representation of the SemVer range
*/
export function formatRange(range: Range): string {
return range.map((c) => c.map((c) => formatComparator(c)).join(" "))
.join("||");
}