validateSurahStructure static method
Validate individual surah structure
Implementation
static void validateSurahStructure(
Map<String, dynamic> surah, int expectedId) {
final requiredFields = [
'id',
'name',
'englishName',
'revelationType',
'numberOfAyahs',
'revelationOrder',
'ayat'
];
for (final field in requiredFields) {
if (!surah.containsKey(field)) {
throw ArgumentError('Surah missing required field: $field');
}
}
// Validate specific fields
final id = surah['id'];
if (id != expectedId) {
throw ArgumentError('Expected surah ID $expectedId, got: $id');
}
validateRevelationType(surah['revelationType']);
validateRevelationOrder(surah['revelationOrder']);
final numberOfAyahs = surah['numberOfAyahs'];
validateNumberOfAyahs(numberOfAyahs);
final ayat = surah['ayat'];
if (ayat is! List) {
throw ArgumentError('ayat must be a list');
}
if (ayat.length != numberOfAyahs) {
throw ArgumentError(
'ayat list length (${ayat.length}) must match numberOfAyahs ($numberOfAyahs)');
}
// Validate each ayah
for (int i = 0; i < ayat.length; i++) {
final ayah = ayat[i];
if (ayah is! Map<String, dynamic>) {
throw ArgumentError('Ayah at index $i must be a map');
}
validateAyahStructure(ayah, i + 1);
}
}