src/corpus/domain/provenance.ts
export const Provenances = {
'Standard Text': { name: 'Standard Text', abbreviation: 'Std', parent: null },
Assyria: { name: 'Assyria', abbreviation: 'Assa', parent: null },
Aššur: { name: 'Aššur', abbreviation: 'Ašš', parent: 'Assyria' },
'Dūr-Katlimmu': {
name: 'Dūr-Katlimmu',
abbreviation: 'Dka',
parent: 'Assyria',
},
Guzana: { name: 'Guzana', abbreviation: 'Guz', parent: 'Assyria' },
Ḫarrān: { name: 'Ḫarrān', abbreviation: 'Har', parent: 'Assyria' },
Ḫuzirina: { name: 'Ḫuzirina', abbreviation: 'Huz', parent: 'Assyria' },
'Imgur-Enlil': {
name: 'Imgur-Enlil',
abbreviation: 'Img',
parent: 'Assyria',
},
Kalḫu: { name: 'Kalḫu', abbreviation: 'Kal', parent: 'Assyria' },
'Kār-Tukulti-Ninurta': {
name: 'Kār-Tukulti-Ninurta',
abbreviation: 'Ktn',
parent: 'Assyria',
},
Khorsabad: { name: 'Khorsabad', abbreviation: 'Kho', parent: 'Assyria' },
Nineveh: { name: 'Nineveh', abbreviation: 'Nin', parent: 'Assyria' },
'Šubat-Enlil': {
name: 'Šubat-Enlil',
abbreviation: 'Šub',
parent: 'Assyria',
},
Tarbiṣu: { name: 'Tarbiṣu', abbreviation: 'Tar', parent: 'Assyria' },
Babylonia: { name: 'Babylonia', abbreviation: 'Baba', parent: null },
Adab: { name: 'Adab', abbreviation: 'Adb', parent: 'Babylonia' },
Babylon: { name: 'Babylon', abbreviation: 'Bab', parent: 'Babylonia' },
'Bad-Tibira': {
name: 'Bad-Tibira',
abbreviation: 'Btb',
parent: 'Babylonia',
},
Borsippa: { name: 'Borsippa', abbreviation: 'Bor', parent: 'Babylonia' },
Cutha: { name: 'Cutha', abbreviation: 'Cut', parent: 'Babylonia' },
Dilbat: { name: 'Dilbat', abbreviation: 'Dil', parent: 'Babylonia' },
Diqdiqqah: { name: 'Diqdiqqah', abbreviation: 'Diqd', parent: 'Babylonia' },
'Dūr-Kurigalzu': {
name: 'Dūr-Kurigalzu',
abbreviation: 'Dku',
parent: 'Babylonia',
},
Eridu: { name: 'Eridu', abbreviation: 'Eri', parent: 'Babylonia' },
Ešnunna: { name: 'Ešnunna', abbreviation: 'Ešn', parent: 'Babylonia' },
Garšana: { name: 'Garšana', abbreviation: 'Gar', parent: 'Babylonia' },
Girsu: { name: 'Girsu', abbreviation: 'Gir', parent: 'Babylonia' },
Ḫursagkalama: {
name: 'Ḫursagkalama',
abbreviation: 'Hur',
parent: 'Babylonia',
},
Irisagrig: { name: 'Irisagrig', abbreviation: 'Irs', parent: 'Babylonia' },
'Ishān Miziyad': {
name: 'Ishān Miziyad',
abbreviation: 'Miz',
parent: 'Babylonia',
},
Isin: { name: 'Isin', abbreviation: 'Isn', parent: 'Babylonia' },
'Ishān Hāfudh': {
name: 'Ishān Hāfudh',
abbreviation: 'Haf',
parent: 'Babylonia',
},
'Jamdat Naṣr': {
name: 'Jamdat Naṣr',
abbreviation: 'Nasr',
parent: 'Babylonia',
},
Kisurra: { name: 'Kisurra', abbreviation: 'Ksr', parent: 'Babylonia' },
Kiš: { name: 'Kiš', abbreviation: 'Kiš', parent: 'Babylonia' },
Kutalla: { name: 'Kutalla', abbreviation: 'Kut', parent: 'Babylonia' },
Lagaš: { name: 'Lagaš', abbreviation: 'Lag', parent: 'Babylonia' },
Larak: { name: 'Larak', abbreviation: 'Lrk', parent: 'Babylonia' },
Larsa: { name: 'Larsa', abbreviation: 'Lar', parent: 'Babylonia' },
Malgium: { name: 'Malgium', abbreviation: 'Mal', parent: 'Babylonia' },
Marad: { name: 'Marad', abbreviation: 'Mrd', parent: 'Babylonia' },
'Maškan-šāpir': {
name: 'Maškan-šāpir',
abbreviation: 'Maš',
parent: 'Babylonia',
},
Meturan: { name: 'Meturan', abbreviation: 'Met', parent: 'Babylonia' },
'Meturan (Tell al-Sib)': {
name: 'Meturan (Tell al-Sib)',
abbreviation: 'MetS',
parent: 'Babylonia',
},
Nērebtum: { name: 'Nērebtum', abbreviation: 'Nēr', parent: 'Babylonia' },
Nigin: { name: 'Nigin', abbreviation: 'Nig', parent: 'Babylonia' },
Nippur: { name: 'Nippur', abbreviation: 'Nip', parent: 'Babylonia' },
'Pī-Kasî': { name: 'Pī-Kasî', abbreviation: 'Pik', parent: 'Babylonia' },
'Puzriš-Dagān': {
name: 'Puzriš-Dagān',
abbreviation: 'Puz',
parent: 'Babylonia',
},
Sippar: { name: 'Sippar', abbreviation: 'Sip', parent: 'Babylonia' },
'Sippar-Amnānum': {
name: 'Sippar-Amnānum',
abbreviation: 'Sipam',
parent: 'Babylonia',
},
Sulaiymah: { name: 'Sulaiymah', abbreviation: 'Sul', parent: 'Babylonia' },
Šaduppûm: { name: 'Šaduppûm', abbreviation: 'Šad', parent: 'Babylonia' },
Šaḫrīnu: { name: 'Šaḫrīnu', abbreviation: 'Šah', parent: 'Babylonia' },
Šuruppak: { name: 'Šuruppak', abbreviation: 'Šur', parent: 'Babylonia' },
'Tall Abū Ṣālabīkh': {
name: 'Tall Abū Ṣālabīkh',
abbreviation: 'Abs',
parent: 'Babylonia',
},
'Tall Ajrab': {
name: 'Tall Ajrab',
abbreviation: 'Ajr',
parent: 'Babylonia',
},
'Tall Imlīḥiyah': {
name: 'Tall Imlīḥiyah',
abbreviation: 'Iml',
parent: 'Babylonia',
},
'Tall Jidar': {
name: 'Tall Jidar',
abbreviation: 'Jid',
parent: 'Babylonia',
},
'Tall Khaibar': {
name: 'Tall Khaibar',
abbreviation: 'Kha',
parent: 'Babylonia',
},
'Tall al-Laḥam': {
name: 'Tall al-Laḥam',
abbreviation: 'Lah',
parent: 'Babylonia',
},
'Tall Muḥamad': {
name: 'Tall Muḥamad',
abbreviation: 'Muh',
parent: 'Babylonia',
},
'Tall al-ʻUbaīd': {
name: 'Tall al-ʻUbaīd',
abbreviation: 'Ubd',
parent: 'Babylonia',
},
'Tall Umm al-ʻAjarib': {
name: 'Tall Umm al-ʻAjarib',
abbreviation: 'Uaaj',
parent: 'Babylonia',
},
'Tall ʻUqair': {
name: 'Tall ʻUqair',
abbreviation: 'Uqa',
parent: 'Babylonia',
},
'Tulūl al-Baqarāt': {
name: 'Tulūl al-Baqarāt',
abbreviation: 'Baq',
parent: 'Babylonia',
},
'Tulūl Khaṭāb': {
name: 'Tulūl Khaṭāb',
abbreviation: 'Khat',
parent: 'Babylonia',
},
Tummal: { name: 'Tummal', abbreviation: 'Tum', parent: 'Babylonia' },
Tutub: { name: 'Tutub', abbreviation: 'Ttb', parent: 'Babylonia' },
Umma: { name: 'Umma', abbreviation: 'Umm', parent: 'Babylonia' },
'Umm al-Ḥafriyāt': {
name: 'Umm al-Ḥafriyāt',
abbreviation: 'Hafr',
parent: 'Babylonia',
},
'Umm al-Wawiya': {
name: 'Umm al-Wawiya',
abbreviation: 'Waw',
parent: 'Babylonia',
},
Ur: { name: 'Ur', abbreviation: 'Ur', parent: 'Babylonia' },
Uruk: { name: 'Uruk', abbreviation: 'Urk', parent: 'Babylonia' },
Yelkhi: { name: 'Yelkhi', abbreviation: 'Ylk', parent: 'Babylonia' },
Zabalam: { name: 'Zabalam', abbreviation: 'Zab', parent: 'Babylonia' },
Zaralulu: { name: 'Zaralulu', abbreviation: 'Zar', parent: 'Babylonia' },
Periphery: { name: 'Periphery', abbreviation: '', parent: null },
Alalakh: { name: 'Alalakh', abbreviation: 'Ala', parent: 'Periphery' },
'Tell el-Amarna': {
name: 'Tell el-Amarna',
abbreviation: 'Ama',
parent: 'Periphery',
},
'‘Anah': { name: '‘Anah', abbreviation: 'Anh', parent: 'Periphery' },
Anšan: { name: 'Anšan', abbreviation: 'Anš', parent: 'Periphery' },
'Bakr Āwā': { name: 'Bakr Āwā', abbreviation: 'Bakr', parent: 'Periphery' },
Bārah: { name: 'Bārah', abbreviation: 'Bar', parent: 'Periphery' },
Bitwātā: { name: 'Bitwātā', abbreviation: 'Bitw', parent: 'Periphery' },
Dēr: { name: 'Dēr', abbreviation: 'Der', parent: 'Periphery' },
Dugirdkhan: { name: 'Dugirdkhan', abbreviation: 'Dgr', parent: 'Periphery' },
'Dūr-Untaš': { name: 'Dūr-Untaš', abbreviation: 'Dun', parent: 'Periphery' },
Ebla: { name: 'Ebla', abbreviation: 'Ebl', parent: 'Periphery' },
Elam: { name: 'Elam', abbreviation: 'Elam', parent: 'Periphery' },
Emar: { name: 'Emar', abbreviation: 'Emr', parent: 'Periphery' },
'Glay‘a': { name: 'Glay‘a', abbreviation: 'Gla', parent: 'Periphery' },
Hamath: { name: 'Hamath', abbreviation: 'Ham', parent: 'Periphery' },
Ḫattuša: { name: 'Ḫattuša', abbreviation: 'Hat', parent: 'Periphery' },
Kaneš: { name: 'Kaneš', abbreviation: 'Kan', parent: 'Periphery' },
Karkemiš: { name: 'Karkemiš', abbreviation: 'Kar', parent: 'Periphery' },
Kimūnah: { name: 'Kimūnah', abbreviation: 'Kmn', parent: 'Periphery' },
Mardaman: { name: 'Mardaman', abbreviation: 'Mard', parent: 'Periphery' },
Mari: { name: 'Mari', abbreviation: 'Mar', parent: 'Periphery' },
Megiddo: { name: 'Megiddo', abbreviation: 'Meg', parent: 'Periphery' },
'Mila Mergi': {
name: 'Mila Mergi',
abbreviation: 'Milm',
parent: 'Periphery',
},
Nuzi: { name: 'Nuzi', abbreviation: 'Nuzi', parent: 'Periphery' },
Pašime: { name: 'Pašime', abbreviation: 'Paš', parent: 'Periphery' },
Persepolis: { name: 'Persepolis', abbreviation: 'Per', parent: 'Periphery' },
Qatara: { name: 'Qatara', abbreviation: 'Qat', parent: 'Periphery' },
Qaṭnā: { name: 'Qaṭnā', abbreviation: 'Qaṭ', parent: 'Periphery' },
'Sur Jar‘a': { name: 'Sur Jar‘a', abbreviation: 'Surj', parent: 'Periphery' },
Susa: { name: 'Susa', abbreviation: 'Sus', parent: 'Periphery' },
Shīshīn: { name: 'Shīshīn', abbreviation: 'Shn', parent: 'Periphery' },
Šušarra: { name: 'Šušarra', abbreviation: 'Šuš', parent: 'Periphery' },
'Tall Bāz Musiyān': {
name: 'Tall Bāz Musiyān',
abbreviation: 'Bazm',
parent: 'Periphery',
},
'Tall al-Fakhar': {
name: 'Tall al-Fakhar',
abbreviation: 'Fakh',
parent: 'Periphery',
},
'Tall Ghaḍaiyrīfah': {
name: 'Tall Ghaḍaiyrīfah',
abbreviation: 'Ghad',
parent: 'Periphery',
},
'Tall al-Hawa': {
name: 'Tall al-Hawa',
abbreviation: 'Haw',
parent: 'Periphery',
},
'Tall Ibrāhīm Bayis': {
name: 'Tall Ibrāhīm Bayis',
abbreviation: 'Iba',
parent: 'Periphery',
},
'Tepe Gotvand': {
name: 'Tepe Gotvand',
abbreviation: 'Tgo',
parent: 'Periphery',
},
Terqa: { name: 'Terqa', abbreviation: 'Ter', parent: 'Periphery' },
Tikrīt: { name: 'Tikrīt', abbreviation: 'Tikr', parent: 'Periphery' },
Tuttul: { name: 'Tuttul', abbreviation: 'Ttl', parent: 'Periphery' },
Ugarit: { name: 'Ugarit', abbreviation: 'Uga', parent: 'Periphery' },
Zawiyah: { name: 'Zawiyah', abbreviation: 'Zaw', parent: 'Periphery' },
Uncertain: { name: 'Uncertain', abbreviation: 'Unc', parent: null },
} as const
export type Provenance = typeof Provenances[keyof typeof Provenances]
export const provenances: readonly Provenance[] = Object.values(Provenances)
export function compareStandardText(
first: Provenance,
second: Provenance
): number {
if (first === second) {
return 0
} else if (first === Provenances['Standard Text']) {
return -1
} else if (second === Provenances['Standard Text']) {
return 1
} else {
return 0
}
}
export function compareAssyriaAndBabylonia(
first: Provenance,
second: Provenance
): number {
function isCity(provenance: Provenance): boolean {
const nonCities: Provenance[] = [
Provenances['Standard Text'],
Provenances.Assyria,
Provenances.Babylonia,
]
return !nonCities.includes(provenance)
}
if (isCity(first) && isCity(second)) {
return 0
} else if (isCity(first)) {
return 1
} else if (isCity(second)) {
return -1
} else {
return compareName(first, second)
}
}
export function compareName(first: Provenance, second: Provenance): number {
return first.name.localeCompare(second.name)
}