// Türkiye dışındaki (KKTC ve yurtdışı) üniversitelerin ülke haritası çözümü. // Kontür verisi harita-ulkeler-verisi.ts'te (scripts/ulke-harita-uret.ts üretir). import { ULKE_HARITALARI, type UlkeKodu, type UlkeHarita, } from "./harita-ulkeler-verisi"; export { ULKE_HARITALARI, ULKE_HARITA_GENISLIK, ULKE_HARITA_YUKSEKLIK, } from "./harita-ulkeler-verisi"; export type { UlkeKodu, UlkeHarita } from "./harita-ulkeler-verisi"; /** Schema.org addressCountry için ISO 3166-1 alpha-2 kodları. */ export const ULKE_ISO: Record = { kktc: "CY", azerbaycan: "AZ", kirgizistan: "KG", kazakistan: "KZ", "bosna-hersek": "BA", makedonya: "MK", arnavutluk: "AL", }; type Sehir = { ulke: UlkeKodu; ad: string }; /** DB'deki il değerlerinden ve düzeltme tablosundan şehir anahtarları. */ const SEHIRLER: Record = { GİRNE: { ulke: "kktc", ad: "Girne" }, LEFKOŞA: { ulke: "kktc", ad: "Lefkoşa" }, GAZİMAĞUSA: { ulke: "kktc", ad: "Gazimağusa" }, GÜZELYURT: { ulke: "kktc", ad: "Güzelyurt" }, LEFKE: { ulke: "kktc", ad: "Lefke" }, "BAKÜ-AZERBAYCAN": { ulke: "azerbaycan", ad: "Bakü" }, "BİŞKEK-KIRGIZİSTAN": { ulke: "kirgizistan", ad: "Bişkek" }, "TÜRKİSTAN-KAZAKİSTAN": { ulke: "kazakistan", ad: "Türkistan" }, "SARAYBOSNA - BOSNA - HERSEK": { ulke: "bosna-hersek", ad: "Saraybosna" }, ÜSKÜP: { ulke: "makedonya", ad: "Üsküp" }, TİRAN: { ulke: "arnavutluk", ad: "Tiran" }, }; /** * Kaynak verideki gürültü için üniversite adına göre düzeltme: * - Uluslararası Balkan Üniversitesi Üsküp'tedir; YÖK Atlas satırlarının * çoğu il'i yanlışlıkla "SARAYBOSNA - BOSNA - HERSEK" der. * - Tiran New York Üniversitesi'nin il alanı boştur. * - ODTÜ ve ASBÜ'nün KKTC kampüs satırları vardır ama ana kampüs Türkiye'de; * null → Türkiye haritasında kalır. * Anahtar: uniAdiNormalize edilmiş adın tr-TR büyük harf hali. */ const UNI_DUZELTME: Record = { "ULUSLARARASI BALKAN ÜNİVERSİTESİ": "ÜSKÜP", "TİRAN NEW YORK ÜNİVERSİTESİ": "TİRAN", "KIBRIS AYDIN ÜNİVERSİTESİ": "GİRNE", // il alanı yalnızca "KIBRIS" "ORTA DOĞU TEKNİK ÜNİVERSİTESİ": null, "ANKARA SOSYAL BİLİMLER ÜNİVERSİTESİ": null, }; /** il değeri Türkiye dışını mı gösteriyor? ("KIBRIS" genel değeri dahil) */ const YURTDISI_IL = new Set([...Object.keys(SEHIRLER), "KIBRIS"]); export type UlkeKonum = { ulke: UlkeKodu; ulkeAd: string; iso: string; harita: UlkeHarita; /** Şehir adı; genel "KIBRIS" gibi şehri bilinmeyen durumda null */ sehir: string | null; }; function sehirdenKonum(anahtar: keyof typeof SEHIRLER): UlkeKonum { const sehir = SEHIRLER[anahtar]; const harita = ULKE_HARITALARI[sehir.ulke]; return { ulke: sehir.ulke, ulkeAd: harita.ad, iso: ULKE_ISO[sehir.ulke], harita, sehir: sehir.ad, }; } /** * Üniversite Türkiye dışındaysa ülke haritası + şehir konumu döner; * Türkiye'deyse (veya çözülemiyorsa) null — Türkiye haritası kullanılır. */ export function uniUlkeKonum( universite: string, il: string | null, ): UlkeKonum | null { const ad = universite .replace(/\s*\([^)]*\)\s*$/, "") .trim() .toLocaleUpperCase("tr-TR"); if (ad in UNI_DUZELTME) { const anahtar = UNI_DUZELTME[ad]; return anahtar === null ? null : sehirdenKonum(anahtar); } if (!il || !YURTDISI_IL.has(il)) return null; if (il in SEHIRLER) return sehirdenKonum(il as keyof typeof SEHIRLER); // il "KIBRIS": ülke bilinir, şehir bilinmez — haritayı işaretsiz göster const harita = ULKE_HARITALARI.kktc; return { ulke: "kktc", ulkeAd: harita.ad, iso: ULKE_ISO.kktc, harita, sehir: null, }; }