کتابخانه متادیتای قرآن (metadata)
هدف این پکیج ارائه دادههایی پیرامونی در مورد قرآن است. مثلاً مشخصات کامل سورههای قرآن، صفحات، جزءها، سجدههای واجب و مستحب را میتوانید از طریق این کتابخانه به دست آورید.
این کتابخانه برای استفادهی عادی نیست
هدف این کتابخانه تأمین دادهها در سطح پایین است. برای تجربهی برنامهنویسی بهتر، در پروژههای خود بهتر است از @ghoran/entity به جای این پیکج استفاده کنید.
نصب
جهت نصب این کتابخانه از دستور زیر استفاده کنید:
npm i @ghoran/metadata
مشخّصات سورههای قرآن
با استفاده از surahList
میتوانید لیست کل سورههای قرآن را بگیرید.
import { surahList } from '@ghoran/metadata'
// مشخصات سوره بقره
console.log(surahList[1])
مقدار surahList
آرایهای دو بعدی از مشخصات سوره است. مشخصات سوره در قالب یک آرایهی چندتایی ارائه شده است که هر یک از اندیسهای آن نشاندهندهی چیز خاصی است.
مشخصات هر سوره یک آرایه است که خانههای آن به ترتیب نمایانگر این موارد است.
- اندیس اوّلین آیه
- تعداد آیات سوره
- ترتیب نزول
- تعداد رکوع سوره
- نام عربی سوره
- نام سوره به لاتین
- ترجمه انگلیسی نام سوره
- آیا سوره مدنی است؟
چرا مشخّصات سوره به جای آرایه، یک آبجکت جاوااسکریپتی ساده نیست؟
هدف این بوده که حجم فایل و دادهها کاهش پیدا کند. چرا که مخصوصا در کلاینت وب هرچه حجم دادهها زیادتر باشد بارگذاری برنامه را کندتر میکند. به همین دلیل بهتر است با آرایه کار میکردیم به جای آبجکت.
اگرچه در پکیج entity کلاسها و آبجکتهایی را برای راحت تر کار کردن با این دادهها برای شما تعبیه کرده ایم.
مشخّصات صفحات قرآن
با استفاده از pageList
میتوانید لیست کل صفحات قرآن را در قالب یک آرایه بگیرید.
اندیس آرایه شماره صفحه مورد نظر است، و خود محتوای هر خانه از آرایه در اصل اندیس آیهی اوّل آن در آرایهایست که از پکیج متن دریافت کرده اید.
import { pageList } from '@ghoran/metadata'
/** شماره صفحه مورد نظر */
const page = 2
/** اندیس اولین آیه صفحه مورد نظر */
const pageFirstAyah = JSON.stringify(pageList[page - 1])
/** اندیس اولین آیه صفحه بعدی */
const nextPageFirstAyah = JSON.stringify(pageList[page])
/** لیست آیات صفحه مورد نظر */
const ayatOfPage = quranText.slice(pageFirstAyah, nextPageFirstAyah)
مشخصات جزءهای قرآن
با استفاده از juzList
میتوانید لیست کل صفحات قرآن را در قالب یک آرایه بگیرید.
ساختار آرایه مشابه لیست صفحات است.
مشخصات ربع حزبهای قرآن
با استفاده از hizbQuarterList
میتوانید لیست کل صفحات قرآن را در قالب یک آرایه بگیرید.
ساختار آرایه مشابه لیست صفحات است.
مشخصات منزلهای قرآن
با استفاده از manzilList
میتوانید لیست کل صفحات قرآن را در قالب یک آرایه بگیرید.
ساختار آرایه مشابه لیست صفحات است.
مشخصات رکوعهای قرآن
با استفاده از rukuList
میتوانید لیست کل صفحات قرآن را در قالب یک آرایه بگیرید.
ساختار آرایه مشابه لیست صفحات است.
مشخصات سجدههای قرآن
این مشخّصات در دو قالب ارائه شده است. هم در قالب آرایه و هم آبجکت.
مشخصات سجدههای قرآن در قالب آرایه
در مدل آرایهای باید sajdahListBySurahNumber
را ایمپورت کنید که در قالب یک آرایه دوبعدی مشخصات سجدهها را بر میگرداند. خانههای این آرایه به ترتیب نشاندهندهی این موارد است:
- شماره سوره (برای رسیدن به اندیس سوره باید یکی از آن کم کنیم)
- شمارهی آیه در سوره
- آیا سجده واجب است؟
این آرایه به این شکل است
/** لیست آیات سجده دار */
export const sajdahListBySurahNumber: SajdahTuple[] = [
[7, 206, false],
[13, 15, false],
[16, 50, false],
[17, 109, false],
[19, 58, false],
[22, 18, false],
[22, 77, false],
[25, 60, false],
[27, 26, false],
[32, 15, true],
[38, 24, false],
[41, 38, true],
[53, 62, true],
[84, 21, false],
[96, 19, true],
]
مشخصات سجدههای قرآن در قالب آبجکت
در این روش باید sajdahMap
را از این پکیج ایمپورت کنید.
در این روش یک آبجکت داریم که در آن اندیس آیه به واجب بودن سجدهی آن نگاشت میکند. به این صورت که اگر اندیس یک آیه کلا در این آبجکت نبود یعنی آن آیه سجده دار نیست. اگر با مقدار true
وجود داشت یعنی آیه دارای سجدهی واجب است و اگر با مقدار false
وجود داشت یعنی آیه دارای سجدهی مستحب است.
دریافت مشخّصات تقسیمبندیها به تفکیک شماره سوره و آیه
تا اینجا دیدیم که تمام مواردی که جنبهی تقسیمبندی آیات را داشتند، مثل صفحه و جزء و... مبتنی بر اندیس آیه بودند.
اگر چه که توصیه نمیکنیم، ولی اگر به هر دلیلی ترجیح میدهید در پروژهی خود به جای اندیس آیه با شمارهی سوره و اینکه این آیه چندمین آیهی سوره است کار کنید، میتوانید به جای مواردی که بالاتر گفتیم این موارد را import کنید:
pageListBySurahNumber
juzListBySurahNumber
hizbQuarterListBySurahNumber
manzilListBySurahNumber
rukuListBySuarhNumber
همهی این موارد در قالب یک آرایهی دوبعدی هستند. هر کدام از آیتمها یک آرایهی دوتایی است که نشاندهندهی این دو است:
- شماره سوره (برای رسیدن به اندیس سوره باید یکی از آن کم کنیم)
- شمارهی آیه در سوره