"""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}")