Register the same language aliases as Rouge (#5040)

This allows the use of the same aliases as GitLab.
Этот коммит содержится в:
Jazz
2017-01-13 14:54:22 +01:00
коммит произвёл enahum
родитель 4e160c78ab
Коммит 7d6fa7f8bf
2 изменённых файлов: 46 добавлений и 34 удалений

Просмотреть файл

@@ -737,63 +737,63 @@ export const Constants = {
},
CODE_PREVIEW_MAX_FILE_SIZE: 500000, // 500 KB
HighlightedLanguages: {
actionscript: {name: 'ActionScript', extensions: ['as']},
actionscript: {name: 'ActionScript', extensions: ['as'], aliases: ['as', 'as3']},
applescript: {name: 'AppleScript', extensions: ['applescript', 'osascript', 'scpt']},
bash: {name: 'Bash', extensions: ['bash', 'sh', 'zsh']},
clojure: {name: 'Clojure', extensions: ['clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic']},
coffeescript: {name: 'CoffeeScript', extensions: ['coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced']},
cpp: {name: 'C/C++', extensions: ['cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp']},
cs: {name: 'C#', extensions: ['cs', 'csharp']},
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'], aliases: ['c++']},
cs: {name: 'C#', extensions: ['cs', 'csharp'], aliases: ['c#', 'csharp']},
css: {name: 'CSS', extensions: ['css']},
d: {name: 'D', extensions: ['d', 'di']},
d: {name: 'D', extensions: ['d', 'di'], aliases: ['dlang']},
dart: {name: 'Dart', extensions: ['dart']},
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']},
dockerfile: {name: 'Dockerfile', extensions: ['dockerfile', 'docker']},
erlang: {name: 'Erlang', extensions: ['erl']},
dockerfile: {name: 'Dockerfile', extensions: ['dockerfile', 'docker'], aliases: ['docker']},
erlang: {name: 'Erlang', extensions: ['erl'], aliases: ['erl']},
fortran: {name: 'Fortran', extensions: ['f90', 'f95']},
fsharp: {name: 'F#', extensions: ['fsharp', 'fs']},
gcode: {name: 'G-Code', extensions: ['gcode', 'nc']},
go: {name: 'Go', extensions: ['go']},
go: {name: 'Go', extensions: ['go'], aliases: ['golang']},
groovy: {name: 'Groovy', extensions: ['groovy']},
handlebars: {name: 'Handlebars', extensions: ['handlebars', 'hbs', 'html.hbs', 'html.handlebars']},
haskell: {name: 'Haskell', extensions: ['hs']},
handlebars: {name: 'Handlebars', extensions: ['handlebars', 'hbs', 'html.hbs', 'html.handlebars'], aliases: ['hbs', 'mustache']},
haskell: {name: 'Haskell', extensions: ['hs'], aliases: ['hs']},
haxe: {name: 'Haxe', extensions: ['hx']},
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']},
julia: {name: 'Julia', extensions: ['jl']},
julia: {name: 'Julia', extensions: ['jl'], aliases: ['jl']},
kotlin: {name: 'Kotlin', extensions: ['kt', 'ktm', 'kts']},
less: {name: 'Less', extensions: ['less']},
lisp: {name: 'Lisp', extensions: ['lisp']},
lua: {name: 'Lua', extensions: ['lua']},
makefile: {name: 'Makefile', extensions: ['mk', 'mak']},
markdown: {name: 'Markdown', extensions: ['md', 'mkdown', 'mkd']},
matlab: {name: 'Matlab', extensions: ['matlab', 'm']},
objectivec: {name: 'Objective C', extensions: ['mm', 'objc', 'obj-c']},
makefile: {name: 'Makefile', extensions: ['mk', 'mak'], aliases: ['make', 'mf', 'gnumake', 'bsdmake']},
markdown: {name: 'Markdown', extensions: ['md', 'mkdown', 'mkd'], aliases: ['md', 'mkd']},
matlab: {name: 'Matlab', extensions: ['matlab', 'm'], aliases: ['m']},
objectivec: {name: 'Objective C', extensions: ['mm', 'objc', 'obj-c'], aliases: ['objective_c', 'objc']},
ocaml: {name: 'OCaml', extensions: ['ml']},
perl: {name: 'Perl', extensions: ['perl', 'pl']},
php: {name: 'PHP', extensions: ['php', 'php3', 'php4', 'php5', 'php6']},
powershell: {name: 'PowerShell', extensions: ['ps', 'ps1']},
puppet: {name: 'Puppet', extensions: ['pp']},
python: {name: 'Python', extensions: ['py', 'gyp']},
r: {name: 'R', extensions: ['r']},
ruby: {name: 'Ruby', extensions: ['ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb']},
rust: {name: 'Rust', extensions: ['rs']},
perl: {name: 'Perl', extensions: ['perl', 'pl'], aliases: ['pl']},
php: {name: 'PHP', extensions: ['php', 'php3', 'php4', 'php5', 'php6'], aliases: ['php3', 'php4', 'php5']},
powershell: {name: 'PowerShell', extensions: ['ps', 'ps1'], aliases: ['posh']},
puppet: {name: 'Puppet', extensions: ['pp'], aliases: ['pp']},
python: {name: 'Python', extensions: ['py', 'gyp'], aliases: ['py']},
r: {name: 'R', extensions: ['r'], aliases: ['r', 's']},
ruby: {name: 'Ruby', extensions: ['ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb'], aliases: ['rb']},
rust: {name: 'Rust', extensions: ['rs'], aliases: ['rs']},
scala: {name: 'Scala', extensions: ['scala']},
scheme: {name: 'Scheme', extensions: ['scm', 'sld']},
scss: {name: 'SCSS', extensions: ['scss']},
smalltalk: {name: 'Smalltalk', extensions: ['st']},
smalltalk: {name: 'Smalltalk', extensions: ['st'], aliases: ['st', 'squeak']},
sql: {name: 'SQL', extensions: ['sql']},
swift: {name: 'Swift', extensions: ['swift']},
tex: {name: 'TeX', extensions: ['tex']},
tex: {name: 'TeX', extensions: ['tex'], aliases: ['latex']},
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']},
verilog: {name: 'Verilog', extensions: ['v', 'veo']},
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: {
BOTTOM: 1,

Просмотреть файл

@@ -123,9 +123,9 @@ hlJS.registerLanguage('yaml', hljsYaml);
const HighlightedLanguages = Constants.HighlightedLanguages;
export function highlight(lang, code) {
const language = lang.toLowerCase();
const language = getLanguageFromNameOrAlias(lang);
if (HighlightedLanguages[language]) {
if (language) {
try {
return hlJS.highlight(language, code).value;
} catch (e) {
@@ -147,13 +147,25 @@ export function getLanguageFromFileExtension(extension) {
}
export function canHighlight(language) {
return Boolean(HighlightedLanguages[language.toLowerCase()]);
return Boolean(getLanguageFromNameOrAlias(language));
}
export function getLanguageName(language) {
if (canHighlight(language)) {
return HighlightedLanguages[language.toLowerCase()].name;
return HighlightedLanguages[getLanguageFromNameOrAlias(language)].name;
}
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);
});
}