mirror of
https://github.com/showdownjs/showdown.git
synced 2024-03-22 13:30:55 +08:00
Support for github-style code blocks
This commit is contained in:
parent
3c52317851
commit
a589a987d4
|
@ -355,6 +355,7 @@ var _RunBlockGamut = function(text) {
|
|||
text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,key);
|
||||
|
||||
text = _DoLists(text);
|
||||
text = _DoGithubCodeBlocks(text);
|
||||
text = _DoCodeBlocks(text);
|
||||
text = _DoBlockQuotes(text);
|
||||
|
||||
|
@ -889,12 +890,48 @@ var _DoCodeBlocks = function(text) {
|
|||
return text;
|
||||
}
|
||||
|
||||
var _DoGithubCodeBlocks = function(text) {
|
||||
//
|
||||
// Process Github-style code blocks
|
||||
// Example:
|
||||
// ```ruby
|
||||
// def hello_world(x)
|
||||
// puts "Hello, #{x}"
|
||||
// end
|
||||
// ```
|
||||
//
|
||||
|
||||
|
||||
// attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
|
||||
text += "~0";
|
||||
|
||||
text = text.replace(/\n```(.*)\n([^`]+)\n```/g,
|
||||
function(wholeMatch,m1,m2) {
|
||||
var language = m1;
|
||||
var codeblock = m2;
|
||||
|
||||
codeblock = _EncodeCode(codeblock);
|
||||
codeblock = _Detab(codeblock);
|
||||
codeblock = codeblock.replace(/^\n+/g,""); // trim leading newlines
|
||||
codeblock = codeblock.replace(/\n+$/g,""); // trim trailing whitespace
|
||||
|
||||
codeblock = "<pre><code class=" + language + ">" + codeblock + "\n</code></pre>";
|
||||
|
||||
return hashBlock(codeblock);
|
||||
}
|
||||
);
|
||||
|
||||
// attacklab: strip sentinel
|
||||
text = text.replace(/~0/,"");
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
var hashBlock = function(text) {
|
||||
text = text.replace(/(^\n+|\n+$)/g,"");
|
||||
return "\n\n~K" + (g_html_blocks.push(text)-1) + "K\n\n";
|
||||
}
|
||||
|
||||
|
||||
var _DoCodeSpans = function(text) {
|
||||
//
|
||||
// * Backtick quotes are used for <code></code> spans.
|
||||
|
@ -946,7 +983,6 @@ var _DoCodeSpans = function(text) {
|
|||
return text;
|
||||
}
|
||||
|
||||
|
||||
var _EncodeCode = function(text) {
|
||||
//
|
||||
// Encode/escape certain characters inside Markdown code runs.
|
||||
|
@ -1299,4 +1335,4 @@ var escapeCharacters_callback = function(wholeMatch,m1) {
|
|||
} // end of Showdown.converter
|
||||
|
||||
// export
|
||||
if (typeof exports != 'undefined') exports.Showdown = Showdown;
|
||||
if (typeof exports != 'undefined') exports.Showdown = Showdown;
|
||||
|
|
Loading…
Reference in New Issue
Block a user