العمل مع Markdown في C# (.NET): أفضل المكتبات وأمثلة الاستخدام
Markdown هي لغة ترميز خفيفة الوزن تسمح بتنسيق النص باستخدام رموز بسيطة. تُستخدم على نطاق واسع لكتابة التوثيق وملفات README والمشاركات في المدونات والرسائل في المنتديات. في النظام البيئي لـ C# (.NET)، توجد عدة مكتبات قوية لتحليل وتحويل وإنشاء Markdown. في هذه المقالة، سنستعرض الأدوات الرئيسية ونوضح كيفية العمل بها.
المكتبات الشائعة للعمل مع Markdown في C#
الحلول الأكثر طلبًا في .NET:
- Markdig — مكتبة حديثة وسريعة ومتوافقة تمامًا مع مواصفات CommonMark. تدعم الإضافات (الجداول، الشطب، الرموز التعبيرية، الرسوم البيانية وغيرها).
- MarkdownSharp — محلل خفيف الوزن من Stack Overflow. بسيط، لكنه لا يدعم CommonMark والعديد من الإضافات.
- CommonMark.NET — التنفيذ الرسمي لمواصفات CommonMark. مناسب تمامًا للتوافق الصارم.
في هذا الدليل، سنركز على Markdig، لأنه المعيار الفعلي لمشاريع .NET الحديثة.
تثبيت Markdig
أضف الحزمة عبر NuGet Package Manager أو .NET CLI:
dotnet add package Markdigأو عبر Package Manager Console:
Install-Package Markdigالاستخدام الأساسي: تحويل Markdown إلى HTML
أبسط سيناريو هو تحويل سلسلة Markdown إلى HTML. يقوم Markdig بذلك في سطر واحد:
using Markdig;
string markdown = "# عنوان 1
هذا **نص عريض** و*مائل*.
- عنصر قائمة 1- عنصر قائمة 2";
string html = Markdown.ToHtml(markdown);
Console.WriteLine(html);النتيجة:
<h1>عنوان 1</h1><p>هذا <strong>نص عريض</strong> و<em>مائل</em>.</p><ul><li>عنصر قائمة 1</li><li>عنصر قائمة 2</li></ul>العمل مع إضافات Markdig
يدعم Markdig العديد من الإضافات. لاستخدامها، تحتاج إلى إنشاء pipeline:
using Markdig;using Markdig.Extensions.Tables;
var pipeline = new MarkdownPipelineBuilder() .UseAdvancedExtensions() // يشمل جميع الإضافات الأساسية .Build();
string markdown = "| عنوان 1 | عنوان 2 ||-------------|-------------|| خلية 1 | خلية 2 |";
string html = Markdown.ToHtml(markdown, pipeline);
Console.WriteLine(html);سينشئ هذا الكود جدول HTML. يمكنك تفعيل إضافات فردية: .UseTables()، .UseEmojiAndSmiley()، .UseTaskLists() وغيرها.
تحويل HTML مرة أخرى إلى Markdown
التحويل العكسي (HTML → Markdown) غير مضمن في التوزيعة القياسية لـ Markdig، ولكن يمكنك استخدام مكتبة ReverseMarkdown:
dotnet add package ReverseMarkdownusing ReverseMarkdown;
var converter = new Converter();string html = "<h1>مرحبًا، أيها العالم!</h1><p>هذا <strong>مهم</strong></p>";string markdown = converter.Convert(html);
Console.WriteLine(markdown);العمل مع ملفات Markdown
غالبًا ما يتم تخزين Markdown في ملفات. مثال على القراءة والتحويل:
using Markdig;
string filePath = "document.md";string markdownContent = File.ReadAllText(filePath);string htmlContent = Markdown.ToHtml(markdownContent);
File.WriteAllText("output.html", htmlContent);إنشاء HTML موسع باستخدام pipeline مخصص
يمكنك ضبط pipeline بدقة لمهام محددة:
var pipeline = new MarkdownPipelineBuilder() أيضاً في المكتبة
توليد PDF في Go: نظرة عامة على المكتبات ودليل عملي
توليد PDF في Java: نظرة عامة على مكتبات iText، Apache PDFBox، OpenPDF
التعلم الآلي بلغة Java: نظرة عامة على المكتبات لتطوير النماذج