対決は、John Gruberのオリジナル作品に基づいたJavaScriptマークダウンへのHTMLコンバーターです。対決は、クライアント側(ブラウザ内)またはサーバー側(node.jsを使用)を使用できます。
ライブデモをご覧ください:http://demo.showdownjs.com/
ご存知のように、showdownjsは無料のライブラリであり、永遠に無料のままになります。ただし、図書館の維持と改善には時間とお金がかかります。
あなたが私たちの仕事が好きで、私たちの図書館が役に立つと思うなら、PayPalから寄付してください!あなたの貢献は大歓迎され、この素晴らしいライブラリの開発を続けてくれます。
showdownjs v 2.0は、MITライセンスの下でリリースされます。以前のバージョンはBSDでリリースされます。
リリースから最新リリースのTarballを直接ダウンロードできます。
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Nugetパッケージはここにあります。
利用可能ないくつかのCDNのいずれかを使用することもできます。
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第3版(JavaScript 1.5)をサポートするブラウザで機能します。コンバーター自体は、AcrobatのようなWebブラウザではないものでも機能する場合があります。約束はできません。
対決は、サポートされているnode.jsバージョンで動作することを目的としています(node.jsリリーススケジュールを参照してください。コードは以前のバージョンのnode.jsで動作する場合がありますが、それを確実にするための順応は行われません。
対決V <1.0.0を探している場合は、レガシーブランチで見つけることができます。
完全なChangelogを確認できます
例とより詳細なドキュメントについては、Wikiページを確認してください。
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 >
Optionsを使用して、対決のデフォルト動作の一部を変更できます。
オプションを設定できます:
「グローバル」オプションの設定は、対決のすべてのインスタンスに影響します
showdown . setOption ( 'optionKey' , 'value' ) ;
「ローカル」オプションの設定は、指定されたコンバーターオブジェクトのみに影響します。ローカルオプションを設定できます。
コンストラクターを介して
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
setoption()メソッドを介して
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
対決は、以前のセットオプションを取得するための2つの方法(ローカルとグローバルの両方)を提供します。
// 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)[default false]コードブロックの後続の新しいラインを省略します。元:
これ:
< code > < pre > var foo = 'bar';
</ pre > </ code >
これになります:
< code > < pre > var foo = 'bar'; </ pre > </ code >
noheaderid :( boolean)[デフォルトfalse]ヘッダーIDの自動生成を無効にします。 True Overridesプレフィックスヘッディアドに設定します
カスタマイズされたHeaderid :(boolean)[デフォルトのfalse]ヘッダーIDとしての巻き装置でテキストを使用します。 (v1.7.0以降)例:
## Sample header {real-id} will use real-id as id
ghcompatibleheaderid :(boolean)[default false] Githubスタイルと互換性のあるヘッダーIDを生成します(スペースはダッシュに置き換えられ、数字の非英数字チャーが削除されます) (v1.5.5以降)
prefixheaderid :( string/boolean)[デフォルトのfalse]生成されたヘッダーIDにプレフィックスを追加します。文字列を渡すと、その文字列はヘッダーIDにプレフィックスになります。 true
に設定すると、一般的な「セクション」プレフィックスが追加されます。
rawprefixheaderid :( boolean)[default false]このオプションをTRUEに設定すると、対決がプレフィックスの変更を防ぎます。これにより、不正なIDが生じる可能性があります(たとえば、「接頭辞でCharが使用されている場合)。プレフィックスヘッドライドがfalsに設定されている場合(v 1.7.3以降)効果はありません。
rawheaderid :(boolean)[デフォルトのfalse]スペースのみを削除し、「生成されたヘッダーID(プレフィックスを含む)から、それらをダッシュ( - )に置き換えます。警告:これにより、不正なIDが生じる可能性があります(v1.7.3以降)
headerlevelstart :(整数)[デフォルト1]ヘッダーの開始レベルを設定します。たとえば、これを3に設定することはそれを意味します
# foo
として解析されます
< h3 > foo </ h3 >
parseimgdimensions :( boolean)[デフォルトのfalse]マークダウン構文内から画像寸法を設定するためのサポートを有効にします。例:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimpliedAutolink :( boolean)[デフォルトのfalse]このオプションをオンにすると、URLへの自動リンクが有効になります。これは、それを意味します:
some text www.google.com
として解析されます
< p > some text < a href =" www.google.com " > www.google.com </ a >
excludeTrailingPunctuationFromurls :( boolean)[デフォルトFalse]このオプションは、Autolinking URLからの後続の句読点を除外します。句読点除外: . ! ? ( )
。 SimpliedAutolinkオプションがtrue
に設定されている場合にのみ適用されます。
literalmidwordunderscores :(boolean)[デフォルトのfalse]これをオンにすると、対決が言葉の中間で<em>
and <strong>
と解釈され、代わりにそれらを文字通りのアンダースコアとして扱います。
例:
some text with __ underscores __ in middle
として解析されます
< p > some text with__underscores__in middle </ p >
literalmidwordasterisks :( boolean)[デフォルトのfalse]これをオンにすると、対決が単語の途中でアスタリスクを<em>
and <strong>
と解釈することを止め、代わりにそれらを文字通りのアスタリスクとして扱います。
strikethrough :( boolean)[デフォルトのfalse] Strikethrough構文のサポートを有効にします。 ~~strikethrough~~
as <del>strikethrough</del>
表:(ブール)[デフォルトのfalse]テーブルの構文のサポートを有効にします。例:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
詳細については、wikiをご覧ください
TableSheAderID :( boolean)[デフォルトFalse]有効になった場合、IDプロパティをテーブルヘッダータグに追加します。
GHCodeBlocks :( boolean)[default true] GFMコードブロックスタイルのサポートを有効にします。
タスクリスト:(boolean)[デフォルトのfalse] GFMタスクリストのサポートを有効にします。例:
- [x] This task is done
- [ ] This is still pending
smoothlivepreview :( boolean)[デフォルトのfalse]入力が不完全であるため、ライブプレビューの奇妙な効果を防ぎます
smartIndentationFix :( boolean)[デフォルトのfalse]は、インデントコードの最中にES6テンプレート文字列に関連するインデントの問題をスマートに修正しようとします。
disableforced4spacesindentedsublists :(boolean)[デフォルトのfalse] 4つのスペースをネストするために、4つのスペースでサブリストをインデントする要件を無効にし、2つまたは3つのスペースで十分な古い行動に効果的に戻ります。 (v1.5.0以降)
SimpleLineBreaks :( boolean)[デフォルトのfalse]ラインが<br>
として壊れます。ラインの最後に2つのスペースを必要とせずに(v1.5.1以降)
a line
wrapped in two
変換:
< p > a line < br >
wrapped in two </ p >
requireSpacebeforeheadingText :( boolean)[default false] #
とヘッダーテキストの間にスペースを追加することを強制する(v1.5.3以降)
ghmentions :(boolean)[デフォルトのfalse] github @mentionsを有効にします。
ghmentionslink :(string)[デフォルトhttps://github.com/{u}
] @mentionsで生成されたリンクを変更します。対決は{u}
ユーザー名に置き換えます。 Ghmentionsオプションが有効になっている場合にのみ適用されます。例: @tivie
with ghmentionsoptionを//mysite.com/{u}/profile
に設定します<a href="//mysite.com/tivie/profile">@tivie</a>
EncodeEmails :( boolean)[default true]キャラクターエンティティの使用を介してエンコードを行う電子メールアドレスを有効にし、ASCII電子メールアドレスを同等の小数点エンティティに変換します。 (v1.6.1以降)
注:バージョン1.6.1の前に、メールは常にDECおよびHEXエンコードを通じて難読化されます。
OpenLinksinNewWindow :( boolean)[default false]新しいウィンドウですべてのリンクを開きます(属性target="_blank"
を<a>
タグに追加) (v1.7.0以降)
backslashescapeshtmltags :( boolean)[デフォルトのfalse] 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]実験機能下線のサポートを有効にします。構文は二重またはトリプルのアンダースコアEx: __underlined word__
です。このオプションが有効になっていると、アンダースコアは<em>
および<strong>
に分割されなくなりました。
Ellipsis :( Boolean)[デフォルトTrue] 3つのドットをEllipsis Unicode文字に置き換えます。
completehtmldocument :( boolean)[default false] htmlフラグメントの代わりに<html>
、 <head>
、 <body>
タグを含む完全なHTMLドキュメントを出力します。 (v.1.8.5以降)
メタデータ:(boolean)[デフォルトのfalse]ドキュメントメタデータのサポートを有効にします( «««
and »»»
または---
--- ---
の間のドキュメントの上部で定義)。 (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]隣接するblockquoteブロックを分割(v.1.8.6以降)
Morestyling :( Boolean)[デフォルトFalse] CSSスタイリングにいくつかの有用なクラスを追加します。 (v2.0.1以降)
task-list-item-complete
を完了したタスクアイテムに追加します。注:バージョン1.6.0まで、これらのオプションはすべて、CLIツールでデフォルトで無効になっていることに注意してください。
また、フレーバーまたはプリセットを使用して正しいオプションを自動的に設定することもできます。これにより、対決は人気のマークダウンフレーバーのように動作します。
現在、次のフレーバーが利用可能です。
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
対決には、コマンドラインインターフェイスツールもバンドルされています。詳細については、Cli Wikiページを確認できます
showdownjsプロジェクトは、「プラグイン」を介してAngularjsとシームレスに統合されます。詳細については、https://github.com/showdownjs/ngshowdownをご覧ください。
TypeScriptを使用している場合は、EnculationTypedのタイプを使用する可能性があります
SystemJSとの統合は、サードパーティの「System-MD」プラグインを介して取得できます。
showdownjsをVueコンポーネントとしてすばやく使用するには、Vue-Showdownを確認できます。
対決は入力を消毒しません。これは、特定の機能をHTMLに正しく解析できるようにマークダウンが依存しているため、設計によるものです。ただし、これはXSS注入がかなり可能であることを意味します。
詳細については、Wikiの記事MarkdownのXSS脆弱性(および緩和する方法)を参照してください。
対決により、追加の機能を拡張機能を介してロードできます。 (ここで既知の対決拡張機能のリストを見つけることができます)また、このリポジトリに独自の拡張機能を作成するために、ボイラープレートを見つけることもできます
< 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
新しいテストケースを簡単に追加できます。テストするマークダウンを含むマークダウンファイル( .md
で終了)を作成します。まったく同じ名前の.html
ファイルを作成します。テストがmocha
で実行されると、自動的にテストされます。
貢献したい場合は、次のクイックガイドをお読みください。
問題を送信して、新機能をリクエストできます。新機能を実装したい場合は、お気軽にプルリクエストを発行してください。
PRは素晴らしいです。ただし、プルリクエストを送信する前に、次のガイドラインを検討してください。
Githubを検索して、提出に関連するオープンまたはクローズドプルリクエストをご覧ください。努力を複製したくありません。
コードを変更するPRSを発行する場合、開発に基づいて新しいgitブランチに変更を加えます。
git checkout -b my-fix-branch develop
提出する前に完全なテストスイートを実行し、すべてのテストが合格していることを確認してください(明らかに= P)。
コーディングスタイルのルールに従ってください。それらを壊すと、PRがテストに合格するのを防ぎます。
同じプルリクエストで複数の問題を修正しないでください。大きなものをレビューするのが難しいのではなく、複数の小さなPRを開くことが望ましいです。
PRが新機能を導入するか、問題を修正した場合は、適切なテストケースを追加してください。
従来のコミットノートを使用して、従来のChangelog仕様に続く変更ログを生成します。コミットメッセージがこれらのコミットガイドラインに付着すると、非常に役立ちます。
あなたの名前をCredits.mdファイルに追加することを忘れないでください。私たちはそれが期限が来たら信用を与えるのが好きです。
変更を提案する場合、
git rebase develop -i
git push origin my-fix-branch -f
プルリクエストがマージされた後、ブランチを安全に削除できます。
このプロジェクトに貢献する時間がある場合、私たちはあなたがそれを信用することを義務付けていると感じています。これらのルールにより、PRをより速く確認することができ、GitHubプロファイルで適切なクレジットを提供します。よろしくお願いいたします。
対決の維持を支援するメンバーを探しています。この問題を参照して、このメモに興味を表明したり、コメントしたりしてください。
https://github.com/showdownjs/showdowd/blob/master/credits.mdの完全なクレジットリスト
対決は次のようになりました: