Showdown هو تخفيض JavaScript إلى محول HTML ، استنادًا إلى الأعمال الأصلية لجون جروبر. يمكن استخدام Showdown جانب العميل (في المتصفح) أو جانب الخادم (مع Node.js).
تحقق من العرض التوضيحي المباشر هنا: http://demo.showdownjs.com/
كما تعلمون ، تعتبر عمليات العرض مكتبة مجانية وستظل مجانية إلى الأبد. ومع ذلك ، فإن الحفاظ على وتحسين تكاليف المكتبة الوقت والمال.
إذا كنت تحب عملنا والعثور على مكتبتنا مفيدة ، فيرجى التبرع من خلال PayPal! سيتم تقدير مساهمتك بشكل كبير وتساعدني على مواصلة تطوير هذه المكتبة الرائعة.
يتم إصدار ShowDownJS V 2.0 تحت رخصة معهد ماساتشوستس للتكنولوجيا. يتم إصدار الإصدارات السابقة تحت BSD.
يمكنك تنزيل أحدث Tarball مباشرة من الإصدارات.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
يمكن العثور على حزم nuget هنا.
يمكنك أيضًا استخدام واحد من عدة CDNs المتاحة:
JSDelivr
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
CDNJS
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
UNPKG
https://unpkg.com/showdown/dist/showdown.min.js
ملاحظة : استبدل <version tag>
بإصدار كامل الطول الكامل الذي تهتم به على سبيل المثال 1.9.0
تم اختبار المواجهة بنجاح مع:
من الناحية النظرية ، ستعمل المواجهة في أي متصفح يدعم الإصدار الثالث من ECMA 262 (JavaScript 1.5). قد يعمل المحول نفسه حتى في أشياء ليست متصفحات ويب ، مثل Acrobat. لا وعود بأى شئ.
يهدف Showdown إلى العمل على أي إصدار مدعوم Node.js (انظر جدول إصدارات Node.js. قد يعمل الرمز مع الإصدارات السابقة من node.js ، ولكن لا يتم إجراء أي مصلات لضمان قيامها بذلك.
إذا كنت تبحث عن المواجهة V <1.0.0 ، فيمكنك العثور عليها في الفرع Legacy .
يمكنك التحقق من changelog الكامل
تحقق من صفحات الويكي الخاصة بنا للحصول على أمثلة ووثائق أكثر تعمقا.
var showdown = require ( 'showdown' ) ,
converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
var converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
كلا المثالين يجب أن يخرج ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
يمكنك تغيير بعض السلوك الافتراضي للمواجهة من خلال الخيارات.
يمكن تعيين الخيارات:
يؤثر تحديد خيار "عالمي" على جميع حالات المواجهة
showdown . setOption ( 'optionKey' , 'value' ) ;
يؤثر تعيين خيار "محلي" فقط على كائن المحول المحدد. يمكن تعيين الخيارات المحلية:
من خلال المنشئ
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
من خلال طريقة setOption ()
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
يوفر Showdown طريقتين (محليين وعالمين) لاسترداد خيارات المجموعة السابقة.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
يمكنك الحصول على الخيارات الافتراضية للمواجهة مع:
var defaultOptions = showdown . getDefaultOptions ( ) ;
OmitexTrawlinCodeBlocks : (Boolean) [False Default] حذف الخط الجديد الخلفي في كتلة رمز. السابق:
هذا:
< code > < pre > var foo = 'bar';
</ pre > </ code >
يصبح هذا:
< code > < pre > var foo = 'bar'; </ pre > </ code >
Noadeherid : (Boolean) [False Disault] تعطيل الجيل التلقائي لمعرفات الرأس. الإعداد إلى تجاوزات حقيقية prefixheaderid
CustomedHeaderId : (منطقية) [خطأ افتراضي] استخدم النص في أقواس مجعد كمعرف رأس. (منذ الإصدار 1.7.0) مثال:
## Sample header {real-id} will use real-id as id
GhcompatibleHeaderid : (Boolean) [False Calse] قم بإنشاء معرفات الرأس متوافقة مع نمط GitHub (يتم استبدال المساحات بالشرطات ويتم إزالة مجموعة من chars غير الأبجدية الرقمية) (منذ V1.5.5)
premixHeaderId : (سلسلة/منطقية) [خطأ افتراضي] أضف بادئة إلى معرفات الرأس التي تم إنشاؤها. سيقوم تمرير السلسلة ببلاغية تلك السلسلة إلى معرف الرأس. سيؤدي الإعداد إلى true
إلى إضافة بادئة "قسم" عام.
RAWPREFIXHEDERID : (BOOLEAN) [FALSE الافتراضي] سيؤدي إعداد هذا الخيار إلى True إلى منع المواجهة من تعديل البادئة. قد يؤدي هذا إلى معرفات مشوهة (إذا ، على سبيل المثال ، "يتم استخدام" char في البادئة). ليس له أي تأثير إذا تم تعيين prepixheaderid على خطأ. (منذ V 1.7.3)
RawHeaderid : (Boolean) [default false] قم بإزالة المساحات فقط "و" من معرفات الرأس التي تم إنشاؤها (بما في ذلك البادئات) ، واستبدالها بالشرطات (-). تحذير: قد يؤدي ذلك إلى معرفات مشوهة (منذ V1.7.3)
headerlevelstart : (integer) [افتراضي 1] اضبط مستوى بدء الرأس. على سبيل المثال ، يعني تعيين هذا إلى 3 ذلك
# foo
سيتم تحليلها
< h3 > foo </ h3 >
parseimgdimensions : (Boolean) [False Default] تمكين دعم إعداد أبعاد الصورة من داخل بناء جملة Markdown. أمثلة:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutoLink : (Boolean) [False Default] تشغيل هذا الخيار سيمكّن الارتباط التلقائي بعناوين URL. هذا يعني أن:
some text www.google.com
سيتم تحليلها
< p > some text < a href =" www.google.com " > www.google.com </ a >
ExcludetrailingPunctuationFromurls : (Boolean) [خطأ افتراضي] يستبعد هذا الخيار علامات الترقيم المتخلف من عناوين URL للتفكير التلقائي. استثناء علامات الترقيم : . ! ? ( )
. ينطبق فقط إذا تم تعيين خيار SimplifiedAutoLink على true
.
PRITERALMIDWORDERDERSCORES : (BOOLEEAN) [FALSE DEFAULT] سيتوقف تشغيل هذا الأمر من تفسير الترسبات السفلية في منتصف الكلمات كـ <em>
و <strong>
وبدلاً من ذلك تعاملهم كرسومات داخلية حرفية.
مثال:
some text with __ underscores __ in middle
سيتم تحليلها
< p > some text with__underscores__in middle </ p >
WiteralMidwordasterIsks : (Boolean) [Sentault False] سيوقف تشغيل هذا العرض من تفسير العلامات النجمية في منتصف الكلمات كـ <em>
و <strong>
وبدلاً من ذلك تعاملهم كعلامات حرفية.
strikethrough : (منطقية) [خطأ افتراضي] تمكين دعم بناء الجملة strikethrough. ~~strikethrough~~
كما <del>strikethrough</del>
الجداول : (منطقية) [خطأ افتراضي] تمكين دعم بناء جملة الجداول. مثال:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
انظر الويكي لمزيد من المعلومات
TableSheaderId : (Boolean) [False Default] إذا تم تمكينه يضيف خاصية معرف إلى علامات رؤوس الجدول.
GhcodeBlocks : (Boolean) [True الافتراضي] تمكين دعم نمط كتلة رمز GFM.
قوائم المهام : (منطقية) [خطأ افتراضي] تمكين الدعم لقوائم المهام GFM. مثال:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (Boolean) [خطأ افتراضي] يمنع التأثيرات الغريبة في المعاينات المباشرة بسبب المدخلات غير المكتملة
SmartIndentationFix : (Boolean) [الخاطئة الافتراضية] يحاول إصلاح مشكلات المسافة البادئة بذكاء تتعلق بسلاسل قالب ES6 في خضم الكود البادء.
DisableForSed4spacesIndentedSublists : (Boolean) [الخاطئة الافتراضية] يعطل متطلبات السوائل البادئة من قبل 4 مسافات لكي يتم تداخلها ، والعودة بشكل فعال إلى السلوك القديم حيث كانت مساحات 2 أو 3 كافية. (منذ V1.5.0)
SimpleLineBreaks : (Boolean) [False False] تتلاشى خط الأسطر كـ <br>
، دون الحاجة إلى مساحتين في نهاية الخط (منذ V1.5.1)
a line
wrapped in two
يتحول إلى:
< p > a line < br >
wrapped in two </ p >
quisteSpaceBeforeHeadText : (Boolean) [False Default] يجعل إضافة مساحة بين #
ونص الرأس إلزامي (منذ v1.5.3)
Ghmentions : (Boolean) [Default False] يتيح githubmentions ، والذي يرتبط باسم المستخدم المذكور (منذ الإصدار 1.6.0)
GhmentionsLink : (String) [الافتراضي https://github.com/{u}
] يغير الرابط الذي تم إنشاؤه بواسطة @MENTIONS. سوف يحل المواجهة محل {u}
باسم المستخدم. ينطبق فقط إذا تم تمكين خيار Ghmentions. مثال: @tivie
مع GhmentionsOption تعيين على //mysite.com/{u}/profile
ستؤدي إلى <a href="//mysite.com/tivie/profile">@tivie</a>
Encodeemails : (Boolean) [True Default] تمكين عناوين البريد الإلكتروني الترميز من خلال استخدام كيانات الأحرف ، وتحويل عناوين البريد الإلكتروني ASCII إلى كياناتها العشرية المكافئة. (منذ V1.6.1)
ملاحظة: قبل الإصدار 1.6.1 ، سيتم دائمًا تعبئة رسائل البريد الإلكتروني خلال تشفير DEC و HEX.
OpenLinkSinnewWindow : (Boolean) [Default False] افتح جميع الروابط في Windows جديدة (عن طريق إضافة Attribute target="_blank"
إلى <a>
العلامات) (منذ V1.7.0)
backslashescapeshtmltags : (Boolean) [خطأ افتراضي] دعم لعلامة HTML الهروب. على سبيل المثال: <div>foo</div>
(منذ v1.7.2)
الرموز التعبيرية : (Boolean) [FALSE الافتراضي] تمكين دعم الرموز التعبيرية. على سبيل المثال: this is a :smile: emoji
لمزيد من المعلومات حول الرموز التعبيرية المتاحة ، راجع https://github.com/showdownjs/showdown/wiki/emojis (منذ الإصدار v.1.8.0)
تسطير : (Boolean) [False Disault] تمكين الميزة التجريبية للدعم للتسديد. بناء الجملة مزدوج أو ثلاثة أضعاف السفلية على سبيل المثال: __underlined word__
. من خلال تمكين هذا الخيار ، لم تعد السفقة محدودة في <em>
و <strong>
.
Ellipsis : (Boolean) [True الافتراضي] يحل محل ثلاث نقاط مع حرف ellipsis Unicode.
CompleteHtmldOcument : (Boolean) [False Disault] يخرج مستند HTML كامل ، بما في ذلك <html>
و <head>
و <body>
العلامات "بدلاً من جزء HTML. (منذ V.1.8.5)
البيانات الوصفية : (Boolean) [false الافتراضي] تمكين دعم البيانات الوصفية (محددة في الجزء العلوي من المستند بين «««
و »»»
أو بين ---
و ---
). (منذ V.1.8.5)
var conv = new showdown . Converter ( { metadata : true } ) ;
var html = conv . makeHtml ( someMd ) ;
var metadata = conv . getMetadata ( ) ; // returns an object with the document metadata
SplitadJacentBlockquotes : (Boolean) [False Disault] تقسيم كتل blockquote المجاورة. (منذ الإصدار v.1.8.6)
Morestyling : (Boolean) [false الافتراضي] يضيف بعض الفصول المفيدة لتصميم CSS. (منذ V2.0.1)
task-list-item-complete
إلى عناصر المهام المكتملة في قوائم المهام GFM.ملاحظة : يرجى ملاحظة أنه حتى الإصدار 1.6.0 ، يتم تعطيل كل هذه الخيارات افتراضيًا في أداة CLI.
يمكنك أيضًا استخدام النكهات أو الإعدادات المسبقة لتعيين الخيارات الصحيحة تلقائيًا ، بحيث يتصرف المواجهة مثل النكهات الشائعة.
حاليًا ، تتوفر النكهات التالية:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
يأتي Showdown أيضًا مع أداة واجهة سطر الأوامر. يمكنك التحقق من صفحة CLI Wiki لمزيد من المعلومات
يوفر مشروع ShowDownJS أيضًا تكاملًا سلسًا مع AngularJs عبر "البرنامج المساعد". يرجى زيارة https://github.com/showdownjs/ngshowdown لمزيد من المعلومات.
إذا كنت تستخدم TypeScript ، فربما تريد استخدام الأنواع من بالتأكيد
يمكن الحصول على التكامل مع SystemJs عبر المكون الإضافي لجهة خارجية "System-MD".
لاستخدام ShowDownJS كمكون VUE بسرعة ، يمكنك التحقق من vue-showdown.
المواجهة لا تعقيم المدخلات. هذا حسب التصميم نظرًا لأن Markdown يعتمد عليه للسماح بتوزيع بعض الميزات بشكل صحيح في HTML. هذا ، ومع ذلك ، يعني حقن XSS ممكن للغاية.
يرجى الرجوع إلى ضعف مقالة Wiki Marmdown (وكيفية التخفيف من ذلك) لمزيد من المعلومات.
يتيح Showdown تحميل وظائف إضافية من خلال الامتدادات. (يمكنك العثور على قائمة بملحقات المواجهة المعروفة هنا)
< script src = "showdown.js" / >
< script src = "twitter-extension.js" / >
var converter = new showdown . Converter ( { extensions : [ 'twitter' ] } ) ;
var showdown = require ( 'showdown' ) ,
myExtension = require ( 'myExtension' ) ,
converter = new showdown . Converter ( { extensions : [ 'myExtension' ] } ) ;
بناء استنساخ الخاص بك من المستودع أمر سهل.
يجب تثبيت NODE.JS V12 و NPM و NPX.
تشغيل npm install
.
تشغيل npx grunt build
(انظر Gruntfile.js
). هذا الأمر:
dist
. تتوفر مجموعة من الاختبارات التي تتطلب node.js. بمجرد تثبيت العقدة ، قم بتشغيل الأمر التالي من جذر المشروع لتثبيت التبعيات:
npm install
بمجرد تثبيت الاختبارات ، يمكن إجراء الاختبارات من جذر المشروع باستخدام:
npm test
يمكن بسهولة إضافة حالات اختبار جديدة. قم بإنشاء ملف Markdown (إنهاء .md
) الذي يحتوي على تخفيض التنفيذ للاختبار. إنشاء ملف .html
من نفس الاسم بالضبط. سيتم اختباره تلقائيًا عند تنفيذ الاختبارات باستخدام mocha
.
إذا كنت ترغب في المساهمة ، فيرجى قراءة الدليل السريع التالي.
يمكنك طلب ميزة جديدة عن طريق تقديم مشكلة. إذا كنت ترغب في تنفيذ ميزة جديدة ، فلا تتردد في إصدار طلب سحب.
PRS رائع. ومع ذلك ، قبل إرسال طلب السحب الخاص بك ، ضع في اعتبارك الإرشادات التالية:
ابحث عن github عن طلب سحب مفتوح أو مغلق يتعلق بتقديمك. أنت لا تريد تكرار الجهد.
عند إصدار PRS الذي يغير الرمز ، قم بإجراء تغييراتك في فرع GIT جديد بناءً على تطوير :
git checkout -b my-fix-branch develop
قم بتشغيل جناح الاختبار الكامل قبل تقديمه وتأكد من تمرير جميع الاختبارات (من الواضح = P).
حاول اتباع قواعد نمط الترميز لدينا. كسرهم يمنع العلاقات العامة لاجتياز الاختبارات.
الامتناع عن إصلاح مشكلات متعددة في نفس طلب السحب. من الأفضل فتح العديد من PRS الصغيرة بدلاً من مراجعة واحدة كبيرة.
إذا قدم العلاقات العامة ميزة جديدة أو يقوم بإصلاح مشكلة ، فيرجى إضافة حالة الاختبار المناسبة .
نستخدم ملاحظات الالتزام التقليدية لإنشاء changelog التي تتبع مواصفات Changelog التقليدية. من المفيد للغاية إذا كانت رسائل الالتزام الخاصة بك تلتزم بهذه الإرشادات الالتزام.
لا تنس إضافة اسمك إلى ملف credits.md. نود أن نعطي الائتمان لو كان ذلك مستحقًا.
إذا اقترحنا تغييرات ثم:
git rebase develop -i
git push origin my-fix-branch -f
بعد دمج طلب السحب الخاص بك ، يمكنك حذف فرعك بأمان.
إذا كان لديك وقت للمساهمة في هذا المشروع ، نشعر بأنك ملزم بالحصول على الفضل في ذلك. تمكننا هذه القواعد من مراجعة العلاقات العامة الخاصة بك بشكل أسرع وستمنحك الائتمان المناسب في ملف github الخاص بك. نشكرك مقدمًا على مساهمتك!
نحن نبحث عن أعضاء للمساعدة في الحفاظ على المواجهة. يرجى الاطلاع على هذه المشكلة للتعبير عن الاهتمام أو التعليق على هذه الملاحظة.
قائمة الائتمان الكاملة على https://github.com/showdownjs/showdown/blob/master/credits.md
يتم تشغيل المواجهة بواسطة: