فهرست مستندات پروژه
الگوریتمها و منابع
بررسی منبع الگوریتمها، پوشش تستها و محدودیتهای کاربردی.
الگوریتمها و منبع آنها
| بخش | پیادهسازی و منبع |
|---|---|
| GregorianCalendar | فرمول صحیح میلادی و JDN با تقسیم رو به پایین؛ در کد به Fliegel–Van Flandern نسبت داده شده و تغییر تاریخی تقویم ندارد |
| JalaliCalendar | محاسبه jalCal با نقاط تغییر، مطابق jalaali-js v1.2.8 که منبع اصلی آن بورکوفسکی است |
| HijriCivilCalendar | تقویم قمری محاسباتی ۳۰ ساله با سال 16 کبیسه و مبدا JDN 1948440؛ کد به کتاب Calendrical Calculations از Dershowitz و Reingold، ویرایش چهارم ۲۰۱۸، ارجاع میدهد |
| جدول قمری | طول ماهها و شروع سالهای 1300 تا 1600 قمری، تولیدشده از islamic-umalqura در ICU 78.2 |
| جدولهای زبان | نامها و داده زمان نسبی از ICU؛ نام فصلها جداگانه نوشته شدهاند و تست تطابق با ICU ندارند |
توضیح «بیرشک در برابر بورکوفسکی» در مستندات قبلی Daynum دقیق نبود: jalaali-js که به آن ارجاع داده شده، بورکوفسکی را منبع میداند. پیادهسازی و داده ICU هم با نسخه تغییر میکند؛ نام یک الگوریتم بهتنهایی همه اختلافهای fixture را توضیح نمیدهد. کامنتهای فعلی کد هنوز عبارت قبلی را دارند؛ روش واقعی تست در محدودیتهای شمسی آمده است. برای این مستندات هیچ الگوریتم اجرایی تغییر نکرده است.
روش بررسی درستی
تستهای unit، APIهای جداگانه را بررسی میکنند؛ تستهای مرزی سراغ کبیسه و مرز محدوده میروند؛ تستهای property با seed مشخص، رفتوبرگشت و محاسبات را میسنجند؛ تستهای conformance خروجی ذخیرهشده ICU را بدون نیاز به ext-intl در اجرا میخوانند. fixtureهای میلادی، شمسی و قمری محاسباتی بازه میلادی 1700 تا 2300 را دارند. fixtureهای امالقری فقط محدوده جدول همراه کتابخانه را پوشش میدهند، نه تمام آن بازه را.
مقایسه شمسی روش مشخصی برای بررسی اختلافهای شناختهشده دارد و تست برابری همیشگی با ICU نیست. fixtureهای نمایش فقط توکنهای منتخب قابل مقایسه را دارند؛ توکنهایی که معنای متفاوتی در ICU دارند با تست unit یا مقایسه PHP بررسی میشوند. fixtureهای زمان نسبی از Intl.RelativeTimeFormat در Node آمدهاند. CI معمولی بودجه کامل تست را اجرا میکند؛ CI مربوط به mutation از fixtureها و تکرارهای property نمونهبرداری میکند. fixtureها، تستهای conformance و CI را ببینید.
این تستها برای مدلهای مستندشده و بازههای بررسیشده شواهد میدهند؛ نه رتبهبندی سرعتاند، نه تضمین نجومی و نه اثبات کمدقتتر بودن کتابخانه دیگر. سازگاری خارج از نسخهها و محدودههای آزمایششده را از آنها نتیجه نگیرید.
محدودیتها
- سالهای مجاز ساخت تاریخ در معرفی آمدهاند. محاسبات سطح پایین JDN ممکن است از آنها خارج شوند.
- محاسبات و مقایسه محلی، برچسب منطقه زمانی و DST را نادیده میگیرند. تبدیل با PHP محدودیت دقت و ابهام دارد.
- ذخیره ثانیه کبیسه یا بخش کوچکتر از ثانیه، خواندن عبارت نسبی، تقویم تعطیلات، تقویم ژولیوسی و قمری رصدی ارائه نشدهاند.
- جدول زبان و قوانین منطقه زمانی به نسخه وابستهاند. خروجی منطقه زمانی به پایگاه داده PHP بستگی دارد؛ نامهای همراه کتابخانه هنگام اجرا به ICU نیاز ندارند.
مجوزها
مجوز پروژه Daynum، MIT است. jalaali-js با مجوز MIT منتشر میشود و داده و کد ICU اعلانهای Unicode/ICU را دارند. هنگام توزیع کد یا داده مشتقشده، اعلانهای مربوط به منبع را حفظ کنید؛ مجوز پروژه جای انتساب به منبع را نمیگیرد. منابع دانشگاهی الگوریتم را توضیح میدهند و مجوز عمومی کپی متن یا کد خود نیستند.
ابزار تولید جدول امالقری از ICU میخواند و مسیر اختیاری بررسی خارجی دارد؛ این صفحه ادعای تایید مستقل جدول را ندارد. بازسازی fixture و جدول کار نگهدارندگان است و از استفاده عادی برنامه جداست. مشارکت و نگهداری مستندات را ببینید.