| Index: lib/src/prism/plugins/show-language/prism-show-language.js
|
| diff --git a/lib/src/prism/plugins/show-language/prism-show-language.js b/lib/src/prism/plugins/show-language/prism-show-language.js
|
| index 7b345d39be6bce58cccfbe8708b55de0a26f1a3f..a221263076078ea53ee3f0f688814739f7d4d1ac 100644
|
| --- a/lib/src/prism/plugins/show-language/prism-show-language.js
|
| +++ b/lib/src/prism/plugins/show-language/prism-show-language.js
|
| @@ -1,20 +1,43 @@
|
| (function(){
|
|
|
| -if (!self.Prism) {
|
| +if (typeof self === 'undefined' || !self.Prism || !self.document) {
|
| return;
|
| }
|
|
|
| -var Languages = {
|
| - 'csharp': 'C#',
|
| - 'cpp': 'C++'
|
| -};
|
| +// The languages map is built automatically with gulp
|
| +var Languages = /*languages_placeholder[*/{"css":"CSS","clike":"C-like","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","aspnet":"ASP.NET (C#)","autoit":"AutoIt","autohotkey":"AutoHotkey","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","css-extras":"CSS Extras","fsharp":"F#","glsl":"GLSL","http":"HTTP","inform7":"Inform 7","latex":"LaTeX","lolcode":"LOLCODE","matlab":"MATLAB","mel":"MEL","nasm":"NASM","nginx":"nginx","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","php":"PHP","php-extras":"PHP Extras","powershell":"PowerShell","jsx":"React JSX","rest":"reST (reStructuredText)","sas":"SAS","sass":"Sass (Sass)","scss":"Sass (Scss)","sql":"SQL","typescript":"TypeScript","vhdl":"VHDL","vim":"vim","wiki":"Wiki markup","yaml":"YAML"}/*]*/;
|
| Prism.hooks.add('before-highlight', function(env) {
|
| var pre = env.element.parentNode;
|
| if (!pre || !/pre/i.test(pre.nodeName)) {
|
| return;
|
| }
|
| - var language = Languages[env.language] || env.language;
|
| + var language = Languages[env.language] || (env.language.substring(0, 1).toUpperCase() + env.language.substring(1));
|
| pre.setAttribute('data-language', language);
|
| +
|
| + /* check if the divs already exist */
|
| + var sib = pre.previousSibling;
|
| + var div, div2;
|
| + if (sib && /\s*\bprism-show-language\b\s*/.test(sib.className) &&
|
| + sib.firstChild &&
|
| + /\s*\bprism-show-language-label\b\s*/.test(sib.firstChild.className)) {
|
| + div2 = sib.firstChild;
|
| + if (div2.getAttribute('data-language') !== language) {
|
| + div2.setAttribute('data-language', language);
|
| + div2.innerHTML = language;
|
| + }
|
| + } else {
|
| + div = document.createElement('div');
|
| + div2 = document.createElement('div');
|
| +
|
| + div2.className = 'prism-show-language-label';
|
| + div2.setAttribute('data-language', language);
|
| + div2.innerHTML = language;
|
| +
|
| + div.className = 'prism-show-language';
|
| + div.appendChild(div2);
|
| +
|
| + pre.parentNode.insertBefore(div, pre);
|
| + }
|
| });
|
|
|
| })();
|
|
|