quran-meta
Version:
Library with meta data and functionality related to Holy Quran
162 lines (103 loc) • 3.36 kB
JavaScript
const require_const = require('./const.cjs');
const require_getAyahCountInSurah = require('./getAyahCountInSurah.cjs');
//#region src/typeGuards.ts
/**
* Checks if the given value is a valid AyahId.
*
* @param x - The value to check.
* @returns True if the value is a valid AyahId, otherwise false.
*/
function isValidAyahId(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numAyahs;
}
/**
* Checks if the given value is a valid Ayah number.
*
* @param x - The value to check.
* @returns True if the value is a valid Ayah number, otherwise false.
*/
function isValidAyahNo(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.maxAyahsInSurah;
}
/**
* Checks if the given value is a valid Surah number.
*
* @param x - The value to check.
* @returns `true` if the value is a valid Surah number, otherwise `false`.
*/
function isValidSurah(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numSurahs;
}
/**
* Type guard function that checks if a tuple of two numbers represents a valid Surah and Ayah combination.
*
* @param x - A tuple containing [surahNumber, ayahNumber]
* @returns True if the tuple represents a valid Surah-Ayah combination, false otherwise
*
* @example
* ```ts
* isValidSurahAyah([1, 7]) // true - Al-Fatiha has 7 ayahs
* isValidSurahAyah([1, 8]) // false - Al-Fatiha only has 7 ayahs
* isValidSurahAyah([115, 1]) // false - there are only 114 surahs
* ```
*/
function isValidSurahAyah(x) {
const [surah, ayah] = x;
if (!isValidSurah(surah)) return false;
return Number.isInteger(ayah) && ayah >= 1 && ayah <= require_getAyahCountInSurah.getAyahCountInSurah(surah);
}
/**
* Type guard that checks if a number is a valid Juz number
* @param x - The number to check
* @returns True if the number is an integer between 1 and the total number of Juzs (inclusive)
*/
function isValidJuz(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numJuzs;
}
/**
* Type guard to check if a number is a valid Quran page number
* @param x - The number to check
* @returns True if the number is an integer between 1 and the total number of pages (inclusive)
*/
function isValidPage(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numPages;
}
/**
* Type guard that checks if a value is a valid Ruku number
* @param x - The value to check
* @returns True if x is an integer between 1 and the total number of Rukus
* @example
* ```ts
* if (isValidRuku(5)) {
* // 5 is a valid Ruku number
* }
* ```
*/
function isValidRuku(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numRukus;
}
/**
* Type guard to check if a value is a valid Manzil number
*
* @param x - The value to check
* @returns True if the value is an integer between 1 and the total number of Manzils
*
* @example
* ```ts
* if (isValidManzil(3)) {
* // value is a valid Manzil number
* }
* ```
*/
function isValidManzil(x) {
return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numManzils;
}
//#endregion
exports.isValidAyahId = isValidAyahId;
exports.isValidAyahNo = isValidAyahNo;
exports.isValidJuz = isValidJuz;
exports.isValidManzil = isValidManzil;
exports.isValidPage = isValidPage;
exports.isValidRuku = isValidRuku;
exports.isValidSurah = isValidSurah;
exports.isValidSurahAyah = isValidSurahAyah;