Skip to content

الفصل 43: بناء مكتبة

مقدمة

في هذا الفصل سنبني مكتبة كاملة قابلة للنشر والاستخدام.

مشروع: مكتبة التحقق

بنية المشروع

تحقق/
├── حزمة.ص
├── مصدر/
│   ├── رئيسي.ص
│   ├── نصوص.ص
│   ├── أرقام.ص
│   └── بيانات.ص
└── اختبارات/
    └── اختبار_الكل.ص

الملف الرئيسي

sad
# مصدر/رئيسي.ص
استورد {تحقق_بريد، تحقق_هاتف} من "./نصوص"
استورد {تحقق_مدى، تحقق_موجب} من "./أرقام"
استورد {تحقق_غير_فارغ} من "./بيانات"

صدّر تحقق_بريد
صدّر تحقق_هاتف
صدّر تحقق_مدى
صدّر تحقق_موجب
صدّر تحقق_غير_فارغ

ملف النصوص

sad
# مصدر/نصوص.ص

## التحقق من صحة البريد الإلكتروني
صدّر دالة تحقق_بريد(بريد)
    إذا (نوع(بريد) != "نص")
        ارجع {"صالح": خطأ، "رسالة": "يجب أن يكون نصاً"}
    نهاية
    إذا (ليس يحتوي(بريد، "@"))
        ارجع {"صالح": خطأ، "رسالة": "يجب أن يحتوي @"}
    نهاية
    إذا (طول(بريد) < 5)
        ارجع {"صالح": خطأ، "رسالة": "قصير جداً"}
    نهاية
    ارجع {"صالح": صحيح، "رسالة": ""}
نهاية

## التحقق من رقم الهاتف
صدّر دالة تحقق_هاتف(هاتف)
    إذا (طول(هاتف) < 10 أو طول(هاتف) > 15)
        ارجع {"صالح": خطأ، "رسالة": "طول غير صالح"}
    نهاية
    ارجع {"صالح": صحيح، "رسالة": ""}
نهاية

ملف الأرقام

sad
# مصدر/أرقام.ص

## تحقق من أن الرقم في نطاق معين
صدّر دالة تحقق_مدى(قيمة، أقل، أكثر)
    إذا (قيمة < أقل أو قيمة > أكثر)
        ارجع {"صالح": خطأ، "رسالة": "خارج النطاق"}
    نهاية
    ارجع {"صالح": صحيح، "رسالة": ""}
نهاية

## تحقق من أن الرقم موجب
صدّر دالة تحقق_موجب(قيمة)
    إذا (قيمة <= 0)
        ارجع {"صالح": خطأ، "رسالة": "يجب أن يكون موجباً"}
    نهاية
    ارجع {"صالح": صحيح، "رسالة": ""}
نهاية

الاختبارات

sad
# اختبارات/اختبار_الكل.ص
استورد {تحقق_بريد} من "../مصدر/نصوص"

اختبر "بريد صالح"
    متغير ن = تحقق_بريد("user@example.com")
    أكد(ن["صالح"] == صحيح)
نهاية

اختبر "بريد بدون @"
    متغير ن = تحقق_بريد("invalid")
    أكد(ن["صالح"] == خطأ)
نهاية

نشر المكتبة

bash
sad-pkg انشر

تمرين

وسع المكتبة بإضافة:

  • تحقق من رقم الهوية
  • تحقق من رابط URL
  • تحقق من تاريخ

مُرخَّص بموجب رخصة MIT