CRAP Complexity Coverage Location
13.13 13 10/11 (90.91%) crap/location-in-range.ts (L10 - L46)
export function locationIsInRange({
    location,
    range,
}: {
    location: { line: number; column: number | undefined };
    range: {
        start: { line: number; column: number | undefined };
        end: { line: number; column: number | undefined };
    };
}): boolean {
    if (location.line < range.start.line || location.line > range.end.line) {
        return false;
    }

    if (location.column == undefined) {
        return true;
    }

    if (
        range.start.column != undefined &&
        range.end.column != undefined &&
        location.line === range.start.line &&
        location.line === range.end.line
    ) {
        return location.column >= range.start.column && location.column <= range.end.column;
    }

    if (range.start.column != undefined && location.line === range.start.line) {
        return location.column >= range.start.column;
    }

    if (range.end.column != undefined && location.line === range.end.line) {
        return location.column <= range.end.column;
    }

    return true;
}