UNPKG

quran-meta

Version:

Library with meta data and functionality related to Holy Quran

62 lines (61 loc) 2.19 kB
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; }