export interface ParsedLine {
  placement: number;
  rawName: string;
}

/**
 * Parse a pasted results text into placement + name pairs.
 *
 * Supported formats per line:
 *   1. Name        (dot separator)
 *   1, Name        (comma separator)
 *   1 Name         (space separator)
 *   T3. Name       (T-prefix tie, dot separator)
 *   T3, Name       (T-prefix tie, comma separator)
 *   T3 Name        (T-prefix tie, space separator)
 *
 * Repeated rank numbers across consecutive lines are both emitted
 * with the same placement (treated as ties automatically).
 * Blank lines are ignored.
 */
export function parseResultsText(text: string): ParsedLine[] {
  const results: ParsedLine[] = [];

  for (const rawLine of text.split(/\r?\n/)) {
    const line = rawLine.trim();
    if (!line) continue;

    // Try to match: optional T, digits, optional separator (. or ,), then whitespace and the name
    // Pattern 1: "1. Name", "1, Name", "T3. Name", "T3, Name"
    const match = line.match(/^T?(\d+)[.,]\s*(.+)$/);
    if (match) {
      results.push({
        placement: parseInt(match[1], 10),
        rawName: match[2].trim(),
      });
      continue;
    }

    // Pattern 2: "1 Name", "T3 Name" (space-only separator)
    const spaceMatch = line.match(/^T?(\d+)\s+(.+)$/);
    if (spaceMatch) {
      results.push({
        placement: parseInt(spaceMatch[1], 10),
        rawName: spaceMatch[2].trim(),
      });
      continue;
    }
  }

  return results;
}
