الفصل 43: بناء مكتبة
مقدمة
في هذا الفصل سنبني مكتبة كاملة قابلة للنشر والاستخدام.
مشروع: مكتبة التحقق
بنية المشروع
تحقق/
├── حزمة.ص
├── مصدر/
│ ├── رئيسي.ص
│ ├── نصوص.ص
│ ├── أرقام.ص
│ └── بيانات.ص
└── اختبارات/
└── اختبار_الكل.صالملف الرئيسي
sad
# مصدر/رئيسي.ص
استورد {تحقق_بريد، تحقق_هاتف} من "./نصوص"
استورد {تحقق_مدى، تحقق_موجب} من "./أرقام"
استورد {تحقق_غير_فارغ} من "./بيانات"
صدّر تحقق_بريد
صدّر تحقق_هاتف
صدّر تحقق_مدى
صدّر تحقق_موجب
صدّر تحقق_غير_فارغملف النصوص
sad
# مصدر/نصوص.ص
## التحقق من صحة البريد الإلكتروني
صدّر دالة تحقق_بريد(بريد)
إذا (نوع(بريد) != "نص")
ارجع {"صالح": خطأ، "رسالة": "يجب أن يكون نصاً"}
نهاية
إذا (ليس يحتوي(بريد، "@"))
ارجع {"صالح": خطأ، "رسالة": "يجب أن يحتوي @"}
نهاية
إذا (طول(بريد) < 5)
ارجع {"صالح": خطأ، "رسالة": "قصير جداً"}
نهاية
ارجع {"صالح": صحيح، "رسالة": ""}
نهاية
## التحقق من رقم الهاتف
صدّر دالة تحقق_هاتف(هاتف)
إذا (طول(هاتف) < 10 أو طول(هاتف) > 15)
ارجع {"صالح": خطأ، "رسالة": "طول غير صالح"}
نهاية
ارجع {"صالح": صحيح، "رسالة": ""}
نهايةملف الأرقام
sad
# مصدر/أرقام.ص
## تحقق من أن الرقم في نطاق معين
صدّر دالة تحقق_مدى(قيمة، أقل، أكثر)
إذا (قيمة < أقل أو قيمة > أكثر)
ارجع {"صالح": خطأ، "رسالة": "خارج النطاق"}
نهاية
ارجع {"صالح": صحيح، "رسالة": ""}
نهاية
## تحقق من أن الرقم موجب
صدّر دالة تحقق_موجب(قيمة)
إذا (قيمة <= 0)
ارجع {"صالح": خطأ، "رسالة": "يجب أن يكون موجباً"}
نهاية
ارجع {"صالح": صحيح، "رسالة": ""}
نهايةالاختبارات
sad
# اختبارات/اختبار_الكل.ص
استورد {تحقق_بريد} من "../مصدر/نصوص"
اختبر "بريد صالح"
متغير ن = تحقق_بريد("user@example.com")
أكد(ن["صالح"] == صحيح)
نهاية
اختبر "بريد بدون @"
متغير ن = تحقق_بريد("invalid")
أكد(ن["صالح"] == خطأ)
نهايةنشر المكتبة
bash
sad-pkg انشرتمرين
وسع المكتبة بإضافة:
- تحقق من رقم الهوية
- تحقق من رابط URL
- تحقق من تاريخ