用marked.js以及MarkdownExtraExtended替换旧的markdown解析引擎

全面支持表格,以及回车换行
This commit is contained in:
joyqi
2013-11-20 11:16:25 +08:00
parent 3873bff06e
commit 10ed729f84
11 changed files with 6962 additions and 7126 deletions
+29 -5
View File
@@ -1,5 +1,6 @@
<?php $content = !empty($post) ? $post : $page; if ($options->markdown && (!$content->have() || $content->isMarkdown)): ?>
<script src="<?php $options->adminUrl('js/markdown.js?v=' . $suffixVersion); ?>"></script>
<script src="<?php $options->adminUrl('js/marked.js?v=' . $suffixVersion); ?>"></script>
<script src="<?php $options->adminUrl('js/pagedown.js?v=' . $suffixVersion); ?>"></script>
<script src="<?php $options->adminUrl('js/diff.js?v=' . $suffixVersion); ?>"></script>
<script>
$(document).ready(function () {
@@ -7,7 +8,7 @@ $(document).ready(function () {
toolbar = $('<div class="editor" id="wmd-button-bar" />').insertBefore(textarea.parent())
preview = $('<div id="wmd-preview" />').insertAfter('.submit');
var converter = new Showdown.converter(), options = {};
var options = {};
options.strings = {
bold: '<?php _e('加粗'); ?> <strong> Ctrl+B',
@@ -55,13 +56,36 @@ $(document).ready(function () {
help: '<?php _e('Markdown语法帮助'); ?>'
};
var editor = new Markdown.Editor(converter, '', options),
var editor = new Markdown.Editor(marked, '', options),
diffMatch = new diff_match_patch(), last = '', preview = $('#wmd-preview'),
mark = '@mark' + Math.ceil(Math.random() * 100000000) + '@',
span = '<span class="diff" />';
// 设置markdown
marked.setOptions({
breaks : true
});
// 自动跟随
converter.postConversion = function (html) {
editor.hooks.chain('postMarkdown', function (html) {
html = html.replace(/<\/?(\!doctype|html|head|body|link|title|input|select|button|textarea|style|noscript)[^>]*>/ig, function (all) {
return all.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/'/g, '&#039;')
.replace(/"/g, '&quot;');
});
if (html.indexOf('<!--more-->') > 0) {
var parts = html.split(/\s*<\!\-\-more\-\->\s*/),
summary = parts.shift(),
details = parts.join('');
html = '<div class="summary">' + summary + '</div>'
+ '<div class="details">' + details + '</div>';
}
var diffs = diffMatch.diff_main(last, html);
last = html;
@@ -110,7 +134,7 @@ $(document).ready(function () {
}
return html;
}
});
editor.hooks.chain('onPreviewRefresh', function () {
var diff = $('.diff', preview);