الملفات
tajweed-assistant/tajweed_rules.py

73 أسطر
3.4 KiB
Python
خام اللوم التاريخ

هذا الملف يحتوي على أحرف Unicode غامضة

هذا الملف يحتوي على أحرف Unicode قد تُخلط مع أحرف أخرى. إذا كنت تعتقد أن هذا مقصود، يمكنك تجاهل هذا التحذير بأمان. استخدم زر الهروب للكشف عنها.

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