Fix pygments language to Ace mode translation

This commit is contained in:
bootstraponline
2012-10-10 20:16:04 -06:00
parent 4776d0b422
commit 8d06b5e67e
@@ -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.