Pengurai penurunan harga dilakukan dengan benar. Cepat dan mudah untuk diperluas.
Demo langsung
Mengikuti spesifikasi CommonMark + menambahkan ekstensi sintaksis & gula (tautan otomatis URL, juru ketik).
Sintaks yang dapat dikonfigurasi! Anda dapat menambahkan aturan baru dan bahkan mengganti aturan yang sudah ada.
Kecepatan tinggi.
Aman secara default.
Plugin yang ditulis komunitas dan paket lainnya di npm.
Daftar isi
Memasang
Contoh penggunaan
Sederhana
Init dengan preset dan opsi
Plugin dimuat
Penyorotan sintaksis
Tautkan
API
Ekstensi sintaksis
Kelola aturan
Tolok ukur
penurunan harga-itu untuk perusahaan
Penulis
Referensi / Terima kasih
node.js :
npm instal penurunan harga-itu
peramban (CDN):
jsKirim CDN
cdnjs.com CDN
Lihat juga:
Dokumentasi API - untuk info dan contoh lebih lanjut.
Info pengembangan - untuk penulis plugin.
// node.js// dapat menggunakan `require('markdown-it')` untuk CJSimport markdownit dari 'markdown-it'const md = markdownit()const result = md.render('# markdown-it rulezz!') ;// browser dengan UMD build, ditambahkan ke "window" saat memuat skrip // Catatan, tidak ada tanda hubung di "markdownit".const md = window.markdownit();const result = md.render('# penurunan harga-itu rulezz!');
Render satu baris, tanpa bungkus paragraf:
import markdownit dari 'markdown-it'const md = markdownit()const result = md.renderInline('__markdown-it__ rulezz!');
(*) preset menentukan kombinasi aturan dan opsi aktif. Bisa berupa "commonmark"
, "zero"
atau "default"
(jika dilewati). Lihat dokumen API untuk detail selengkapnya.
impor markdownit dari 'markdown-it'// commonmark modeconst md = markdownit('commonmark')// default modeconst md = markdownit()// aktifkan semuanyaconst md = markdownit({ html: benar, menghubungkan: benar, juru ketik: true})// daftar opsi lengkap (default)const md = markdownit({ // Aktifkan tag HTML di sumber html: salah, // Gunakan '/' untuk menutup satu tag (<br />). // Ini hanya untuk kompatibilitas penuh CommonMark. xhtmlKeluar: salah, // Ubah 'n' dalam paragraf menjadi <br> istirahat: salah, // Awalan bahasa CSS untuk blok berpagar. Bisa jadi // berguna untuk penyorot eksternal. langPrefix: 'bahasa-', // Konversi otomatis teks seperti URL menjadi tautan menghubungkan: salah, // Aktifkan beberapa penggantian bahasa netral + keindahan kutipan // Untuk daftar lengkap pengganti, lihat https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs juru ketik: salah, // Pasangan pengganti tanda kutip ganda + tunggal, ketika juru ketik diaktifkan, // dan kutipan pintar aktif. Bisa berupa String atau Array. // // Misalnya, Anda dapat menggunakan '«»„“' untuk bahasa Rusia, '„“‚'' untuk bahasa Jerman, // dan ['«xA0', 'xA0»', '‹xA0', 'xA0›'] untuk bahasa Prancis (termasuk nbsp). kutipan: '""''', // Fungsi penyorot. Harus mengembalikan HTML yang lolos, // atau '' jika string sumber tidak diubah dan harus di-escape secara eksternal. // Jika hasil dimulai dengan <pre... pembungkus internal dilewati. sorot: fungsi (/*str, lang*/) { kembali ''; }});
impor penurunan harga dari 'penurunan harga-it'const md = penurunan harga .menggunakan(plugin1) .use(plugin2, opts, ...) .menggunakan(plugin3);
Terapkan penyorotan sintaksis ke blok kode berpagar dengan opsi highlight
:
impor markdownit dari 'markdown-it'impor hljs dari 'highlight.js' // https://highlightjs.org// Nilai default aktualconst md = markdownit({ sorot: function (str, lang) {if (lang && hljs.getLanguage(lang)) { coba {return hljs.highlight(str, { bahasa: lang }).value; } tangkap (__) {}}kembalikan ''; // gunakan pelolosan default eksternal }});
Atau dengan penggantian pembungkus penuh (jika Anda perlu menetapkan kelas ke <pre>
atau <code>
):
impor markdownit dari 'markdown-it'impor hljs dari 'highlight.js' // https://highlightjs.org// Nilai default aktualconst md = markdownit({ sorot: function (str, lang) {if (lang && hljs.getLanguage(lang)) { coba {return '<pre><code class="hljs">' + hljs.highlight(str, { bahasa: lang, abaikanIllegals : benar }).nilai + '</code></pre>'; } catch (__) {}}mengembalikan '<pre><code class="hljs">' + md.utils.escapeHtml(str) + '</code></pre>'; }});
linkify: true
menggunakan linkify-it. Untuk mengonfigurasi linkify-it, akses instance linkify melalui md.linkify
:
md.linkify.set({ fuzzyEmail: false }); // menonaktifkan konversi email menjadi tautan
dokumentasi API
Jika Anda ingin menulis plugin, silakan lihat info Pengembangan.
Tersemat (diaktifkan secara default):
Tabel (GFM)
Coretan (GFM)
Melalui plugin:
subskrip
superskrip
catatan kaki
daftar definisi
singkatan
emoji
wadah khusus
menyisipkan
tanda
... dan lainnya
Secara default, semua aturan diaktifkan, namun dapat dibatasi oleh opsi. Saat plugin dimuat, semua aturannya diaktifkan secara otomatis.
impor markdownit dari 'markdown-it'// Aktifkan/nonaktifkan aturan, dengan curryingconst md = markdownit() .disable(['tautan', 'gambar']) .aktifkan(['tautan']) .enable('image');// Aktifkan semuanyaconst md = markdownit({ html: benar, menghubungkan: benar, juru ketik: benar,});
Anda dapat menemukan semua aturan di sumber:
parser_core.mjs
parser_block.mjs
parser_inline.mjs
Berikut hasil readme parse pada MB Pro Retina 2013 (2.4 GHz):
npm menjalankan benchmark-deps benchmark/benchmark.mjs baca saya Sampel yang dipilih: (1 dari 28) > README Contoh: README.md (7774 bytes) > commonmark-reference x 1,222 ops/sec ±0,96% (97 run sample) > current x 743 ops/sec ±0,84% (97 run sample) > current-commonmark x 1,568 ops/sec ±0,84% (98 pengambilan sampel) > ditandai x 1,587 operasi/dtk ±4,31% (93 sampel dijalankan)
Catatan. Versi CommonMark berjalan dengan penormal tautan yang disederhanakan untuk perbandingan yang lebih "jujur". Selisihnya adalah ≈1,5×.
Seperti yang Anda lihat, markdown-it
tidak sepadan dengan kecepatan untuk fleksibilitasnya. Perlambatan versi "lengkap" disebabkan oleh fitur tambahan yang tidak tersedia di implementasi lain.
Tersedia sebagai bagian dari Langganan Tidelift.
Pengelola markdown-it
dan ribuan paket lainnya bekerja sama dengan Tidelift untuk memberikan dukungan komersial dan pemeliharaan untuk dependensi sumber terbuka yang Anda gunakan untuk membangun aplikasi Anda. Menghemat waktu, mengurangi risiko, dan meningkatkan kesehatan kode, sekaligus membayar pengelola dependensi yang Anda gunakan. Pelajari lebih lanjut.
Alex Kocharin github/rlidwka
Vitaly Puzrin github/puzrin
penurunan harga-itu adalah hasil keputusan penulis yang berkontribusi pada 99% kode Remarkable untuk pindah ke proyek dengan penulis yang sama tetapi kepemimpinan baru (Vitaly dan Alex). Ini bukan garpu.
Terima kasih banyak kepada John MacFarlane atas karyanya pada spesifikasi CommonMark dan implementasi referensi. Karyanya menghemat banyak waktu kami selama pengembangan proyek ini.
Tautan Terkait:
https://github.com/jgm/CommonMark - referensi implementasi CommonMark di C & JS, juga berisi spesifikasi terbaru & demo online.
http://talk.commonmark.org - Forum CommonMark, tempat yang baik untuk mengkolaborasikan upaya pengembang.
Pelabuhan
gerak-penurunan harga-itu - Ruby/RubyMotion
penurunan harga-itu-py- Python