diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-04-25 11:25:16 -0400 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2016-04-25 08:25:16 -0700 |
commit | bfc6e4e6b6171b601decfa00a8a729f843a1a758 (patch) | |
tree | 6a480d4a4fa84333eca8f98fa5f285eada14acb9 /webapp/utils/syntax_hightlighting.jsx | |
parent | 3f93aafbc6b4f304d9458c8a4d08c507d45103e2 (diff) | |
download | chat-bfc6e4e6b6171b601decfa00a8a729f843a1a758.tar.gz chat-bfc6e4e6b6171b601decfa00a8a729f843a1a758.tar.bz2 chat-bfc6e4e6b6171b601decfa00a8a729f843a1a758.zip |
PLT-2619/PLT-2661 Removed line numbers from markdown code blocks (#2795)
* Changed .editorconfig to indent CSS files using spaces
* Removed line numbers from markdown code blocks and made them wrap when no language is specified
Diffstat (limited to 'webapp/utils/syntax_hightlighting.jsx')
-rw-r--r-- | webapp/utils/syntax_hightlighting.jsx | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/webapp/utils/syntax_hightlighting.jsx b/webapp/utils/syntax_hightlighting.jsx index 981ce6b35..882afe67f 100644 --- a/webapp/utils/syntax_hightlighting.jsx +++ b/webapp/utils/syntax_hightlighting.jsx @@ -124,56 +124,67 @@ hlJS.registerLanguage('yaml', hljsYaml); const HighlightedLanguages = Constants.HighlightedLanguages; export function formatCode(lang, data, filename) { - var language = lang || ''; - var parsed; - var header = ''; - - language = language.toLowerCase(); + const language = lang.toLowerCase() || ''; + let contents; + let header = ''; if (HighlightedLanguages[language]) { - var name = HighlightedLanguages[language].name; + let name = HighlightedLanguages[language].name; if (filename) { const fname = decodeURIComponent(Utils.getFileName(filename)); name = fname + ' - ' + name; } - header = '<span class="post-body--code__language">' + name + '</span>'; + header = '<span class="post-code__language">' + name + '</span>'; try { - parsed = hlJS.highlight(language, data).value; + contents = hlJS.highlight(language, data).value; } catch (e) { - parsed = TextFormatting.sanitizeHtml(data); + contents = TextFormatting.sanitizeHtml(data); } } else { - parsed = TextFormatting.sanitizeHtml(data); + contents = TextFormatting.sanitizeHtml(data); + } + + let className = 'post-code'; + if (!language) { + // wrap when no language is specified + className += ' post-code--wrap'; } - const lines = data.match(/\r\n|\r|\n|$/g).length; - var strlines = ''; - for (var i = 1; i <= lines; i++) { - if (strlines) { - strlines += '\n' + i; - } else { - strlines += i; + if (filename) { + // add line numbers when viewing a code file preview + const lines = data.match(/\r\n|\r|\n|$/g).length; + let strlines = ''; + for (let i = 1; i <= lines; i++) { + if (strlines) { + strlines += '\n' + i; + } else { + strlines += i; + } } + + contents = ( + '<table>' + + '<tbody>' + + '<tr>' + + '<td class="post-code__lineno">' + strlines + '</td>' + + '<td>' + + contents + + '</td>' + + '</tr>' + + '</tbody>' + + '</table>' + ); } return ( - '<div class="post-body--code">' + + '<div class="' + className + '">' + header + '<pre>' + '<code class="hljs">' + - '<table>' + - '<tbody>' + - '<tr>' + - '<td class="post-body--code__lineno">' + strlines + '</td>' + - '<td>' + - parsed + - '</td>' + - '</tr>' + - '</tbody>' + - '</table>' + + contents + '</code>' + '</pre>' + '</div>' |