diff --git a/gulpfile.js b/gulpfile.js index 0e1a88e4bb..4afcc4b012 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -94,6 +94,7 @@ function languagePlugins(cb) { componentsPromise.then(data => { const languagesMap = {}; const dependenciesMap = {}; + const aliasMap = {}; /** * Tries to guess the name of a language given its id. @@ -116,38 +117,48 @@ function languagePlugins(cb) { } } - for (const p in data.languages) { - if (p !== 'meta') { - const title = data.languages[p].displayTitle || data.languages[p].title; + for (const id in data.languages) { + if (id !== 'meta') { + const language = data.languages[id]; + const title = language.displayTitle || language.title; - addLanguageTitle(p, title); + addLanguageTitle(id, title); - for (const name in data.languages[p].aliasTitles) { - addLanguageTitle(name, data.languages[p].aliasTitles[name]); + for (const name in language.aliasTitles) { + addLanguageTitle(name, language.aliasTitles[name]); } - if (data.languages[p].alias) { - if (typeof data.languages[p].alias === 'string') { - addLanguageTitle(data.languages[p].alias, title); + if (language.alias) { + if (typeof language.alias === 'string') { + aliasMap[language.alias] = id; + addLanguageTitle(language.alias, title); } else { - data.languages[p].alias.forEach(function (alias) { + language.alias.forEach(function (alias) { + aliasMap[alias] = id; addLanguageTitle(alias, title); }); } } - if (data.languages[p].require) { - dependenciesMap[p] = data.languages[p].require; + if (language.require) { + dependenciesMap[id] = language.require; } } } const jsonLanguagesMap = JSON.stringify(languagesMap); const jsonDependenciesMap = JSON.stringify(dependenciesMap); + const jsonAliasMap = JSON.stringify(aliasMap); const tasks = [ - { plugin: paths.showLanguagePlugin, map: jsonLanguagesMap }, - { plugin: paths.autoloaderPlugin, map: jsonDependenciesMap } + { + plugin: paths.showLanguagePlugin, + maps: { languages: jsonLanguagesMap} + }, + { + plugin: paths.autoloaderPlugin, + maps: { aliases: jsonAliasMap, dependencies: jsonDependenciesMap } + } ]; let cpt = 0; @@ -162,8 +173,8 @@ function languagePlugins(cb) { for (const task of tasks) { const stream = src(task.plugin) .pipe(replace( - /\/\*languages_placeholder\[\*\/[\s\S]*?\/\*\]\*\//, - '/*languages_placeholder[*/' + task.map + '/*]*/' + /\/\*(\w+)_placeholder\[\*\/[\s\S]*?\/\*\]\*\//g, + (m, mapName) => `/*${mapName}_placeholder[*/${task.maps[mapName]}/*]*/` )) .pipe(dest(task.plugin.substring(0, task.plugin.lastIndexOf('/')))); diff --git a/plugins/autoloader/index.html b/plugins/autoloader/index.html index 4889388222..c45ea87d09 100644 --- a/plugins/autoloader/index.html +++ b/plugins/autoloader/index.html @@ -109,6 +109,9 @@
Basic usage with some Perl code:
my ($class, $filename) = @_;
+ Alias support with TypeScript's ts
:
const a: number = 0;
+
The Less filter used in Pug:
:less
foo {
diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js
index 9722d9b651..6d5f44219e 100644
--- a/plugins/autoloader/prism-autoloader.js
+++ b/plugins/autoloader/prism-autoloader.js
@@ -4,7 +4,9 @@
}
// The dependencies map is built automatically with gulp
- var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup-templating","ejs":["javascript","markup-templating"],"erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","gml":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":["markup","java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"js-extras":"javascript","jsonp":"json","json5":"json","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"phpdoc":["php","javadoclike"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":["markup","javascript"],"qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","visual-basic"],"vala":"clike","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/;
+ var lang_dependencies = /*dependencies_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup-templating","ejs":["javascript","markup-templating"],"erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","gml":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":["markup","java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"js-extras":"javascript","jsonp":"json","json5":"json","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"phpdoc":["php","javadoclike"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":["markup","javascript"],"qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","visual-basic"],"vala":"clike","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/;
+
+ var lang_aliases = /*aliases_placeholder[*/{"html":"markup","xml":"markup","svg":"markup","mathml":"markup","js":"javascript","adoc":"asciidoc","shell":"bash","rbfn":"bnf","dotnet":"csharp","jinja2":"django","dockerfile":"docker","gamemakerlanguage":"gml","emacs":"lisp","elisp":"lisp","emacs-lisp":"lisp","n4jsd":"n4js","objectpascal":"pascal","ts":"typescript","t4":"t4-cs","vb":"visual-basic","xeoracube":"xeora"}/*]*/;
var lang_data = {};
@@ -65,6 +67,10 @@
* @param {HTMLElement} elt
*/
var registerElement = function (lang, elt) {
+ if (lang in lang_aliases) {
+ lang = lang_aliases[lang];
+ }
+
var data = lang_data[lang];
if (!data) {
data = lang_data[lang] = {};
@@ -123,14 +129,12 @@
* @param {function=} error
*/
var loadLanguage = function (lang, success, error) {
- var load = function () {
- var force = false;
- // Do we want to force reload the grammar?
- if (lang.indexOf('!') >= 0) {
- force = true;
- lang = lang.replace('!', '');
- }
+ var force = lang.indexOf('!') >= 0;
+
+ lang = lang.replace('!', '');
+ lang = lang_aliases[lang] || lang;
+ var load = function () {
var data = lang_data[lang];
if (!data) {
data = lang_data[lang] = {};
@@ -166,6 +170,7 @@
});
}
};
+
var dependencies = lang_dependencies[lang];
if(dependencies && dependencies.length) {
loadLanguages(dependencies, load);
diff --git a/plugins/autoloader/prism-autoloader.min.js b/plugins/autoloader/prism-autoloader.min.js
index e26163af07..ccf046bced 100644
--- a/plugins/autoloader/prism-autoloader.min.js
+++ b/plugins/autoloader/prism-autoloader.min.js
@@ -1 +1 @@
-!function(){if("undefined"!=typeof self&&self.Prism&&self.document&&document.createElement){var c={javascript:"clike",actionscript:"javascript",arduino:"cpp",aspnet:["markup","csharp"],bison:"c",c:"clike",csharp:"clike",cpp:"c",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup-templating",ejs:["javascript","markup-templating"],erb:["ruby","markup-templating"],fsharp:"clike",flow:"javascript",glsl:"clike",gml:"clike",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:["markup","java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike"],"js-extras":"javascript",jsonp:"json",json5:"json",kotlin:"clike",less:"css",markdown:"markup","markup-templating":"markup",n4js:"javascript",nginx:"clike",objectivec:"c",opencl:"cpp",parser:"markup",php:["clike","markup-templating"],phpdoc:["php","javadoclike"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:["markup","javascript"],qore:"clike",jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java",smarty:"markup-templating",soy:"markup-templating",swift:"clike",tap:"yaml",textile:"markup",tt2:["clike","markup-templating"],twig:"markup",typescript:"javascript","t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","visual-basic"],vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup",xquery:"markup"},o={},a=document.getElementsByTagName("script"),e="components/";if((a=a[a.length-1]).hasAttribute("data-autoloader-path")){var t=a.getAttribute("data-autoloader-path").trim();0