Register the same language aliases as Rouge (#5040)
This allows the use of the same aliases as GitLab.
Этот коммит содержится в:
@@ -737,63 +737,63 @@ export const Constants = {
|
|||||||
},
|
},
|
||||||
CODE_PREVIEW_MAX_FILE_SIZE: 500000, // 500 KB
|
CODE_PREVIEW_MAX_FILE_SIZE: 500000, // 500 KB
|
||||||
HighlightedLanguages: {
|
HighlightedLanguages: {
|
||||||
actionscript: {name: 'ActionScript', extensions: ['as']},
|
actionscript: {name: 'ActionScript', extensions: ['as'], aliases: ['as', 'as3']},
|
||||||
applescript: {name: 'AppleScript', extensions: ['applescript', 'osascript', 'scpt']},
|
applescript: {name: 'AppleScript', extensions: ['applescript', 'osascript', 'scpt']},
|
||||||
bash: {name: 'Bash', extensions: ['bash', 'sh', 'zsh']},
|
bash: {name: 'Bash', extensions: ['bash', 'sh', 'zsh']},
|
||||||
clojure: {name: 'Clojure', extensions: ['clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic']},
|
clojure: {name: 'Clojure', extensions: ['clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic']},
|
||||||
coffeescript: {name: 'CoffeeScript', extensions: ['coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced']},
|
coffeescript: {name: 'CoffeeScript', extensions: ['coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced'], aliases: ['coffee', 'coffee-script']},
|
||||||
cpp: {name: 'C/C++', extensions: ['cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp']},
|
cpp: {name: 'C/C++', extensions: ['cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp'], aliases: ['c++']},
|
||||||
cs: {name: 'C#', extensions: ['cs', 'csharp']},
|
cs: {name: 'C#', extensions: ['cs', 'csharp'], aliases: ['c#', 'csharp']},
|
||||||
css: {name: 'CSS', extensions: ['css']},
|
css: {name: 'CSS', extensions: ['css']},
|
||||||
d: {name: 'D', extensions: ['d', 'di']},
|
d: {name: 'D', extensions: ['d', 'di'], aliases: ['dlang']},
|
||||||
dart: {name: 'Dart', extensions: ['dart']},
|
dart: {name: 'Dart', extensions: ['dart']},
|
||||||
delphi: {name: 'Delphi', extensions: ['delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm']},
|
delphi: {name: 'Delphi', extensions: ['delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm']},
|
||||||
diff: {name: 'Diff', extensions: ['diff', 'patch']},
|
diff: {name: 'Diff', extensions: ['diff', 'patch'], aliases: ['patch', 'udiff']},
|
||||||
django: {name: 'Django', extensions: ['django', 'jinja']},
|
django: {name: 'Django', extensions: ['django', 'jinja']},
|
||||||
dockerfile: {name: 'Dockerfile', extensions: ['dockerfile', 'docker']},
|
dockerfile: {name: 'Dockerfile', extensions: ['dockerfile', 'docker'], aliases: ['docker']},
|
||||||
erlang: {name: 'Erlang', extensions: ['erl']},
|
erlang: {name: 'Erlang', extensions: ['erl'], aliases: ['erl']},
|
||||||
fortran: {name: 'Fortran', extensions: ['f90', 'f95']},
|
fortran: {name: 'Fortran', extensions: ['f90', 'f95']},
|
||||||
fsharp: {name: 'F#', extensions: ['fsharp', 'fs']},
|
fsharp: {name: 'F#', extensions: ['fsharp', 'fs']},
|
||||||
gcode: {name: 'G-Code', extensions: ['gcode', 'nc']},
|
gcode: {name: 'G-Code', extensions: ['gcode', 'nc']},
|
||||||
go: {name: 'Go', extensions: ['go']},
|
go: {name: 'Go', extensions: ['go'], aliases: ['golang']},
|
||||||
groovy: {name: 'Groovy', extensions: ['groovy']},
|
groovy: {name: 'Groovy', extensions: ['groovy']},
|
||||||
handlebars: {name: 'Handlebars', extensions: ['handlebars', 'hbs', 'html.hbs', 'html.handlebars']},
|
handlebars: {name: 'Handlebars', extensions: ['handlebars', 'hbs', 'html.hbs', 'html.handlebars'], aliases: ['hbs', 'mustache']},
|
||||||
haskell: {name: 'Haskell', extensions: ['hs']},
|
haskell: {name: 'Haskell', extensions: ['hs'], aliases: ['hs']},
|
||||||
haxe: {name: 'Haxe', extensions: ['hx']},
|
haxe: {name: 'Haxe', extensions: ['hx']},
|
||||||
java: {name: 'Java', extensions: ['java', 'jsp']},
|
java: {name: 'Java', extensions: ['java', 'jsp']},
|
||||||
javascript: {name: 'JavaScript', extensions: ['js', 'jsx']},
|
javascript: {name: 'JavaScript', extensions: ['js', 'jsx'], aliases: ['js']},
|
||||||
json: {name: 'JSON', extensions: ['json']},
|
json: {name: 'JSON', extensions: ['json']},
|
||||||
julia: {name: 'Julia', extensions: ['jl']},
|
julia: {name: 'Julia', extensions: ['jl'], aliases: ['jl']},
|
||||||
kotlin: {name: 'Kotlin', extensions: ['kt', 'ktm', 'kts']},
|
kotlin: {name: 'Kotlin', extensions: ['kt', 'ktm', 'kts']},
|
||||||
less: {name: 'Less', extensions: ['less']},
|
less: {name: 'Less', extensions: ['less']},
|
||||||
lisp: {name: 'Lisp', extensions: ['lisp']},
|
lisp: {name: 'Lisp', extensions: ['lisp']},
|
||||||
lua: {name: 'Lua', extensions: ['lua']},
|
lua: {name: 'Lua', extensions: ['lua']},
|
||||||
makefile: {name: 'Makefile', extensions: ['mk', 'mak']},
|
makefile: {name: 'Makefile', extensions: ['mk', 'mak'], aliases: ['make', 'mf', 'gnumake', 'bsdmake']},
|
||||||
markdown: {name: 'Markdown', extensions: ['md', 'mkdown', 'mkd']},
|
markdown: {name: 'Markdown', extensions: ['md', 'mkdown', 'mkd'], aliases: ['md', 'mkd']},
|
||||||
matlab: {name: 'Matlab', extensions: ['matlab', 'm']},
|
matlab: {name: 'Matlab', extensions: ['matlab', 'm'], aliases: ['m']},
|
||||||
objectivec: {name: 'Objective C', extensions: ['mm', 'objc', 'obj-c']},
|
objectivec: {name: 'Objective C', extensions: ['mm', 'objc', 'obj-c'], aliases: ['objective_c', 'objc']},
|
||||||
ocaml: {name: 'OCaml', extensions: ['ml']},
|
ocaml: {name: 'OCaml', extensions: ['ml']},
|
||||||
perl: {name: 'Perl', extensions: ['perl', 'pl']},
|
perl: {name: 'Perl', extensions: ['perl', 'pl'], aliases: ['pl']},
|
||||||
php: {name: 'PHP', extensions: ['php', 'php3', 'php4', 'php5', 'php6']},
|
php: {name: 'PHP', extensions: ['php', 'php3', 'php4', 'php5', 'php6'], aliases: ['php3', 'php4', 'php5']},
|
||||||
powershell: {name: 'PowerShell', extensions: ['ps', 'ps1']},
|
powershell: {name: 'PowerShell', extensions: ['ps', 'ps1'], aliases: ['posh']},
|
||||||
puppet: {name: 'Puppet', extensions: ['pp']},
|
puppet: {name: 'Puppet', extensions: ['pp'], aliases: ['pp']},
|
||||||
python: {name: 'Python', extensions: ['py', 'gyp']},
|
python: {name: 'Python', extensions: ['py', 'gyp'], aliases: ['py']},
|
||||||
r: {name: 'R', extensions: ['r']},
|
r: {name: 'R', extensions: ['r'], aliases: ['r', 's']},
|
||||||
ruby: {name: 'Ruby', extensions: ['ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb']},
|
ruby: {name: 'Ruby', extensions: ['ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb'], aliases: ['rb']},
|
||||||
rust: {name: 'Rust', extensions: ['rs']},
|
rust: {name: 'Rust', extensions: ['rs'], aliases: ['rs']},
|
||||||
scala: {name: 'Scala', extensions: ['scala']},
|
scala: {name: 'Scala', extensions: ['scala']},
|
||||||
scheme: {name: 'Scheme', extensions: ['scm', 'sld']},
|
scheme: {name: 'Scheme', extensions: ['scm', 'sld']},
|
||||||
scss: {name: 'SCSS', extensions: ['scss']},
|
scss: {name: 'SCSS', extensions: ['scss']},
|
||||||
smalltalk: {name: 'Smalltalk', extensions: ['st']},
|
smalltalk: {name: 'Smalltalk', extensions: ['st'], aliases: ['st', 'squeak']},
|
||||||
sql: {name: 'SQL', extensions: ['sql']},
|
sql: {name: 'SQL', extensions: ['sql']},
|
||||||
swift: {name: 'Swift', extensions: ['swift']},
|
swift: {name: 'Swift', extensions: ['swift']},
|
||||||
tex: {name: 'TeX', extensions: ['tex']},
|
tex: {name: 'TeX', extensions: ['tex'], aliases: ['latex']},
|
||||||
text: {name: 'Text', extensions: ['txt']},
|
text: {name: 'Text', extensions: ['txt']},
|
||||||
vbnet: {name: 'VB.Net', extensions: ['vbnet', 'vb', 'bas']},
|
vbnet: {name: 'VB.Net', extensions: ['vbnet', 'vb', 'bas'], aliases: ['vb', 'visualbasic']},
|
||||||
vbscript: {name: 'VBScript', extensions: ['vbs']},
|
vbscript: {name: 'VBScript', extensions: ['vbs']},
|
||||||
verilog: {name: 'Verilog', extensions: ['v', 'veo']},
|
verilog: {name: 'Verilog', extensions: ['v', 'veo']},
|
||||||
xml: {name: 'HTML, XML', extensions: ['xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist']},
|
xml: {name: 'HTML, XML', extensions: ['xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist']},
|
||||||
yaml: {name: 'YAML', extensions: ['yaml']}
|
yaml: {name: 'YAML', extensions: ['yaml'], aliases: ['yml']}
|
||||||
},
|
},
|
||||||
PostsViewJumpTypes: {
|
PostsViewJumpTypes: {
|
||||||
BOTTOM: 1,
|
BOTTOM: 1,
|
||||||
|
|||||||
@@ -123,9 +123,9 @@ hlJS.registerLanguage('yaml', hljsYaml);
|
|||||||
const HighlightedLanguages = Constants.HighlightedLanguages;
|
const HighlightedLanguages = Constants.HighlightedLanguages;
|
||||||
|
|
||||||
export function highlight(lang, code) {
|
export function highlight(lang, code) {
|
||||||
const language = lang.toLowerCase();
|
const language = getLanguageFromNameOrAlias(lang);
|
||||||
|
|
||||||
if (HighlightedLanguages[language]) {
|
if (language) {
|
||||||
try {
|
try {
|
||||||
return hlJS.highlight(language, code).value;
|
return hlJS.highlight(language, code).value;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -147,13 +147,25 @@ export function getLanguageFromFileExtension(extension) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function canHighlight(language) {
|
export function canHighlight(language) {
|
||||||
return Boolean(HighlightedLanguages[language.toLowerCase()]);
|
return Boolean(getLanguageFromNameOrAlias(language));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getLanguageName(language) {
|
export function getLanguageName(language) {
|
||||||
if (canHighlight(language)) {
|
if (canHighlight(language)) {
|
||||||
return HighlightedLanguages[language.toLowerCase()].name;
|
return HighlightedLanguages[getLanguageFromNameOrAlias(language)].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getLanguageFromNameOrAlias(name) {
|
||||||
|
const langName = name.toLowerCase();
|
||||||
|
if (HighlightedLanguages[langName]) {
|
||||||
|
return langName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object.keys(HighlightedLanguages).find((key) => {
|
||||||
|
const aliases = HighlightedLanguages[key].aliases;
|
||||||
|
return aliases && aliases.find((a) => a === langName);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user