Update tajweed_rules.py

هذا الالتزام موجود في:
2026-08-05 10:31:45 +00:00
الأصل 481b3891bd
التزام b7502247c0

عرض الملف

@@ -1,72 +1,11 @@
"""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}")
RULES={
'\u0627\u0644\u0625\u0638\u0647\u0627\u0631 (Izhar)':'Clear noon at throat letters (\u0621 \u0647\u0640 \u0639 \u062d \u063a \u062e)',
'\u0627\u0644\u0625\u062f\u063a\u0627\u0645 (Idgham)':'Merge noon into (\u064a \u0631 \u0645 \u0644 \u0648 \u0646)',
'\u0627\u0644\u0625\u0642\u0644\u0627\u0628 (Iqlab)':'Change noon to meem before \u0628',
'\u0627\u0644\u0625\u062e\u0641\u0627\u0621 (Ikhfa)':'Hide noon at remaining letters',
'\u0627\u0644\u0645\u062f \u0627\u0644\u0637\u0628\u064a\u0639\u064a (Madd Tabii)':'Natural 2 counts',
'\u0627\u0644\u0645\u062f \u0627\u0644\u0645\u062a\u0635\u0644 (Muttasil)':'Connected 4-5 counts',
'\u0627\u0644\u0645\u062f \u0627\u0644\u0645\u0646\u0641\u0635\u0644 (Munfasil)':'Separated 4-5 counts',
'\u0627\u0644\u0645\u062f \u0627\u0644\u0644\u0627\u0632\u0645 (Lazim)':'Compulsory 6 counts'}
if __name__=='__main__':
for n,d in RULES.items(): print(f'{n}: {d}')