/** * Makes youth teams identifiable while retaining the team name supplied by * click-TT. Age groups occur in a few forms, for example "Jugend 13", * "Jugend 13 1. Kreisklasse", and "J13". Some imports provide the age * only for the whole fixture, therefore `competitionAgeGroup` is considered * as a fallback. */ export function youthTeamCode(teamAgeGroup, teamName = '', competitionAgeGroup = '') { const ageGroup = [teamAgeGroup, competitionAgeGroup] .map(value => String(value || '').trim()) .filter(Boolean) .join(' ') const name = String(teamName || '').trim() const codeMatch = `${ageGroup} ${name}`.match(/\b(?:jugend\s*|j\s*\(?)(\d{1,2})\b/i) if (codeMatch) return `J${codeMatch[1]}` if (/\bjugend\b/i.test(ageGroup) || /\bjugend\b/i.test(name)) return 'J' return '' } export function formatTeamDisplayName(teamName, teamAgeGroup, competitionAgeGroup = '') { const rawName = String(teamName || '').trim() if (!rawName) return '' const youthCode = youthTeamCode(teamAgeGroup, rawName, competitionAgeGroup) const name = youthCode ? rawName.replace(/\s*\(J\d{1,2}\)\s*$/i, '').trim() : rawName return youthCode ? `(${youthCode}) ${name}` : name }