Я решил, что влюбился в редактор Markdown в Stack Overflow. Это вилка от showdown.js
от Джона Фрейзера. Я хочу использовать этот синтаксический анализатор в моем проекте, но, проанализировав источник, я обнаружил, что он немного запутан на мой вкус.
Итак, я приступил к модификации кода JavaScript для удовлетворения своих потребностей, а именно:
- Избавление от всех глобальных переменных,
- Объединение объявлений переменных в один
var
для каждой области,
- Изменение конкатенации на соединения массивов,
- различные другие настройки, предназначенные для уменьшения уменьшенного источника.
У меня все прекрасно работает, за исключением одной маленькой проблемы: автозаполнение кода в функции 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;
};
Две закомментированные строки около конца не позволяют Chrome вести себя шатко, но нумерованные списки больше не имеют автоинкремента. Как только я откомментирую строки, все основные браузеры начинают работать нормально, кроме Chrome. (Chrome сходит с ума и автоматически дополняет список дополнительными нумерациями и маркерами, также происходит при попытке использовать неупорядоченный список.)
Очевидно, что проблема не существует здесь в переполнении стека, поэтому я надеюсь, что это просто глупый упущение с моей стороны. (Либо это, либо Stack Overflow обновил и исправил ошибку.)