إتقان قوائم ماركداون: معايير المسافة البادئة لـ CommonMark و GitHub Flavored Markdown (GFM)
الأساس الفني لتقديم قوائم ماركداون
أثبتت ماركداون مكانتها كلوغة توصيف قياسية لتوثيق البرمجيات الحديثة، ومستندات المواصفات الفنية، وقواعد المعرفة الشخصية، وتواصل المطورين. في حين أن القوائم المنقطة ذات المستوى الواحد (- عنصر) والقوائم المرقّمة (1. عنصر) تبدو بسيطة، فإن إنشاء مخططات مستندات متداخلة وعميقة متعددة المستويات يقدم تعقيدًا كبيرًا في التنسيق. تفرض المحللات المختلفة لـ Markdown—مثل CommonMark و GitHub Flavored Markdown (GFM) و Python-Markdown و Pandoc—قواعد صارمة ودقيقة بشأن اختيار رمز القائمة، ونسب التبويب إلى المسافات، والمسافة البادئة للكتل الفرعية.
عندما يتم لصق القوائم عبر محررين نصوص غير متجانسين (مثل VS Code أو Sublime Text أو Xcode أو Apple Notes أو Microsoft Word)، تحدث أخطاء مسافة بادئة غير مرئية. مسافة واحدة مفقودة في عنصر فرعي تجعل محلل Markdown يفسر العقدة التابعة المتداخلة كعنصر رئيسي في المستوى الأعلى أو ككتلة فقرة معزولة. يقضي منسق القوائم المتداخلة والمسافات البادئة من Utiliome على شذوذات التحليل هذه عن طريق تحليل شجرة البناء النحوي (AST) لنص الإدخال وإعادة إنشاء ماركداون قياسي ومتوافق مع المواصفات.
قواعد المسافة البادئة: إرشادات مسافتين مقابل 4 مسافات
واحدة من أكثر المناقشات تكرارًا في تصميم التوثيق الفني هي ما إذا كان يجب إزاحة القوائم الفرعية باستخدام مسافتين أو 4 مسافات لكل مستوى هرمي. يعتمد الاختيار على مواصفات محلل Markdown المستهدف:
قاعدة المسافة البادئة بمقدار مسافتين (معيار GFM و Prettier): في أنظمة التوثيق الحديثة عبر الويب مثل GitHub و Docusaurus و Nextra و Obsidian، تعتبر المسافتان لكل مستوى مسافة بادئة هما المعيار المعترف به. تقوم اتفاقية المسافتين بمحاذاة المحتوى التابع تحت بداية نص العنصر الأب:
- عنصر في المستوى الأعلى 1 - عنصر فرعي متداخل 1.1 - عنصر فرعي متداخل 1.2 - عنصر حفيد متداخل بعمق 1.2.1 - عنصر في المستوى الأعلى 2قاعدة المسافة البادئة بمقدار 4 مسافات (CommonMark الصارم و Python-Markdown): تتطلب تطبيقات CommonMark الصارمة إزاحة الكتل التابعة، ومقتطفات البرمجية، والقوائم المتداخلة داخل القوائم المرتبة بمقدار 4 مسافات (أو علامة تبويب واحدة كاملة) لضمان احتواء الكتلة الأصلية بشكل صحيح:
1. الخطوة المرقّمة الأولى في سير العمل - نقطة فرعية مرتبطة أ - نقطة فرعية مرتبطة ب 2. الخطوة المرقّمة الثانية في سير العملمصائد التبويب مقابل المسافة: إن خلط أحرف علامات التبويب المادية (
\t) مع أحرف المسافات ASCII (\x20) هو السبب الرئيسي لتعطل عرض توثيق Markdown. تترجم محركات عرض الويب علامات التبويب بشكل غير متسق (غالباً كـ 4 أو 8 أعمدة عرض)، مما يتسبب في قفز العناصر المتداخلة بصرياً خارج المحاذاة. يقوم Utiliome تلقائياً بتحويل جميع أحرف علامات التبويب إلى سلاسل مسافات موحدة وفقاً لتفضيلات التكوين الصريحة الخاصة بك.
توحيد رموز القوائم وتصحيح التسلسل المرقّم
تدعم ماركداون ثلاثة أحرف نقطية متميزة للقوائم غير المرتبة: الشرطات (-)، والنجمات (*)، وعلامات الزائد (+). في حين أن الثلاثة تنتج عناصر HTML قائمة غير مرتبة صالحة (<ul>)، فإن خلط أنواع الرموز داخل نفس المستند يخلق فوضى بصرية ويفشل في فحوصات الفرز التلقائي (مثل قاعدة markdownlint رقم MD004).
علاوة على ذلك، غالباً ما ينكسر ترقيم القوائم المرتبة أثناء التحرير التكراري. غالباً ما يلصق الكُتاب عناصر في منتصف تسلسلات مرقمة أو يعتمدون على بناء جملة الزيادة التلقائية 1.:
<!-- إدخال غير منسق / مكسور -->
* الميزة أ
- الميزة ب
+ الميزة ج
1. الخطوة الأولية
1. الخطوة الثانية (منسوخة من المسودة)
4. خطوة خارج الترتيب
يقوم منسق Utiliome بتوحيد جميع رموز القوائم غير المرتبة إلى حرفك الموحد المحدد (على سبيل المثال، توحيد كل عنصر إلى -) وإعادة ترقيم التسلسلات المرتبة بالتسلسل (1.، 2.، 3.) أو توحيدها إلى زيادات رقمية فريدة نظيفة (1.، 1.، 1.) بناءً على إرشادات نمط مراجعة الكود الخاصة بفريقك.