import { isString, MAC } from "../types";

export function normalizeString(str: string): string {
    return isString(str) ? str.trim().replace(/\s+/g, " ") : str;
}

export function normalizeMac(mac: MAC): MAC {
    // parts only contains values at odd indexes
    const parts = mac
        .toUpperCase()
        .replace(/[-:]/g, "")
        .split(/([A-F0-9]{2})/);

    const macParts = [];

    for (let i = 1; i < parts.length; i += 2) {
        macParts.push(parts[i]);
    }

    return macParts.join(":") as MAC;
}

export function parseInteger(str: string): number {
    const parsed = parseInt(str, 10);
    if (parsed.toString() === str) {
        return parsed;
    } else {
        throw new SyntaxError(
            `String does not represent a valid integer: "${str}"`
        );
    }
}