From 26099d89e9cc787a1c077a89a153ffbb2ea21254 Mon Sep 17 00:00:00 2001 From: Yusuke Nemoto Date: Wed, 5 Oct 2016 22:34:03 +0900 Subject: PLT-3487 Preview uploaded txt file (#4145) * fix filename * Add 'txt' to hilighted language --- webapp/utils/constants.jsx | 3 +- webapp/utils/markdown.jsx | 2 +- webapp/utils/syntax_highlighting.jsx | 159 ++++++++++++++++++++++++++++++++++ webapp/utils/syntax_hightlighting.jsx | 159 ---------------------------------- 4 files changed, 162 insertions(+), 161 deletions(-) create mode 100644 webapp/utils/syntax_highlighting.jsx delete mode 100644 webapp/utils/syntax_hightlighting.jsx (limited to 'webapp/utils') diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx index 2b6e110ce..10f1a2879 100644 --- a/webapp/utils/constants.jsx +++ b/webapp/utils/constants.jsx @@ -261,7 +261,7 @@ export const Constants = { PRESENTATION_TYPES: ['ppt', 'pptx'], SPREADSHEET_TYPES: ['xlsx', 'csv'], WORD_TYPES: ['doc', 'docx'], - CODE_TYPES: ['as', 'applescript', 'osascript', 'scpt', 'bash', 'sh', 'zsh', 'clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic', 'coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced', 'cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp', 'cs', 'csharp', 'css', 'd', 'di', 'dart', 'delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm', 'diff', 'django', 'jinja', 'dockerfile', 'docker', 'erl', 'f90', 'f95', 'fsharp', 'fs', 'gcode', 'nc', 'go', 'groovy', 'handlebars', 'hbs', 'html.hbs', 'html.handlebars', 'hs', 'hx', 'java', 'jsp', 'js', 'jsx', 'json', 'jl', 'kt', 'ktm', 'kts', 'less', 'lisp', 'lua', 'mk', 'mak', 'md', 'mkdown', 'mkd', 'matlab', 'm', 'mm', 'objc', 'obj-c', 'ml', 'perl', 'pl', 'php', 'php3', 'php4', 'php5', 'php6', 'ps', 'ps1', 'pp', 'py', 'gyp', 'r', 'ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb', 'rs', 'scala', 'scm', 'sld', 'scss', 'st', 'sql', 'swift', 'tex', 'vbnet', 'vb', 'bas', 'vbs', 'v', 'veo', 'xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist', 'yaml'], + CODE_TYPES: ['as', 'applescript', 'osascript', 'scpt', 'bash', 'sh', 'zsh', 'clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic', 'coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced', 'cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp', 'cs', 'csharp', 'css', 'd', 'di', 'dart', 'delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm', 'diff', 'django', 'jinja', 'dockerfile', 'docker', 'erl', 'f90', 'f95', 'fsharp', 'fs', 'gcode', 'nc', 'go', 'groovy', 'handlebars', 'hbs', 'html.hbs', 'html.handlebars', 'hs', 'hx', 'java', 'jsp', 'js', 'jsx', 'json', 'jl', 'kt', 'ktm', 'kts', 'less', 'lisp', 'lua', 'mk', 'mak', 'md', 'mkdown', 'mkd', 'matlab', 'm', 'mm', 'objc', 'obj-c', 'ml', 'perl', 'pl', 'php', 'php3', 'php4', 'php5', 'php6', 'ps', 'ps1', 'pp', 'py', 'gyp', 'r', 'ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb', 'rs', 'scala', 'scm', 'sld', 'scss', 'st', 'sql', 'swift', 'tex', 'txt', 'vbnet', 'vb', 'bas', 'vbs', 'v', 'veo', 'xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist', 'yaml'], PDF_TYPES: ['pdf'], PATCH_TYPES: ['patch'], ICON_FROM_TYPE: { @@ -772,6 +772,7 @@ export const Constants = { sql: {name: 'SQL', extensions: ['sql']}, swift: {name: 'Swift', extensions: ['swift']}, tex: {name: 'TeX', extensions: ['tex']}, + text: {name: 'Text', extensions: ['txt']}, vbnet: {name: 'VB.Net', extensions: ['vbnet', 'vb', 'bas']}, vbscript: {name: 'VBScript', extensions: ['vbs']}, verilog: {name: 'Verilog', extensions: ['v', 'veo']}, diff --git a/webapp/utils/markdown.jsx b/webapp/utils/markdown.jsx index 9c2eb47aa..7f597eb3d 100644 --- a/webapp/utils/markdown.jsx +++ b/webapp/utils/markdown.jsx @@ -2,7 +2,7 @@ // See License.txt for license information. import * as TextFormatting from './text_formatting.jsx'; -import * as SyntaxHighlighting from './syntax_hightlighting.jsx'; +import * as SyntaxHighlighting from './syntax_highlighting.jsx'; import marked from 'marked'; import katex from 'katex'; diff --git a/webapp/utils/syntax_highlighting.jsx b/webapp/utils/syntax_highlighting.jsx new file mode 100644 index 000000000..47ba5bd4e --- /dev/null +++ b/webapp/utils/syntax_highlighting.jsx @@ -0,0 +1,159 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import * as TextFormatting from './text_formatting.jsx'; +import Constants from './constants.jsx'; + +import hlJS from 'highlight.js/lib/highlight.js'; + +import hljsActionscript from 'highlight.js/lib/languages/actionscript.js'; +import hljsApplescript from 'highlight.js/lib/languages/applescript.js'; +import hljsBash from 'highlight.js/lib/languages/bash.js'; +import hljsClojure from 'highlight.js/lib/languages/clojure.js'; +import hljsCoffeescript from 'highlight.js/lib/languages/coffeescript.js'; +import hljsCpp from 'highlight.js/lib/languages/cpp.js'; +import hljsCs from 'highlight.js/lib/languages/cs.js'; +import hljsCss from 'highlight.js/lib/languages/css.js'; +import hljsD from 'highlight.js/lib/languages/d.js'; +import hljsDart from 'highlight.js/lib/languages/dart.js'; +import hljsDelphi from 'highlight.js/lib/languages/delphi.js'; +import hljsDiff from 'highlight.js/lib/languages/diff.js'; +import hljsDjango from 'highlight.js/lib/languages/django.js'; +import hljsDockerfile from 'highlight.js/lib/languages/dockerfile.js'; +import hljsErlang from 'highlight.js/lib/languages/erlang.js'; +import hljsFortran from 'highlight.js/lib/languages/fortran.js'; +import hljsFsharp from 'highlight.js/lib/languages/fsharp.js'; +import hljsGcode from 'highlight.js/lib/languages/gcode.js'; +import hljsGo from 'highlight.js/lib/languages/go.js'; +import hljsGroovy from 'highlight.js/lib/languages/groovy.js'; +import hljsHandlebars from 'highlight.js/lib/languages/handlebars.js'; +import hljsHaskell from 'highlight.js/lib/languages/haskell.js'; +import hljsHaxe from 'highlight.js/lib/languages/haxe.js'; +import hljsJava from 'highlight.js/lib/languages/java.js'; +import hljsJavascript from 'highlight.js/lib/languages/javascript.js'; +import hljsJson from 'highlight.js/lib/languages/json.js'; +import hljsJulia from 'highlight.js/lib/languages/julia.js'; +import hljsKotlin from 'highlight.js/lib/languages/kotlin.js'; +import hljsLess from 'highlight.js/lib/languages/less.js'; +import hljsLisp from 'highlight.js/lib/languages/lisp.js'; +import hljsLua from 'highlight.js/lib/languages/lua.js'; +import hljsMakefile from 'highlight.js/lib/languages/makefile.js'; +import hljsMarkdown from 'highlight.js/lib/languages/markdown.js'; +import hljsMatlab from 'highlight.js/lib/languages/matlab.js'; +import hljsObjectivec from 'highlight.js/lib/languages/objectivec.js'; +import hljsOcaml from 'highlight.js/lib/languages/ocaml.js'; +import hljsPerl from 'highlight.js/lib/languages/perl.js'; +import hljsPhp from 'highlight.js/lib/languages/php.js'; +import hljsPowershell from 'highlight.js/lib/languages/powershell.js'; +import hljsPuppet from 'highlight.js/lib/languages/puppet.js'; +import hljsPython from 'highlight.js/lib/languages/python.js'; +import hljsR from 'highlight.js/lib/languages/r.js'; +import hljsRuby from 'highlight.js/lib/languages/ruby.js'; +import hljsRust from 'highlight.js/lib/languages/rust.js'; +import hljsScala from 'highlight.js/lib/languages/scala.js'; +import hljsScheme from 'highlight.js/lib/languages/scheme.js'; +import hljsScss from 'highlight.js/lib/languages/scss.js'; +import hljsSmalltalk from 'highlight.js/lib/languages/smalltalk.js'; +import hljsSql from 'highlight.js/lib/languages/sql.js'; +import hljsSwift from 'highlight.js/lib/languages/swift.js'; +import hljsTex from 'highlight.js/lib/languages/tex.js'; +import hljsVbnet from 'highlight.js/lib/languages/vbnet.js'; +import hljsVbscript from 'highlight.js/lib/languages/vbscript.js'; +import hljsVerilog from 'highlight.js/lib/languages/verilog.js'; +import hljsXml from 'highlight.js/lib/languages/xml.js'; +import hljsYaml from 'highlight.js/lib/languages/yaml.js'; + +hlJS.registerLanguage('actionscript', hljsActionscript); +hlJS.registerLanguage('applescript', hljsApplescript); +hlJS.registerLanguage('bash', hljsBash); +hlJS.registerLanguage('clojure', hljsClojure); +hlJS.registerLanguage('coffeescript', hljsCoffeescript); +hlJS.registerLanguage('cpp', hljsCpp); +hlJS.registerLanguage('cs', hljsCs); +hlJS.registerLanguage('css', hljsCss); +hlJS.registerLanguage('d', hljsD); +hlJS.registerLanguage('dart', hljsDart); +hlJS.registerLanguage('delphi', hljsDelphi); +hlJS.registerLanguage('diff', hljsDiff); +hlJS.registerLanguage('django', hljsDjango); +hlJS.registerLanguage('dockerfile', hljsDockerfile); +hlJS.registerLanguage('erlang', hljsErlang); +hlJS.registerLanguage('fortran', hljsFortran); +hlJS.registerLanguage('fsharp', hljsFsharp); +hlJS.registerLanguage('gcode', hljsGcode); +hlJS.registerLanguage('go', hljsGo); +hlJS.registerLanguage('groovy', hljsGroovy); +hlJS.registerLanguage('handlebars', hljsHandlebars); +hlJS.registerLanguage('haskell', hljsHaskell); +hlJS.registerLanguage('haxe', hljsHaxe); +hlJS.registerLanguage('java', hljsJava); +hlJS.registerLanguage('javascript', hljsJavascript); +hlJS.registerLanguage('json', hljsJson); +hlJS.registerLanguage('julia', hljsJulia); +hlJS.registerLanguage('kotlin', hljsKotlin); +hlJS.registerLanguage('less', hljsLess); +hlJS.registerLanguage('lisp', hljsLisp); +hlJS.registerLanguage('lua', hljsLua); +hlJS.registerLanguage('makefile', hljsMakefile); +hlJS.registerLanguage('markdown', hljsMarkdown); +hlJS.registerLanguage('matlab', hljsMatlab); +hlJS.registerLanguage('objectivec', hljsObjectivec); +hlJS.registerLanguage('ocaml', hljsOcaml); +hlJS.registerLanguage('perl', hljsPerl); +hlJS.registerLanguage('php', hljsPhp); +hlJS.registerLanguage('powershell', hljsPowershell); +hlJS.registerLanguage('puppet', hljsPuppet); +hlJS.registerLanguage('python', hljsPython); +hlJS.registerLanguage('r', hljsR); +hlJS.registerLanguage('ruby', hljsRuby); +hlJS.registerLanguage('rust', hljsRust); +hlJS.registerLanguage('scala', hljsScala); +hlJS.registerLanguage('scheme', hljsScheme); +hlJS.registerLanguage('scss', hljsScss); +hlJS.registerLanguage('smalltalk', hljsSmalltalk); +hlJS.registerLanguage('sql', hljsSql); +hlJS.registerLanguage('swift', hljsSwift); +hlJS.registerLanguage('tex', hljsTex); +hlJS.registerLanguage('vbnet', hljsVbnet); +hlJS.registerLanguage('vbscript', hljsVbscript); +hlJS.registerLanguage('verilog', hljsVerilog); +hlJS.registerLanguage('xml', hljsXml); +hlJS.registerLanguage('yaml', hljsYaml); + +const HighlightedLanguages = Constants.HighlightedLanguages; + +export function highlight(lang, code) { + const language = lang.toLowerCase(); + + if (HighlightedLanguages[language]) { + try { + return hlJS.highlight(language, code).value; + } catch (e) { + // fall through if highlighting fails and handle below + } + } + + return TextFormatting.sanitizeHtml(code); +} + +export function getLanguageFromFileExtension(extension) { + for (var key in HighlightedLanguages) { + if (HighlightedLanguages[key].extensions.find((x) => x === extension)) { + return key; + } + } + + return null; +} + +export function canHighlight(language) { + return Boolean(HighlightedLanguages[language.toLowerCase()]); +} + +export function getLanguageName(language) { + if (canHighlight(language)) { + return HighlightedLanguages[language.toLowerCase()].name; + } + + return ''; +} \ No newline at end of file diff --git a/webapp/utils/syntax_hightlighting.jsx b/webapp/utils/syntax_hightlighting.jsx deleted file mode 100644 index 47ba5bd4e..000000000 --- a/webapp/utils/syntax_hightlighting.jsx +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import * as TextFormatting from './text_formatting.jsx'; -import Constants from './constants.jsx'; - -import hlJS from 'highlight.js/lib/highlight.js'; - -import hljsActionscript from 'highlight.js/lib/languages/actionscript.js'; -import hljsApplescript from 'highlight.js/lib/languages/applescript.js'; -import hljsBash from 'highlight.js/lib/languages/bash.js'; -import hljsClojure from 'highlight.js/lib/languages/clojure.js'; -import hljsCoffeescript from 'highlight.js/lib/languages/coffeescript.js'; -import hljsCpp from 'highlight.js/lib/languages/cpp.js'; -import hljsCs from 'highlight.js/lib/languages/cs.js'; -import hljsCss from 'highlight.js/lib/languages/css.js'; -import hljsD from 'highlight.js/lib/languages/d.js'; -import hljsDart from 'highlight.js/lib/languages/dart.js'; -import hljsDelphi from 'highlight.js/lib/languages/delphi.js'; -import hljsDiff from 'highlight.js/lib/languages/diff.js'; -import hljsDjango from 'highlight.js/lib/languages/django.js'; -import hljsDockerfile from 'highlight.js/lib/languages/dockerfile.js'; -import hljsErlang from 'highlight.js/lib/languages/erlang.js'; -import hljsFortran from 'highlight.js/lib/languages/fortran.js'; -import hljsFsharp from 'highlight.js/lib/languages/fsharp.js'; -import hljsGcode from 'highlight.js/lib/languages/gcode.js'; -import hljsGo from 'highlight.js/lib/languages/go.js'; -import hljsGroovy from 'highlight.js/lib/languages/groovy.js'; -import hljsHandlebars from 'highlight.js/lib/languages/handlebars.js'; -import hljsHaskell from 'highlight.js/lib/languages/haskell.js'; -import hljsHaxe from 'highlight.js/lib/languages/haxe.js'; -import hljsJava from 'highlight.js/lib/languages/java.js'; -import hljsJavascript from 'highlight.js/lib/languages/javascript.js'; -import hljsJson from 'highlight.js/lib/languages/json.js'; -import hljsJulia from 'highlight.js/lib/languages/julia.js'; -import hljsKotlin from 'highlight.js/lib/languages/kotlin.js'; -import hljsLess from 'highlight.js/lib/languages/less.js'; -import hljsLisp from 'highlight.js/lib/languages/lisp.js'; -import hljsLua from 'highlight.js/lib/languages/lua.js'; -import hljsMakefile from 'highlight.js/lib/languages/makefile.js'; -import hljsMarkdown from 'highlight.js/lib/languages/markdown.js'; -import hljsMatlab from 'highlight.js/lib/languages/matlab.js'; -import hljsObjectivec from 'highlight.js/lib/languages/objectivec.js'; -import hljsOcaml from 'highlight.js/lib/languages/ocaml.js'; -import hljsPerl from 'highlight.js/lib/languages/perl.js'; -import hljsPhp from 'highlight.js/lib/languages/php.js'; -import hljsPowershell from 'highlight.js/lib/languages/powershell.js'; -import hljsPuppet from 'highlight.js/lib/languages/puppet.js'; -import hljsPython from 'highlight.js/lib/languages/python.js'; -import hljsR from 'highlight.js/lib/languages/r.js'; -import hljsRuby from 'highlight.js/lib/languages/ruby.js'; -import hljsRust from 'highlight.js/lib/languages/rust.js'; -import hljsScala from 'highlight.js/lib/languages/scala.js'; -import hljsScheme from 'highlight.js/lib/languages/scheme.js'; -import hljsScss from 'highlight.js/lib/languages/scss.js'; -import hljsSmalltalk from 'highlight.js/lib/languages/smalltalk.js'; -import hljsSql from 'highlight.js/lib/languages/sql.js'; -import hljsSwift from 'highlight.js/lib/languages/swift.js'; -import hljsTex from 'highlight.js/lib/languages/tex.js'; -import hljsVbnet from 'highlight.js/lib/languages/vbnet.js'; -import hljsVbscript from 'highlight.js/lib/languages/vbscript.js'; -import hljsVerilog from 'highlight.js/lib/languages/verilog.js'; -import hljsXml from 'highlight.js/lib/languages/xml.js'; -import hljsYaml from 'highlight.js/lib/languages/yaml.js'; - -hlJS.registerLanguage('actionscript', hljsActionscript); -hlJS.registerLanguage('applescript', hljsApplescript); -hlJS.registerLanguage('bash', hljsBash); -hlJS.registerLanguage('clojure', hljsClojure); -hlJS.registerLanguage('coffeescript', hljsCoffeescript); -hlJS.registerLanguage('cpp', hljsCpp); -hlJS.registerLanguage('cs', hljsCs); -hlJS.registerLanguage('css', hljsCss); -hlJS.registerLanguage('d', hljsD); -hlJS.registerLanguage('dart', hljsDart); -hlJS.registerLanguage('delphi', hljsDelphi); -hlJS.registerLanguage('diff', hljsDiff); -hlJS.registerLanguage('django', hljsDjango); -hlJS.registerLanguage('dockerfile', hljsDockerfile); -hlJS.registerLanguage('erlang', hljsErlang); -hlJS.registerLanguage('fortran', hljsFortran); -hlJS.registerLanguage('fsharp', hljsFsharp); -hlJS.registerLanguage('gcode', hljsGcode); -hlJS.registerLanguage('go', hljsGo); -hlJS.registerLanguage('groovy', hljsGroovy); -hlJS.registerLanguage('handlebars', hljsHandlebars); -hlJS.registerLanguage('haskell', hljsHaskell); -hlJS.registerLanguage('haxe', hljsHaxe); -hlJS.registerLanguage('java', hljsJava); -hlJS.registerLanguage('javascript', hljsJavascript); -hlJS.registerLanguage('json', hljsJson); -hlJS.registerLanguage('julia', hljsJulia); -hlJS.registerLanguage('kotlin', hljsKotlin); -hlJS.registerLanguage('less', hljsLess); -hlJS.registerLanguage('lisp', hljsLisp); -hlJS.registerLanguage('lua', hljsLua); -hlJS.registerLanguage('makefile', hljsMakefile); -hlJS.registerLanguage('markdown', hljsMarkdown); -hlJS.registerLanguage('matlab', hljsMatlab); -hlJS.registerLanguage('objectivec', hljsObjectivec); -hlJS.registerLanguage('ocaml', hljsOcaml); -hlJS.registerLanguage('perl', hljsPerl); -hlJS.registerLanguage('php', hljsPhp); -hlJS.registerLanguage('powershell', hljsPowershell); -hlJS.registerLanguage('puppet', hljsPuppet); -hlJS.registerLanguage('python', hljsPython); -hlJS.registerLanguage('r', hljsR); -hlJS.registerLanguage('ruby', hljsRuby); -hlJS.registerLanguage('rust', hljsRust); -hlJS.registerLanguage('scala', hljsScala); -hlJS.registerLanguage('scheme', hljsScheme); -hlJS.registerLanguage('scss', hljsScss); -hlJS.registerLanguage('smalltalk', hljsSmalltalk); -hlJS.registerLanguage('sql', hljsSql); -hlJS.registerLanguage('swift', hljsSwift); -hlJS.registerLanguage('tex', hljsTex); -hlJS.registerLanguage('vbnet', hljsVbnet); -hlJS.registerLanguage('vbscript', hljsVbscript); -hlJS.registerLanguage('verilog', hljsVerilog); -hlJS.registerLanguage('xml', hljsXml); -hlJS.registerLanguage('yaml', hljsYaml); - -const HighlightedLanguages = Constants.HighlightedLanguages; - -export function highlight(lang, code) { - const language = lang.toLowerCase(); - - if (HighlightedLanguages[language]) { - try { - return hlJS.highlight(language, code).value; - } catch (e) { - // fall through if highlighting fails and handle below - } - } - - return TextFormatting.sanitizeHtml(code); -} - -export function getLanguageFromFileExtension(extension) { - for (var key in HighlightedLanguages) { - if (HighlightedLanguages[key].extensions.find((x) => x === extension)) { - return key; - } - } - - return null; -} - -export function canHighlight(language) { - return Boolean(HighlightedLanguages[language.toLowerCase()]); -} - -export function getLanguageName(language) { - if (canHighlight(language)) { - return HighlightedLanguages[language.toLowerCase()].name; - } - - return ''; -} \ No newline at end of file -- cgit v1.2.3-1-g7c22