StackOverflowのMarkdownエディターに夢中になったことを確認しました。showdown.js
ジョン・フレイザーのフォークです。私のプロジェクトでこのパーサーを使用したいのですが、ソースを分析したところ、私の好みには少し面倒であることがわかりました。
そこで、私は自分のニーズを満たすためにJavaScriptコードを変更することに着手しました。
- すべてのグローバル変数を取り除く、
- 変数宣言を
var
スコープごとに1つに結合し、 - 連結を配列結合に変更すると、
- 縮小されたソースを小さくすることを目的とした他のさまざまな調整。
1つの小さな問題を除いて、すべてがうまく機能していcommand.doList
ます。関数のオートコンプリートコードがChromeで不安定です。Internet Explorer、FireFox、Safariで正しく動作するようにすべてをテストしました。私は次の行に問題を分離しました:
// Get the item prefix - e.g. " 1. " for a numbered list, " - " for a bulleted
// list.
getItemPrefix = function () {
var prefix;
if (isNumberedList) {
// the `s` variable is just a string space.
prefix = [s, num, '. '].join('');
num++;
} else {
prefix = [s, bullet, s].join('');
}
return prefix;
};
// Fixes the prefixes of the other list items.
getPrefixedItem = function (itemText) {
// The numbering flag is unset when called by autoindent.
if (isNumberedList === undefined) {
isNumberedList = /^\s*\d/.test(itemText);
}
// Renumber/bullet the list element.
// THE FOLLOWING LINES COMMENTED OUT TO FIX A BUG.
//itemText = itemText.replace(/^[ ]{0,3}([\*\+\-]|\d+[.])\s/gm,
// function () { return getItemPrefix(); });
return itemText;
};
終わり近くの2つのコメントアウトされた行は、Chromeが不安定な動作をするのを防ぎますが、番号付きリストは自動インクリメントされなくなりました。行のコメントを外すとすぐに、Chromeを除くすべての主要なブラウザが正常に動作し始めます。(Chromeはおかしくなり、追加の番号と箇条書きでリストを自動補完します。これは、順序付けされていないリストを使用しようとした場合にも発生します。)
この問題は明らかにStackOverflowには存在しないので、私の側の愚かな見落としに過ぎないことを願っています。(またはStack Overflowがバグを更新して修正しました。)