// src/utils.ts
import { isNumber, range, uniq } from "@antfu/utils";
function parseRangeString(total, rangeStr) {
  if (!rangeStr || rangeStr === "all" || rangeStr === "*")
    return range(1, total + 1);
  if (rangeStr === "none")
    return [];
  const indexes = [];
  for (const part of rangeStr.split(/[,;]/g)) {
    if (!part.includes("-")) {
      indexes.push(+part);
    } else {
      const [start, end] = part.split("-", 2);
      indexes.push(
        ...range(+start, !end ? total + 1 : +end + 1)
      );
    }
  }
  return uniq(indexes).filter((i) => i <= total).sort((a, b) => a - b);
}
function parseAspectRatio(str) {
  if (isNumber(str))
    return str;
  if (!Number.isNaN(+str))
    return +str;
  const [wStr = "", hStr = ""] = str.split(/[:/x|]/);
  const w = Number.parseFloat(wStr.trim());
  const h = Number.parseFloat(hStr.trim());
  if (Number.isNaN(w) || Number.isNaN(h) || h === 0)
    throw new Error(`Invalid aspect ratio "${str}"`);
  return w / h;
}

export {
  parseRangeString,
  parseAspectRatio
};
