flexmark-java هو تطبيق Java لمحلل CommonMark (المواصفات 0.28) باستخدام الكتل أولاً، بعد دمج بنية التحليل Markdown.
تتمثل نقاط قوتها في السرعة والمرونة وعنصر مصدر Markdown القائم على AST مع تفاصيل موضع المصدر وصولاً إلى الأحرف الفردية للمفردات التي تشكل العنصر وقابلية التوسع.
تسمح واجهة برمجة التطبيقات (API) بالتحكم الدقيق في عملية التحليل وهي مُحسّنة للتحليل مع عدد كبير من الامتدادات المثبتة. يأتي المحلل اللغوي والإضافات مع الكثير من الخيارات لسلوك المحلل اللغوي وتنوعات عرض HTML. الهدف النهائي هو تمكين المحلل اللغوي والعارض من تقليد المحللين اللغويين الآخرين بدرجة كبيرة من الدقة. اكتمل هذا الآن جزئيًا مع تطبيق محاكاة معالج Markdown
كان الدافع وراء هذا المشروع هو الحاجة إلى استبدال محلل pegdown في البرنامج المساعد Markdown Navigator الخاص بي لـ JetBrains IDEs. يحتوي pegdown على مجموعة ميزات رائعة ولكن سرعته بشكل عام أقل من المثالية وبالنسبة للإدخال المرضي إما أن يتوقف أو يتوقف عمليًا أثناء التحليل.
بالنسبة للإصدارات 0.62.2 أو أقل، أو Java 8 أو أعلى، متوافق مع Java 9+. للإصدارات 0.64.0 أو أعلى، Java 11 أو أعلى.
المشروع موجود على Maven: com.vladsch.flexmark
لا يحتوي النواة على أي تبعيات غير org.jetbrains:annotations:24.0.1
. للحصول على الإضافات، انظر وصف الإضافة أدناه.
لا تزال واجهة برمجة التطبيقات (API) تتطور لاستيعاب الإضافات والوظائف الجديدة.
بالنسبة إلى Maven، أضف flexmark-all
باعتباره تبعية تتضمن النواة وجميع الوحدات النمطية إلى العينة التالية:
<التبعية> <groupId>com.vladsch.flexmark</groupId> <artifactId>flexmark-all</artifactId> <الإصدار>0.64.8</الإصدار> </التبعية>
المصدر: BasicSample.java
الحزمة com.vladsch.flexmark.samples;استيراد com.vladsch.flexmark.util.ast.Node;استيراد com.vladsch.flexmark.html.HtmlRenderer;استيراد com.vladsch.flexmark.parser.Parser;استيراد com.vladsch.flexmark .util.data.MutableDataSet;public class BasicSample { public static void main(String[] args) { خيارات MutableDataSet = جديد MutableDataSet(); // قم بإلغاء التعليق لتعيين الامتدادات الاختيارية //options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.create())); // إلغاء التعليق لتحويل الفواصل الناعمة إلى فواصل صلبة //options.set(HtmlRenderer.SOFT_BREAK, "<br />n"); المحلل اللغوي = Parser.builder(options).build(); HtmlRenderer renderer = HtmlRenderer.builder(options).build(); // يمكنك إعادة استخدام مثيلات المحلل والعارض Node document = parser.parse("This is *Sparta*"); String html = renderer.render(document); // "<p>هذه <em>سبارتا</em></p>n" System.out.println(html); } }
التنفيذ "com.vladsch.flexmark:flexmark-all:0.64.8"
إعدادات إضافية بسبب الملفات المكررة:
خيارات التغليف { استبعاد "META-INF/LICENSE-LGPL-2.1.txt" استبعاد "META-INF/LICENSE-LGPL-3.txt" استبعاد "META-INF/LICENSE-W3C-TEST" استبعاد "META-INF/DEPENDENCIES"}
يمكن العثور على مزيد من المعلومات في الوثائق:
Wiki Home أمثلة الاستخدام تفاصيل الامتدادات كتابة الامتدادات
تعمل فئة PegdownOptionsAdapter
على تحويل إشارات pegdown Extensions.*
إلى خيارات flexmark وقائمة الملحقات. تم تضمين Pegdown Extensions.java
من أجل الراحة ولم يتم العثور على خيارات جديدة في Pegdown 1.6.0. توجد هذه في وحدة flexmark-profile-pegdown
ولكن يمكنك الحصول على المصدر من هذا الريبو: PegdownOptionsAdapter.java، Extensions.java وإنشاء نسختك الخاصة، المعدلة وفقًا لاحتياجات مشروعك.
يمكنك تمرير إشارات الامتداد الخاصة بك إلى PegdownOptionsAdapter.flexmarkOptions(int)
الثابت أو يمكنك إنشاء مثيل PegdownOptionsAdapter
واستخدام الأساليب الملائمة لتعيين إشارات الامتداد وإضافتها وإزالتها. سيُرجع الدالة PegdownOptionsAdapter.getFlexmarkOptions()
نسخة جديدة من DataHolder
في كل مرة مع الخيارات التي تعكس إشارات امتداد pegdown.
import com.vladsch.flexmark.html.HtmlRenderer;import com.vladsch.flexmark.parser.Parser;import com.vladsch.flexmark.profile.pegdown.Extensions;import com.vladsch.flexmark.profile.pegdown.PegdownOptionsAdapter;import com .vladsch.flexmark.util.data.DataHolder؛فئة عامة PegdownOptions {نهائي خيارات DataHolder الثابتة الخاصة = PegdownOptionsAdapter.flexmarkOptions( Extensions.ALL ); محلل نهائي ثابت PARSER = Parser.builder(OPTIONS).build(); نهائي ثابت HtmlRenderer RENDERER = HtmlRenderer.builder(OPTIONS).build(); // استخدم PARSER للتحليل وRENDERER للعرض مع توافق الربط}
تستخدم محاكاة flexmark-java pegdown الافتراضية تحليلًا أقل صرامة لكتلة HTML والذي يقاطع كتلة HTML على سطر فارغ. يقوم Pegdown بمقاطعة كتلة HTML الموجودة على سطر فارغ فقط إذا تم إغلاق جميع العلامات الموجودة في كتلة HTML.
للاقتراب من سلوك تحليل كتلة HTML الأصلي، استخدم الطريقة التي تأخذ وسيطة boolean strictHtml
:
import com.vladsch.flexmark.html.HtmlRenderer;import com.vladsch.flexmark.parser.Parser;import com.vladsch.flexmark.profile.pegdown.Extensions;import com.vladsch.flexmark.profile.pegdown.PegdownOptionsAdapter;import com .vladsch.flexmark.util.data.DataHolder؛فئة عامة PegdownOptions {نهائي خيارات DataHolder الثابتة الخاصة = PegdownOptionsAdapter.flexmarkOptions(true, Extensions.ALL ); محلل نهائي ثابت PARSER = Parser.builder(OPTIONS).build(); نهائي ثابت HtmlRenderer RENDERER = HtmlRenderer.builder(OPTIONS).build(); // استخدم PARSER للتحليل وRENDERER للعرض مع توافق الربط}
يتوفر أيضًا نموذج مزود بمحلل ارتباط مخصص، والذي يتضمن محلل الارتباط لتغيير عناوين URL أو سمات الروابط وعارض عقدة مخصص إذا كنت بحاجة إلى تجاوز رابط HTML الذي تم إنشاؤه.
يحتوي flexmark-Java على العديد من الامتدادات وخيارات التكوين أكثر من pegdown بالإضافة إلى الامتدادات المتوفرة في pegdown 1.6.0. الامتدادات المتاحة عبر PegdownOptionsAdapter
إعادة التنظيم الرئيسية وتنظيف التعليمات البرمجية للتنفيذ في الإصدار 0.60.0، راجع الإصدار 0.60.0-التغييرات بفضل العمل الرائع الذي قام به Alex Karezin، يمكنك الحصول على نظرة عامة على تبعيات الوحدة مع القدرة على التعمق في الحزم والفئات.
دمج واجهة برمجة التطبيقات (API) لدمج مستندات تخفيض السعر المتعددة في مستند واحد.
ملحق Docx Renderer: التعامل مع عقدة السمات المحدودة
وحدة تحويل HTML إلى Markdown القابلة للتوسيع: flexmark-html2md-converter. العينة: HtmlToMarkdownCustomizedSample.java
توافق وحدة Java9+
المراجع التعدادية المركبة المراجع التعدادية ملحق لإنشاء ترقيم قانوني للعناصر والعناوين.
ملحق وحدات الماكرو للسماح بإدراج محتوى تخفيض عشوائي كعناصر كتلة أو مضمنة، مما يسمح باستخدام عناصر الكتلة حيث يُسمح فقط بالعناصر المضمنة من خلال بناء الجملة.
GitLab Flavoured Markdown لتحليل وعرض ملحقات GitLab markdown.
وحدة OSGi مقدمة من Dan Klco (GitHubklcodanr)
علامات الوسائط - ملحق محول رابط الوسائط من Cornelia Schultz (GitHub @CorneliaXaos) يحول الروابط باستخدام بادئات مخصصة إلى علامات HTML5 للصوت والتضمين والصورة والفيديو.
واجهة برمجة تطبيقات مساعد الترجمة لتسهيل ترجمة مستندات تخفيض السعر.
تحذير لإنشاء محتوى جانبي على شكل كتلة. للحصول على التوثيق الكامل، يرجى الاطلاع على ملحق التحذير، مادة وثائق MkDocs.
مرجع معدود لإنشاء مراجع معدودة للأشكال والجداول وعناصر تخفيض السعر الأخرى.
سمات لتحليل سمات النموذج {name name=value name='value' name="value" #id .class-name}
السمات.
يقوم YouTube Embedded Link Transformer بفضل Vyacheslav N. Boyko (GitHub @bvn13) بتحويل الروابط البسيطة لمقاطع فيديو youtube إلى فيديو iframe HTML مضمن.
محول Docx باستخدام مكتبة docx4j. كيفية الاستخدام: نموذج DocxConverter، كيفية التخصيص: تخصيص عرض Docx
تم تطوير هذه الوحدة برعاية Johner Institut GmbH.
قم بتحديث المكتبة لتكون متوافقة مع CommonMark (المواصفات 0.28) وأضف ParserEmulationProfile.COMMONMARK_0_27
و ParserEmulationProfile.COMMONMARK_0_28
للسماح بتحديد خيارات إصدار مواصفات محددة.
واجهة برمجة تطبيقات عرض العقدة المخصصة مع القدرة على استدعاء العرض القياسي للعقدة التي تم تجاوزها، مما يسمح بعرض العقدة المخصصة التي تتعامل فقط مع الحالات الخاصة وتسمح بعرض الباقي كالمعتاد. محلل الارتباط المخصص
ملحقات Gfm-Issues وGfm-Users للتحليل والعرض #123
و @user-name
على التوالي.
خيار تحليل كتلة HTML العميق للتعامل بشكل أفضل مع علامات النص الخام التي تأتي بعد العلامات الأخرى ولتوافق تحليل كتلة HTML.
وحدة flexmark-all
التي تتضمن: النواة، وجميع الامتدادات، والمنسق، ومحولات JIRA وYouTrack، ووحدة ملف تعريف pegdown، وتحويل HTML إلى Markdown.
وحدة إخراج PDF إخراج PDF باستخدام فتح HTML إلى PDF
تم تنفيذ الطباعة
ملحق ماكرو XWiki
علامات جيكل
أتش تي أم أل إلى تخفيض السعر
البرنامج المساعد لمولد الصفحة Maven Markdown
وحدة Markdown Formatter لإخراج AST كتخفيض مع خيارات التنسيق.
جداول Markdown Formatter مع عرض العمود ومحاذاة جداول Markdown:
مدخل | الإخراج |
---|---|
day|time|spent :---|:---:|--: nov. 2. tue|10:00|4h 40m nov. 3. thu|11:00|4h nov. 7. mon|10:20|4h 20m total:|| 13h | | day | time | spent | |:------------|:-----:|--------:| | nov. 2. tue | 10:00 | 4h 40m | | nov. 3. thu | 11:00 | 4h | | nov. 7. mon | 10:20 | 4h 20m | | total: || 13h | |
أستخدم flexmark-java كمحلل للمكون الإضافي Markdown Navigator لـ JetBrains IDEs. أميل إلى استخدام الإصدار الأحدث الذي لم يتم طرحه لإصلاح الأخطاء أو الحصول على التحسينات. لذلك، إذا وجدت خطأً يمثل عائقًا لمشروعك أو رأيت خطأً في صفحة مشكلات github تم وضع علامة fixed for next release
والذي يؤثر على مشروعك، فيرجى إبلاغي بذلك وقد أتمكن من إنشاء إصدار جديد على الفور لمعالجته مشكلتك. بخلاف ذلك، سأترك إصلاحات الأخطاء والتحسينات تتراكم معتقدًا أنه لن يتأثر أحد بما تم إصلاحه بالفعل.
هناك العديد من خيارات الامتداد في واجهة برمجة التطبيقات (API) للاستخدام المقصود منها. البداية الجيدة الجيدة هي وحدة flexmark-java-samples
التي تحتوي على عينات بسيطة للملحقات المطلوبة. المكان التالي الأفضل هو مصدر الامتداد الموجود الذي له بناء جملة مشابه لما تريد إضافته.
إذا كان ملحقك متوافقًا مع واجهة برمجة التطبيقات (API) الصحيحة، فعادةً ما تكون المهمة قصيرة جدًا وحلوة. إذا كان ملحقك يستخدم واجهة برمجة التطبيقات بطريقة غير مقصودة أو لا يتبع بروتوكولات التدبير المنزلي المتوقعة، فقد تجد أنها معركة شاقة مع عش الفئران للتعامل مع حالة if/else وإصلاح خطأ واحد يؤدي فقط إلى إنشاء خطأ آخر.
بشكل عام، إذا استغرق الأمر أكثر من بضع عشرات من الأسطر لإضافة امتداد بسيط، فإما أنك تقوم بذلك بشكل خاطئ أو أن واجهة برمجة التطبيقات تفتقد نقطة امتداد. إذا نظرت إلى جميع الإضافات المنفذة، فسترى أن معظمها عبارة عن بضعة أسطر من التعليمات البرمجية بخلاف لوحة الغلاية التي تمليها واجهة برمجة التطبيقات (API). هذا هو هدف هذه المكتبة: توفير نواة قابلة للتوسيع تجعل امتدادات الكتابة أمرًا سهلاً.
الامتدادات الأكبر هي flexmark-ext-tables
و flexmark-ext-spec-example
، ويتكون كل منهما من حوالي 200 سطر من التعليمات البرمجية. يمكنك استخدامها كدليل إرشادي لتقدير حجم امتدادك.
تُظهر تجربتي الخاصة في إضافة الإضافات أنه في بعض الأحيان يكون من الأفضل معالجة نوع جديد من الإضافات من خلال تحسين واجهة برمجة التطبيقات (API) لجعل تنفيذها سلسًا، أو عن طريق إصلاح خطأ لم يكن مرئيًا قبل أن يؤكد الامتداد على واجهة برمجة التطبيقات (API) بالطريقة الصحيحة تمامًا. قد يكون الامتداد المقصود هو الذي يتطلب مثل هذا النهج.
الفكرة هي: إذا كنت تريد تنفيذ ملحق أو ميزة، فالرجاء عدم التردد في فتح مشكلة وسأقدم لك إرشادات حول أفضل طريقة للقيام بذلك. قد يوفر عليك الكثير من الوقت من خلال السماح لي بتحسين واجهة برمجة التطبيقات (API) لتلبية احتياجات الإضافة الخاصة بك قبل أن تبذل الكثير من الجهد غير المثمر فيها.
أطلب منك أن تدرك أنني رئيس الطهاة وغسالة الزجاجات في هذا المشروع، بدون ذرة من مهارات فولكان مايند ميلدينج. أطلب منك وصف ما تريد تنفيذه لأنني لا أستطيع قراءة رأيك. يرجى القيام ببعض الأعمال الاستطلاعية الأساسية حول الكود المصدري والوثائق لأنني لا أستطيع نقل ما أعرفه إليك، دون جهدك.
إذا كان لديك تطبيق تجاري ولا ترغب في كتابة الامتداد (الامتدادات) بنفسك أو ترغب في تقليل الوقت والجهد في تنفيذ الامتدادات ودمج flexmark-Java، فلا تتردد في الاتصال بي. أنا متاح على أساس الاستشارة/التعاقد.
على الرغم من اسمها، فإن Commonmark ليست مجموعة شاملة ولا مجموعة فرعية من نكهات تخفيض الأسعار الأخرى. بدلاً من ذلك، فهو يقترح مواصفات تركيبية قياسية لا لبس فيها لـ Markdown الأصلي "الأساسي"، وبالتالي يقدم نكهة أخرى بشكل فعال. على الرغم من أن flexmark متوافق بشكل افتراضي مع العلامة المشتركة، إلا أنه يمكن تعديل المحلل اللغوي الخاص به بطرق مختلفة. تتوفر مجموعات التعديلات المطلوبة لمحاكاة موزعي تخفيض السعر الأكثر استخدامًا في flexmark باسم ParserEmulationProfiles
.
كما يوحي الاسم ParserEmulationProfile
، فإن المحلل اللغوي هو فقط الذي يتم ضبطه حسب نكهة تخفيض السعر المحددة. لا يؤدي تطبيق ملف التعريف إلى إضافة ميزات تتجاوز تلك المتوفرة في العلامة المشتركة. إذا كنت تريد استخدام flexmark لمحاكاة سلوك معالج تخفيض السعر آخر بشكل كامل، فيجب عليك ضبط المحلل اللغوي وتكوين ملحقات flexmark التي توفر الميزات الإضافية المتوفرة في المحلل اللغوي الذي تريد محاكاته.
اكتملت عملية إعادة كتابة محلل القائمة للتحكم بشكل أفضل في محاكاة معالجات تخفيض السعر الأخرى وفقًا لمحاكاة معالجات تخفيض السعر. إضافة الإعدادات المسبقة للمعالج لمحاكاة سلوك معالجة تخفيض السعر المحدد لهؤلاء المحللين موجودة في قائمة المهام القصيرة.
تقوم بعض عائلات المحاكاة بعمل أفضل في محاكاة هدفها من غيرها. تم توجيه معظم الجهود إلى محاكاة كيفية تحليل هذه المعالجات لـ Markdown القياسي وقائمة التحليل ذات الصلة على وجه التحديد. بالنسبة للمعالجات التي تقوم بتوسيع Markdown الأصلي، ستحتاج إلى إضافة تلك الملحقات التي تم تنفيذها بالفعل في flexmark-java إلى خيارات منشئ Parser/Renderer.
سيتم تعديل الامتدادات لتشمل الإعدادات المسبقة الخاصة بها لمحاكاة معالج معين، إذا كان لدى هذا المعالج امتداد مكافئ تم تنفيذه.
إذا وجدت تناقضا يرجى فتح مشكلة حتى يمكن معالجتها.
يتم تنفيذ عائلات المعالجات الرئيسية وبعض أفراد العائلة أيضًا:
جيكل
CommonMark لأحدث المواصفات المطبقة، CommonMark حاليًا (المواصفات 0.28)
الدوري/كومونمارك
CommonMark (المواصفات 0.27) لتوافق إصدار محدد
CommonMark (المواصفات 0.28) لتوافق إصدار محدد
تعليقات جيثب
تخفيض السعر.pl
PHP تخفيض السعر اضافية
مستندات GitHub (محلل تخفيض أسعار GitHub القديم)
كرامداون
مسافة بادئة ثابتة
MultiMarkdown
تثبيت
تمت إضافة ملفات تعريف لتغليف تفاصيل التكوين للمتغيرات داخل العائلة في 0.11.0:
CommonMark (الافتراضي للعائلة): ParserEmulationProfile.COMMONMARK
FixedIndent (الافتراضي للعائلة): ParserEmulationProfile.FIXED_INDENT
تعليقات GitHub (فقط CommonMark): ParserEmulationProfile.COMMONMARK
مستندات GitHub القديمة: ParserEmulationProfile.GITHUB_DOC
Kramdown (الافتراضي للعائلة): ParserEmulationProfile.KRAMDOWN
Markdown.pl (الافتراضي للعائلة): ParserEmulationProfile.MARKDOWN
MultiMarkdown: ParserEmulationProfile.MULTI_MARKDOWN
Pegdown، مع ملحقات pegdown استخدم PegdownOptionsAdapter
في flexmark-profile-pegdown
Pegdown، بدون ملحقات Pegdown ParserEmulationProfile.PEGDOWN
قواعد تحليل كتلة Pegdown HTML، بدون امتدادات Pegdown ParserEmulationProfile.PEGDOWN_STRICT
flexmark-java عبارة عن شوكة لمشروع commonmark-java، تم تعديله لإنشاء AST الذي يعكس جميع العناصر الموجودة في المصدر الأصلي، وتتبع كامل لموضع المصدر لجميع العناصر في AST وإنشاء JetBrains Open API PsiTree بشكل أسهل.
تم تغيير واجهة برمجة التطبيقات (API) للسماح بمزيد من التحكم الدقيق في عملية التحليل وتم تحسينها للتحليل مع عدد كبير من الامتدادات المثبتة. يأتي المحلل اللغوي والإضافات مع العديد من خيارات التغيير والتبديل لسلوك المحلل اللغوي وتنوعات عرض HTML. الهدف النهائي هو تمكين المحلل اللغوي والعارض من تقليد المحللين اللغويين الآخرين بدرجة كبيرة من الدقة.
كان الدافع وراء ذلك هو الحاجة إلى استبدال محلل pegdown في البرنامج المساعد Markdown Navigator. يحتوي pegdown على مجموعة ميزات رائعة ولكن سرعته بشكل عام أقل من المثالية وبالنسبة للإدخال المرضي إما أن يتوقف أو يتوقف عمليًا أثناء التحليل.
تتمتع Commonmark-Java ببنية تحليلية ممتازة يسهل فهمها وتوسيعها. كان الهدف هو التأكد من أن إضافة تتبع موضع المصدر في AST لن يغير من سهولة التحليل وتوليد AST أكثر من اللازم.
أسباب اختيار Commonmark-Java كمحلل هي: السرعة وسهولة الفهم وسهولة التوسيع والسرعة. الآن بعد أن قمت بإعادة صياغة النواة وإضافة بعض الملحقات، فأنا راضٍ للغاية عن خياري.
كان الهدف الآخر هو تحسين قدرة الامتدادات على تعديل سلوك المحلل اللغوي بحيث يمكن تنفيذ أي لهجة تخفيض السعر من خلال آلية الامتداد. تمت إضافة واجهة برمجة تطبيقات الخيارات القابلة للتوسيع للسماح بإعداد جميع الخيارات في مكان واحد. يستخدم المحلل اللغوي والعارض والإضافات هذه الخيارات للتكوين، بما في ذلك تعطيل بعض موزعي الكتلة الأساسية.
هذا عمل قيد التقدم مع العديد من تغييرات واجهة برمجة التطبيقات. لم تتم أي محاولة للاحتفاظ بتوافق واجهة برمجة التطبيقات (API) مع المشروع الأصلي وحتى تكتمل مجموعة الميزات في الغالب، ولا حتى مع الإصدارات السابقة من هذا المشروع.
ميزة | flexmark-java | Commonmark-Java | pegdown |
---|---|---|---|
وقت التحليل النسبي (الأقل هو الأفضل) | 1x (1) | 0.6x إلى 0.7x (2) | متوسط 25x، 20000x إلى ∞ للمدخلات المرضية (3) |
جميع العناصر المصدرية في AST | |||
عناصر AST مع موضع المصدر | مع بعض الأخطاء والخصوصيات | ||
يمكن التلاعب بـ AST بسهولة | معالجة ما بعد AST هي آلية تمديد | معالجة ما بعد AST هي آلية تمديد | ليس خيارا. لا توجد معلومات أصل العقدة، والأطفال كقائمة <>. |
تحتوي عناصر AST على موضع المصدر التفصيلي لجميع الأجزاء | بداية/نهاية العقدة فقط | ||
يمكن تعطيل ميزات التحليل الأساسية | |||
يتم تنفيذ المحلل اللغوي الأساسي عبر واجهة برمجة تطبيقات الامتداد | اختبارات instanceOf لمحلل كتلة محدد وفئات العقدة | الأساسية يعرض عدد قليل من نقاط التمديد | |
من السهل فهم وتعديل تنفيذ المحلل اللغوي | محلل PEG واحد مع تفاعلات معقدة (3) | ||
تحليل عناصر الكتلة مستقل عن بعضها البعض | كل شيء في قواعد PEG واحدة | ||
تكوين موحد عبر: المحلل اللغوي والعارض وجميع الامتدادات | لا شيء يتجاوز قائمة الامتدادات | إشارات بت int للنواة، ولا شيء للملحقات | |
تم تحسين أداء التحليل للاستخدام مع الامتدادات | عند تحليل الأداء للنواة، تقوم الإضافات بما في وسعها | الأداء ليس ميزة | |
ميزة غنية بالعديد من خيارات التكوين والإضافات خارج الصندوق | ملحقات محدودة، لا توجد خيارات | ||
تعريفات التبعية للمعالجات لضمان الترتيب الصحيح للمعالجة | الترتيب المحدد من خلال ترتيب قائمة التمديد، عرضة للخطأ | غير قابل للتطبيق، يحدد النواة مكان إضافة معالجة الامتداد |
الإدخال المرضي لـ flexmark-Java يبلغ 100,000 [
تحليل في 68 مللي ثانية، 100,000 ]
في 57 مللي ثانية، 100,000 تحليل متداخل [
]
في 55 مللي ثانية
المدخلات المرضية المشتركة لجافا تبلغ 100000 [
تحليل في 30 مللي ثانية، 100000 ]
في 30 مللي ثانية، 100000 تحليل متداخل [
]
في 43 مللي ثانية
المدخلات المرضية المرجعية لـ 17 [
توزيع في 650 مللي ثانية، 18 [
في 1300 مللي ثانية
خيارات المحلل اللغوي، العناصر التي تم وضع علامة عليها كعنصر مهمة سيتم تنفيذها والباقي مكتمل:
قوائم فضفاضة يدوية
تبدأ القوائم المرقمة دائمًا بالرقم 1.
تم إصلاح المسافة البادئة لعناصر القائمة، حيث يجب وضع مسافة بادئة للعناصر بمقدار 4 مسافات على الأقل
خيار بدء القائمة المريحة، يسمح للقوائم بالبدء عندما لا يسبقها سطر فارغ.
جيكل الجبهة المسألة
عناصر علامة Jekyll، مع دعم {% include file %}
، وتضمين Markdown ومحتوى ملف HTML
ترميز عنوان URL لرابط GitBook. لا ينطبق
عقد تعليق HTML: محظورة ومضمنة
عناوين URL للصور متعددة الأسطر
عنصر مثال المواصفات
HTML مضمّن: الكل، عدم التعليقات، التعليقات
كتل HTML: الكل، عدم التعليقات، التعليقات
الاختصارات
الحواشي
التعاريف
جدول المحتويات
يتوسطه خط
قوائم المهام
لا توجد مساحة رأس Atx
لا توجد مسافة بادئة للرأس
الأغطية الصلبة (التي تم تحقيقها باستخدام خيار SOFT_BREAK الذي تم تغييره إلى "<br />"
)
خيار قواعد الموارد البشرية المريحة
روابط ويكي
كتل التعليمات البرمجية المسيجة
روابط ربط للرؤوس مع إنشاء معرف تلقائي
خيار Table Spans الذي سيتم تنفيذه لتمديد الجداول
روابط Wiki مع بناء جملة GitHub وCreole
اختصارات الرموز التعبيرية مع استخدام خيار GitHub emoji URL
يقتبس
الذكاء
مطبعي
ملحقات جيثب
بناء جملة جيثب
نشر
قمع
ملحقات المعالج
قمع بناء جملة العلامة المشتركة
أنا سعيد جدًا بقرار التحول إلى المحلل اللغوي المعتمد على Commonmark-Java لمشاريعي الخاصة. على الرغم من أنني اضطررت إلى إجراء عملية جراحية كبيرة على الأجزاء الداخلية للحصول على تتبع كامل لموضع المصدر وAST الذي يطابق عناصر المصدر، إلا أنه من دواعي سروري العمل معه ويسعدني الآن التوسع. إذا لم تكن بحاجة إلى عنصر مستوى المصدر AST أو بقية ما أضافته flexmark-java وكان CommonMark هو محلل تخفيض السعر المستهدف، فأنا أشجعك على استخدام commonmark-Java لأنه خيار ممتاز لاحتياجاتك ولا يتأثر أدائه لتغطية النفقات العامة للميزات التي لن تستخدمها.
الأحدث، 28 يناير 2017 flexmark-java 0.13.1، intellij-markdown من CE EAP 2017، commonmark-java 0.8.0:
ملف | Commonmark-Java | flexmark-java | intellij-markdown | pegdown |
---|---|---|---|---|
التمهيدي-بطيء | 0.420 مللي ثانية | 0.812 مللي ثانية | 2.027 مللي ثانية | 15.483 مللي ثانية |
إصدار | 0.743 مللي ثانية | 1.425 مللي ثانية | 4.057 مللي ثانية | 42.936 مللي ثانية |
commonMarkSpec | 31.025 مللي ثانية | 44.465 مللي ثانية | 600.654 مللي ثانية | 575.131 مللي ثانية |
markdown_example | 8.490 مللي ثانية | 10.502 مللي ثانية | 223.593 مللي ثانية | 983.640 مللي ثانية |
المواصفات | 4.719 مللي ثانية | 6.249 مللي ثانية | 35.883 مللي ثانية | 307.176 مللي ثانية |
طاولة | 0.229 مللي ثانية | 0.623 مللي ثانية | 0.800 مللي ثانية | 3.642 مللي ثانية |
تنسيق الجدول | 1.385 مللي ثانية | 2.881 مللي ثانية | 4.150 مللي ثانية | 23.592 مللي ثانية |
طَوّق | 3.804 مللي ثانية | 4.589 مللي ثانية | 16.609 مللي ثانية | 86.383 مللي ثانية |
النسب المذكورة أعلاه:
ملف | Commonmark-Java | flexmark-java | intellij-تخفيض السعر | pegdown |
---|---|---|---|---|
التمهيدي-بطيء | 1.00 | 1.93 | 4.83 | 36.88 |
إصدار | 1.00 | 1.92 | 5.46 | 57.78 |
commonMarkSpec | 1.00 | 1.43 | 19.36 | 18.54 |
markdown_example | 1.00 | 1.24 | 26.34 | 115.86 |
المواصفات | 1.00 | 1.32 | 7.60 | 65.09 |
طاولة | 1.00 | 2.72 | 3.49 | 15.90 |
تنسيق الجدول | 1.00 | 2.08 | 3.00 | 17.03 |
طَوّق | 1.00 | 1.21 | 4.37 | 22.71 |
إجمالي | 1.00 | 1.41 | 17.47 | 40.11 |
ملف | Commonmark-Java | flexmark-java | intellij-markdown | pegdown |
---|---|---|---|---|
التمهيدي-بطيء | 0.52 | 1.00 | 2.50 | 19.07 |
إصدار | 0.52 | 1.00 | 2.85 | 30.12 |
commonMarkSpec | 0.70 | 1.00 | 13.51 | 12.93 |
markdown_example | 0.81 | 1.00 | 21.29 | 93.66 |
المواصفات | 0.76 | 1.00 | 5.74 | 49.15 |
طاولة | 0.37 | 1.00 | 1.28 | 5.85 |
تنسيق الجدول | 0.48 | 1.00 | 1.44 | 8.19 |
طَوّق | 0.83 | 1.00 | 3.62 | 18.83 |
إجمالي | 0.71 | 1.00 | 12.41 | 28.48 |
نظرًا لأن هذين الملفين يمثلان المدخلات المرضية للربط، لم أعد أقوم بتشغيلهما كجزء من المعيار لمنع تحريف النتائج. النتائج هنا للأجيال القادمة.
ملف | Commonmark-Java | flexmark-java | intellij-markdown | pegdown |
---|---|---|---|---|
تعليق معلق | 0.082 مللي ثانية | 0.326 مللي ثانية | 0.342 مللي ثانية | 659.138 مللي ثانية |
تعليق معلق2 | 0.048 مللي ثانية | 0.235 مللي ثانية | 0.198 مللي ثانية | 1312.944 مللي ثانية |
النسب المذكورة أعلاه:
ملف | Commonmark-Java | flexmark-java | intellij-تخفيض السعر | pegdown |
---|---|---|---|---|
تعليق معلق | 1.00 | 3.98 | 4.17 | 8048.38 |
تعليق معلق2 | 1.00 | 4.86 | 4.10 | 27207.32 |
إجمالي | 1.00 | 4.30 | 4.15 | 15151.91 |
ملف | Commonmark-Java | flexmark-java | intellij-تخفيض السعر | pegdown |
---|---|---|---|---|
تعليق معلق | 0.25 | 1.00 | 1.05 | 2024.27 |
تعليق معلق2 | 0.21 | 1.00 | 0.84 | 5594.73 |
إجمالي | 0.23 | 1.00 | 0.96 | 3519.73 |
VERSION.md هو ملف سجل الإصدار الذي أستخدمه في Markdown Navigator
commonMarkSpec.md هو ملف بطول 33 كيلو بايت يستخدم في مجموعة اختبار intellij-markdown لتقييم الأداء.
Spec.txt ملف تخفيض المواصفات للعلامة المشتركة في مشروع Commonmark-Java
Hang-pegdown.md هو ملف يحتوي على سطر واحد مكون من 17 حرفًا [[[[[[[[[[[[[[[[[
مما يتسبب في دخول Pegdown في وقت تحليل مفرط الأسي.
Hang-pegdown2.md ملف يحتوي على سطر واحد مكون من 18 حرفًا [[[[[[[[[[[[[[[[[[
مما يتسبب في دخول Pegdown في وقت تحليل مفرط الأسي.
Wrap.md هو ملف كنت أستخدمه لاختبار الالتفاف عند أداء الكتابة فقط لأكتشف أنه لا علاقة له بالالتفاف عند كتابة التعليمات البرمجية عندما يستغرق Pegdown 0.1 ثانية لتحليل الملف. في البرنامج المساعد، قد يحدث التحليل أكثر من مرة: تمرير تمييز بناء الجملة، تمرير بناء شجرة PSI، التعليق التوضيحي الخارجي.
markdown_example.md ملف يحتوي على أكثر من 10000 سطر يحتوي على أكثر من 500 كيلو بايت من النص.
سحب الطلبات والقضايا والتعليقات موضع ترحيب. لطلبات السحب:
أضف اختبارات للميزات الجديدة وإصلاحات الأخطاء، ويفضل أن يكون ذلك بتنسيق ast_spec.md
اتبع النمط الحالي لتسهيل عملية الدمج قدر الإمكان: 4 مسافات بادئة، وتقليص المسافات الزائدة.
حقوق الطبع والنشر (ج) 2015-2016 Atlassian وآخرون.
حقوق الطبع والنشر (ج) 2016-2023، فلاديمير شنايدر،
ترخيص BSD (بندان)، راجع ملف LICENSE.txt.