diff --git a/tajweed_rules.py b/tajweed_rules.py new file mode 100644 index 0000000..d206fbb --- /dev/null +++ b/tajweed_rules.py @@ -0,0 +1,72 @@ +"""Tajweed Rules - أحكام التجويد""" + +class TajweedRule: + def __init__(self, name_ar: str, name_en: str, description: str, example: str): + self.name_ar = name_ar + self.name_en = name_en + self.description = description + self.example = example + +# أحكام النون الساكنة والتنوين +NOON_SAKINAH_RULES = [ + TajweedRule( + "الإظهار", "Al-Izhar", + "إظهار النون الساكنة أو التنوين عند حروف الحلق (ء هـ ع ح غ خ)", + "مِنْ أَجْلِ - عَلِيمٌ حَكِيمٌ" + ), + TajweedRule( + "الإدغام", "Al-Idgham", + "إدغام النون الساكنة أو التنوين في حروف (ي ر م ل و ن)", + "مِنْ رَبِّهِمْ - خَيْرٌ لَكُمْ" + ), + TajweedRule( + "الإقلاب", "Al-Iqlab", + "قلب النون الساكنة أو التنوين ميماً عند الباء", + "مِنْ بَعْدِ - سَمِيعٌ بَصِيرٌ" + ), + TajweedRule( + "الإخفاء", "Al-Ikhfa", + "إخفاء النون الساكنة أو التنوين عند باقي الحروف", + "مِنْ دُونِ - كِتَابٌ كَرِيمٌ" + ), +] + +# أحكام الميم الساكنة +MEEM_SAKINAH_RULES = [ + TajweedRule("الإخفاء الشفوي", "Al-Ikhfa Ash-Shafawi", "إخفاء الميم الساكنة عند الباء", "عَلَيْهِمْ بِنَاءً"), + TajweedRule("الإدغام الشفوي", "Al-Idgham Ash-Shafawi", "إدغام الميم الساكنة في ميم مثلها", "لَهُمْ مَا"), + TajweedRule("الإظهار الشفوي", "Al-Izhar Ash-Shafawi", "إظهار الميم الساكنة عند باقي الحروف", "عَلَيْهِمْ وَلَا"), +] + +# المدود +MUDOOD = [ + TajweedRule("المد الطبيعي", "Al-Madd At-Tabi'i", "يمد بمقدار حركتين", "قَالَ - نُوحِيهَا"), + TajweedRule("المد المتصل", "Al-Madd Al-Muttasil", "يمد ٤-٥ حركات إذا جاء بعد حرف المد همزة", "جَاءَ - سُوءٌ"), + TajweedRule("المد المنفصل", "Al-Madd Al-Munfasil", "يمد ٤-٥ حركات إذا جاء الهمز منفصلاً", "إِنَّا أَنْزَلْنَاهُ"), + TajweedRule("المد اللازم", "Al-Madd Al-Lazim", "يمد ٦ حركات إذا جاء بعد حرف المد سكون أصلي", "الطَّامَّةُ"), +] + +def check_noon_sakinah(word_before: str, word_after: str) -> list: + """فحص قاعدة النون الساكنة بين كلمتين""" + throat_letters = {"ء", "هـ", "ه", "ع", "ح", "غ", "خ"} + idgham_letters = {"ي", "ر", "م", "ل", "و", "ن"} + + if word_before.endswith("ن") and word_after: + first_letter = word_after[0] + if first_letter in throat_letters: + return ["الإظهار"] + elif first_letter in idgham_letters: + return ["الإدغام"] + elif first_letter == "ب": + return ["الإقلاب"] + else: + return ["الإخفاء"] + return [] + +if __name__ == "__main__": + print("📖 أحكام النون الساكنة والتنوين:") + for rule in NOON_SAKINAH_RULES: + print(f" {rule.name_ar}: {rule.example}") + print(f"\n📖 أحكام المدود:") + for rule in MUDOOD: + print(f" {rule.name_ar}: {rule.example}")