diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/livepreview.js b/lib/gollum/frontend/public/gollum/livepreview/js/livepreview.js index 7317f4a1..62cdbf25 100644 --- a/lib/gollum/frontend/public/gollum/livepreview/js/livepreview.js +++ b/lib/gollum/frontend/public/gollum/livepreview/js/livepreview.js @@ -244,6 +244,27 @@ function highlight( element, language ) { element.parentNode.parentNode.replaceChild( newDiv, element.parentNode ); } +// Pygments and Ace have different names for languages. +function pygmentsLanguageToAceMode( declaredLanguage ) { + switch ( declaredLanguage ) { + case 'c': + case 'c++': + case 'cpp': + case 'objective-c': + return 'c_cpp'; + case 'c#': + return 'csharp'; + case 'coffeescript': + return 'coffee'; + case 'html+erb': + return 'html' + } + + // Assume language name is the same + // if it's not handled above. + return declaredLanguage; +} + var makePreviewHtml = function () { var text = editorSession.getValue(); @@ -294,21 +315,7 @@ var makePreviewHtml = function () { // the syntax for code highlighting means all code, even one line, contains newlines. if ( txt.length > 1 && codeHTML.match( /\n/ ) ) { var declaredLanguage = element.className.toLowerCase(); - var aceMode = declaredLanguage; - - // GitHub supports 'c', 'c++', 'cpp' - // which must trigger the 'c_cpp' mode in Ace. - if ( declaredLanguage === 'c' || - declaredLanguage === 'c++' || - declaredLanguage === 'cpp' ) { - aceMode = 'c_cpp'; - } - - // Pygments's name for CoffeeScript is 'coffeescript', but Ace - // calls it 'coffee'. - if ( declaredLanguage === 'coffeescript' ) { - aceMode = 'coffee'; - } + var aceMode = pygmentsLanguageToAceMode( declaredLanguage ); if ( $.inArray( declaredLanguage, languages ) === -1 ) { // Unsupported language.