summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorJazz <jazzzz@gmail.com>2017-01-13 14:54:22 +0100
committerenahum <nahumhbl@gmail.com>2017-01-13 10:54:22 -0300
commit7d6fa7f8bffc7e9791b49ba1ba705abc96b84e55 (patch)
treef1aaed2c4758f2a1337585f5c8b725fe1933db7b /webapp
parent4e160c78abbc2a33ed9a329c0a62b1bfb7f411b6 (diff)
downloadchat-7d6fa7f8bffc7e9791b49ba1ba705abc96b84e55.tar.gz
chat-7d6fa7f8bffc7e9791b49ba1ba705abc96b84e55.tar.bz2
chat-7d6fa7f8bffc7e9791b49ba1ba705abc96b84e55.zip
Register the same language aliases as Rouge (#5040)
This allows the use of the same aliases as GitLab.
Diffstat (limited to 'webapp')
-rw-r--r--webapp/utils/constants.jsx58
-rw-r--r--webapp/utils/syntax_highlighting.jsx22
2 files changed, 46 insertions, 34 deletions
diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx
index 8162846e2..af099d4a0 100644
--- a/webapp/utils/constants.jsx
+++ b/webapp/utils/constants.jsx
@@ -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,
diff --git a/webapp/utils/syntax_highlighting.jsx b/webapp/utils/syntax_highlighting.jsx
index 47ba5bd4e..73e1087cb 100644
--- a/webapp/utils/syntax_highlighting.jsx
+++ b/webapp/utils/syntax_highlighting.jsx
@@ -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 '';
-} \ No newline at end of file
+}
+
+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);
+ });
+}