quran-meta
Version:
Library with meta data and functionality related to Holy Quran
62 lines (61 loc) • 2.19 kB
JavaScript
import { getAyahMeta } from "./getAyahMeta.mjs";
import { HizbQuarterList } from "./lists/hizbQuarterList.mjs";
import { JuzList } from "./lists/juzList.mjs";
import { PageList } from "./lists/pageList.mjs";
import { RukuList } from "./lists/rukuList.mjs";
import { SajdaList } from "./lists/sajdaList.mjs";
import { SurahList } from "./lists/surahList.mjs";
import { checkValidSurah } from "./validation.mjs";
export function getAyahMetasForSurah(surahNumber) {
checkValidSurah(surahNumber);
const [
startAyahId,
ayahCount
// , surahOrder, rukuCount, name, isMeccan, page
] = SurahList[surahNumber];
const endAyahId = startAyahId + ayahCount - 1;
const result = [];
let meta = getAyahMeta(startAyahId);
for (let ayahId = startAyahId; ayahId <= endAyahId; ayahId++) {
if (ayahId > startAyahId) {
meta = structuredClone(meta);
meta.ayah += 1;
meta.isStartOfSurah = false;
meta.isEndOfSurah = endAyahId === ayahId;
if (PageList[meta.page + 1] === ayahId) {
meta.page += 1;
meta.isStartOfPage = true;
} else {
meta.isStartOfPage = false;
}
meta.isEndOfPage = PageList[meta.page + 1] === ayahId + 1;
if (RukuList[meta.ruku + 1] === ayahId) {
meta.ruku += 1;
meta.isStartOfRuku = true;
} else {
meta.isStartOfRuku = false;
}
meta.isEndOfRuku = RukuList[meta.ruku + 1] === ayahId + 1;
meta.isEndOfJuz = JuzList[meta.juz + 1] === ayahId + 1;
if (JuzList[meta.juz + 1] === ayahId) {
meta.juz += 1;
meta.hizbId += 1;
meta.isStartOfJuz = true;
} else {
meta.isStartOfJuz = false;
}
meta.isEndOfQuarter = HizbQuarterList[meta.rubAlHizbId + 1] === ayahId + 1;
if (HizbQuarterList[meta.rubAlHizbId + 1] === ayahId) {
meta.rubAlHizbId += 1;
meta.juzPart = meta.isStartOfJuz ? 1 : meta.juzPart + 1;
meta.isStartOfQuarter = true;
if (meta.juzPart === 5) meta.hizbId += 1;
} else {
meta.isStartOfQuarter = false;
}
meta.isSajdahAyah = SajdaList.some((x) => x[0] === ayahId);
}
result.push(meta);
}
return result;
}