Showdown adalah javascript penurunan harga ke HTML Converter, berdasarkan karya asli oleh John Gruber. Showdown dapat digunakan sisi klien (di browser) atau sisi server (dengan node.js).
Lihat demo langsung di sini: http://demo.showdownjs.com/
Seperti yang Anda ketahui, Showdownjs adalah perpustakaan gratis dan itu akan tetap gratis selamanya. Namun, memelihara dan meningkatkan perpustakaan membutuhkan waktu dan uang.
Jika Anda menyukai pekerjaan kami dan menemukan perpustakaan kami bermanfaat, silakan donasi melalui PayPal! Kontribusi Anda akan sangat dihargai dan membantu saya terus mengembangkan perpustakaan yang luar biasa ini.
Showdownjs v 2.0 dirilis di bawah lisensi MIT. Versi sebelumnya dirilis di bawah BSD.
Anda dapat mengunduh rilis terbaru Tarball langsung dari rilis.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Paket Nuget dapat ditemukan di sini.
Anda juga dapat menggunakan salah satu dari beberapa CDN yang tersedia:
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
Catatan : Ganti <version tag>
dengan versi panjang penuh yang sebenarnya Anda minati misalnya 1.9.0
Showdown telah berhasil diuji dengan:
Secara teori, Showdown akan bekerja di browser apa pun yang mendukung ECMA 262 edisi ke -3 (JavaScript 1.5). Konverter itu sendiri bahkan mungkin bekerja dalam hal -hal yang bukan browser web, seperti Acrobat. Tidak ada janji.
Showdown dimaksudkan untuk mengerjakan versi Node.js yang didukung (lihat jadwal rilis Node.js. Kode ini dapat bekerja dengan versi node.js sebelumnya, tetapi tidak ada akomidasi yang dibuat untuk memastikannya.
Jika Anda mencari Showdown V <1.0.0, Anda dapat menemukannya di cabang Legacy .
Anda dapat memeriksa changelog lengkap
Periksa halaman wiki kami untuk contoh dan dokumentasi yang lebih mendalam.
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 ) ;
Kedua contoh itu harus output ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
Anda dapat mengubah beberapa perilaku default Showdown melalui opsi.
Opsi dapat diatur:
Menetapkan opsi "global" memengaruhi semua contoh pertikaian
showdown . setOption ( 'optionKey' , 'value' ) ;
Mengatur opsi "lokal" hanya mempengaruhi objek konverter yang ditentukan. Opsi lokal dapat diatur:
melalui konstruktor
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
melalui metode setoption ()
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
Showdown menyediakan 2 metode (baik lokal maupun global) untuk mengambil opsi set sebelumnya.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
Anda bisa mendapatkan opsi default Showdown dengan:
var defaultOptions = showdown . getDefaultOptions ( ) ;
omitextrawlincodeblocks : (boolean) [default false] menghilangkan trailing newline di blok kode. Mantan:
Ini:
< code > < pre > var foo = 'bar';
</ pre > </ code >
Menjadi ini:
< code > < pre > var foo = 'bar'; </ pre > </ code >
NoHeaderID : (Boolean) [Default False] Nonaktifkan generasi otomatis ID header. Pengaturan ke overrides prefixheadid true
CustomizedHeaderId : (boolean) [default false] Gunakan teks dalam kawat gigi keriting sebagai ID header. (Sejak v1.7.0) Contoh:
## Sample header {real-id} will use real-id as id
GhCompatibleHeaderId : (boolean) [default false] menghasilkan id header yang kompatibel dengan gaya gitub (spasi diganti dengan tanda hubung dan sekelompok karakter non alfanumerik dilepas) (karena v1.5.5)
PrefixHeaderId : (String/Boolean) [default false] Tambahkan awalan ke ID header yang dihasilkan. Melewati string akan awalan string itu ke ID header. Pengaturan ke true
akan menambahkan awalan 'bagian' generik.
RawPrefixHeaderId : (boolean) [default false] Mengatur opsi ini ke true akan mencegah pertikaian memodifikasi awalan. Ini mungkin menghasilkan ID yang salah (jika, misalnya, "Char digunakan dalam awalan). Tidak berpengaruh jika awalan kepala diatur ke false. (Karena v 1.7.3)
RawheaderId : (boolean) [default false] Hapus hanya spasi, 'dan "dari ID header yang dihasilkan (termasuk awalan), menggantikannya dengan tanda hubung (- ) .
HeaderLevelStart : (integer) [Default 1] Atur level awal header. Misalnya, mengatur ini ke 3 berarti itu
# foo
akan diuraikan sebagai
< h3 > foo </ h3 >
Parseimgdimensions : (Boolean) [Default False] Aktifkan dukungan untuk mengatur dimensi gambar dari dalam sintaks Markdown. Contoh:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutolink : (boolean) [default false] Menghidupkan opsi ini akan memungkinkan tautan otomatis ke URL. Ini berarti bahwa:
some text www.google.com
akan diuraikan sebagai
< p > some text < a href =" www.google.com " > www.google.com </ a >
ExcludetrailingPunctionFromurls : (boolean) [default false] Opsi ini tidak termasuk membuntuti tanda baca dari URL autolinking. Tanda baca dikecualikan : . ! ? ( )
. Hanya berlaku jika opsi SimplifiedAutolink diatur ke true
.
Literalmidwordunderscores : (boolean) [default false] menyalakan ini akan menghentikan pertikaian dari menafsirkan garis bawah di tengah kata sebagai <em>
dan <strong>
dan sebaliknya memperlakukan mereka sebagai garis bawah literal.
Contoh:
some text with __ underscores __ in middle
akan diuraikan sebagai
< p > some text with__underscores__in middle </ p >
Literalmidwordaskasks : (boolean) [default false] menyalakan ini akan menghentikan pertikaian dari menafsirkan tanda bintang di tengah kata sebagai <em>
dan <strong>
dan sebaliknya memperlakukan mereka sebagai tanda bintang literal.
StrikeThrough : (boolean) [default false] Aktifkan dukungan untuk sintaksis strikethrough. ~~strikethrough~~
sebagai <del>strikethrough</del>
Tabel : (boolean) [default false] Aktifkan dukungan untuk sintaks Tabel. Contoh:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
Lihat wiki untuk info lebih lanjut
tableSheaderId : (boolean) [default false] Jika diaktifkan menambahkan properti ID ke tag header tabel.
GhcodeBlocks : (boolean) [default true] Aktifkan dukungan untuk gaya blok kode GFM.
TaskLists : (boolean) [default false] Mengaktifkan dukungan untuk daftar tugas GFM. Contoh:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (boolean) [default false] mencegah efek aneh dalam pratinjau langsung karena input yang tidak lengkap
SmartIndentationFix : (Boolean) [Default False] mencoba untuk memperbaiki masalah indentasi dengan cerdas terkait dengan string template ES6 di tengah -tengah kode indentasi.
DisableForced4SpacesEndentsublists : (boolean) [default false] menonaktifkan persyaratan sublists indentasi dengan 4 ruang agar mereka bersarang, secara efektif kembali ke perilaku lama di mana 2 atau 3 ruang sudah cukup. (Sejak v1.5.0)
SimpleLineBreaks : (boolean) [default false] Parses garis istirahat sebagai <br>
, tanpa membutuhkan 2 spasi di ujung garis (karena v1.5.1)
a line
wrapped in two
berubah menjadi:
< p > a line < br >
wrapped in two </ p >
NequespacebeforeHeadingText : (Boolean) [Default False] Membuat Menambahkan Ruang antara #
dan Teks Header Wajib (karena V1.5.3)
Ghentions : (boolean) [default false] Mengaktifkan github @mentions, yang tautan ke nama pengguna yang disebutkan (sejak v1.6.0)
ghentionslink : (string) [default https://github.com/{u}
] mengubah tautan yang dihasilkan oleh @mentions. Showdown akan menggantikan {u}
dengan nama pengguna. Hanya berlaku jika opsi Ghmentions diaktifkan. Contoh: @tivie
dengan GhentionsOption diatur ke //mysite.com/{u}/profile
akan menghasilkan <a href="//mysite.com/tivie/profile">@tivie</a>
Encodeemails : (boolean) [Default true] Mengaktifkan alamat email pengkodean melalui penggunaan entitas karakter, mengubah alamat email ASCII menjadi entitas desimal yang setara. (Sejak v1.6.1)
Catatan: Sebelum versi 1.6.1, email akan selalu dikaburkan melalui DEC dan HEX encoding.
OpenLinksinNewWindow : (Boolean) [Default False] Buka semua tautan di Windows Baru (dengan menambahkan target="_blank"
ke <a>
Tag) (karena v1.7.0)
backslashescapeshtmltags : (boolean) [default false] dukungan untuk tag html melarikan diri. Contoh: <div>foo</div>
(sejak v1.7.2)
emoji : (boolean) [default false] Aktifkan dukungan emoji. Contoh: this is a :smile: emoji
untuk info lebih lanjut tentang emoji yang tersedia, lihat https://github.com/showdownjs/showdown/wiki/emojis (sejak v.1.8.0)
Garis bawah : (boolean) [default false] Fitur eksperimental memungkinkan dukungan untuk garis bawah. Sintaks adalah garis bawah atau tiga kali lipat dari __underlined word__
. Dengan opsi ini diaktifkan, garis bawah tidak lagi menjadi parse ke <em>
dan <strong>
.
Ellipsis : (Boolean) [Default True] menggantikan tiga titik dengan karakter ellipsis unicode.
LetterHTMLDOCUMEN : (BOOLEAN) [Default False] Mengeluarkan dokumen HTML lengkap, termasuk <html>
, <head>
dan <body>
tag 'bukan fragmen HTML. (Sejak v.1.8.5)
metadata : (boolean) [default false] Aktifkan dukungan untuk metadata dokumen (didefinisikan di bagian atas dokumen antara «««
dan »»»
atau antara ---
dan ---
). (Sejak 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) [default false] split blockquote blocks. (Sejak v.1.8.6)
Morestyling : (Boolean) [Default False] Menambahkan beberapa kelas yang berguna untuk gaya CSS. (Sejak v2.0.1)
task-list-item-complete
ke item tugas yang diselesaikan dalam daftar tugas GFM.Catatan : Harap dicatat bahwa sampai versi 1.6.0 , semua opsi ini dinonaktifkan secara default di alat CLI.
Anda juga dapat menggunakan rasa atau preset untuk mengatur opsi yang benar secara otomatis, sehingga Showdown berperilaku seperti rasa penurunan harga yang populer.
Saat ini, rasa berikut tersedia:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
Showdown juga dibundel dengan alat antarmuka baris perintah. Anda dapat memeriksa halaman CLI Wiki untuk info lebih lanjut
Proyek ShowdownJS juga memberikan integrasi yang mulus dengan AngularJS melalui "plugin". Silakan kunjungi https://github.com/showdownjs/ngshowdown untuk informasi lebih lanjut.
Jika Anda menggunakan TypeScript, Anda mungkin ingin menggunakan jenisnya
Integrasi dengan SystemJS dapat diperoleh melalui plugin "System-MD" pihak ketiga.
Untuk menggunakan showdownjs sebagai komponen vue dengan cepat, Anda dapat memeriksa vue-showdown.
Showdown tidak membersihkan input. Ini adalah dengan desain karena Markdown bergantung padanya untuk memungkinkan fitur -fitur tertentu diuraikan dengan benar menjadi HTML. Namun, ini berarti injeksi XSS sangat mungkin.
Silakan merujuk ke artikel Wiki, kerentanan XSS Markdown (dan cara mengurangi) untuk informasi lebih lanjut.
Showdown memungkinkan fungsi tambahan untuk dimuat melalui ekstensi. (Anda dapat menemukan daftar ekstensi pertarungan yang diketahui di sini) Anda juga dapat menemukan boilerplate, untuk membuat ekstensi Anda sendiri di repositori ini
< 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' ] } ) ;
Membangun klon repositori Anda mudah.
Prasyarat: Node.js V12, NPM dan NPX harus diinstal.
Jalankan npm install
.
Jalankan npx grunt build
(lihat Gruntfile.js
). Perintah ini:
dist
. Serangkaian tes tersedia yang membutuhkan node.js. Setelah node diinstal, jalankan perintah berikut dari root proyek untuk menginstal dependensi:
npm install
Setelah diinstal tes dapat dijalankan dari root proyek menggunakan:
npm test
Kasing uji baru dapat dengan mudah ditambahkan. Buat file markdown (ending in .md
) yang berisi markdown untuk menguji. Buat file .html
dengan nama yang sama persis. Ini akan secara otomatis diuji ketika tes dieksekusi dengan mocha
.
Jika Anda ingin berkontribusi, baca panduan cepat berikut.
Anda dapat meminta fitur baru dengan mengirimkan masalah. Jika Anda ingin mengimplementasikan fitur baru, jangan ragu untuk mengeluarkan permintaan tarik.
PR itu luar biasa. Namun, sebelum Anda mengirimkan permintaan tarik Anda, pertimbangkan pedoman berikut:
Cari GitHub untuk permintaan tarik terbuka atau tertutup yang berkaitan dengan kiriman Anda. Anda tidak ingin menduplikasi upaya.
Saat mengeluarkan PR yang mengubah kode, buat perubahan Anda di cabang Git baru berdasarkan perkembangan :
git checkout -b my-fix-branch develop
Jalankan suite tes lengkap sebelum mengirimkan dan pastikan semua tes lulus (jelas = p).
Cobalah untuk mengikuti aturan gaya pengkodean kami. Breaking mereka mencegah PR untuk lulus tes.
Menahan diri untuk tidak memperbaiki beberapa masalah dalam permintaan tarik yang sama. Lebih disukai untuk membuka beberapa PR kecil daripada yang sulit ditinjau.
Jika PR memperkenalkan fitur baru atau memperbaiki masalah, silakan tambahkan kasus uji yang sesuai .
Kami menggunakan catatan komit konvensional untuk menghasilkan changelog yang mengikuti spesifikasi changelog konvensional. Sangat membantu jika pesan komit Anda mematuhi pedoman komit ini.
Jangan lupa menambahkan nama Anda ke file kredit.md. Kami suka memberikan kredit jika itu jatuh tempo.
Jika kami menyarankan perubahan maka:
git rebase develop -i
git push origin my-fix-branch -f
Setelah permintaan tarik Anda digabungkan, Anda dapat dengan aman menghapus cabang Anda.
Jika Anda punya waktu untuk berkontribusi pada proyek ini, kami merasa berkewajiban bahwa Anda mendapatkan kredit untuk itu. Aturan -aturan ini memungkinkan kami untuk meninjau PR Anda lebih cepat dan akan memberi Anda kredit yang sesuai di profil GitHub Anda. Kami berterima kasih sebelumnya atas kontribusi Anda!
Kami mencari anggota untuk membantu mempertahankan pertikaian. Silakan lihat masalah ini untuk menyatakan minat atau mengomentari catatan ini.
Daftar Kredit Lengkap di https://github.com/showdownjs/showdown/blob/master/credits.md
Showdown didukung oleh: