From aded72363ad303fac2b3a90ce9d76928dc18a9e7 Mon Sep 17 00:00:00 2001 From: Lars Jung Date: Mon, 22 Oct 2012 02:12:07 +0200 Subject: [PATCH] Updates text preview. --- src/_h5ai/client/css/inc/preview-txt.less | 2 +- src/_h5ai/client/js/inc/ext/preview-txt.js | 65 ++++++++++++++++------ 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/src/_h5ai/client/css/inc/preview-txt.less b/src/_h5ai/client/css/inc/preview-txt.less index 3b7372cd..8c6c8f7a 100644 --- a/src/_h5ai/client/css/inc/preview-txt.less +++ b/src/_h5ai/client/css/inc/preview-txt.less @@ -28,7 +28,7 @@ #pv-txt-text { word-break: break-all; - .syntaxhighlighter { + &.highlighted { tr:hover { background-color: rgba(0,0,0,0.05); diff --git a/src/_h5ai/client/js/inc/ext/preview-txt.js b/src/_h5ai/client/js/inc/ext/preview-txt.js index 65fbe370..304d5de5 100644 --- a/src/_h5ai/client/js/inc/ext/preview-txt.js +++ b/src/_h5ai/client/js/inc/ext/preview-txt.js @@ -46,12 +46,49 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource', '' + '', - templateText = '
',
+		templateText = '
',
 		templateMarkdown = '
', currentEntries = [], currentIdx = 0, + // adapted from SyntaxHighlighter + getHighlightedLines = function (sh, alias, content) { + + var brushes = sh.vars.discoveredBrushes, + Brush, brush; + + if (!brushes) { + brushes = {}; + + _.each(sh.brushes, function (info, brush) { + + var aliases = info.aliases; + + if (aliases) { + info.brushName = brush.toLowerCase(); + + for (var i = 0; i < aliases.length; i += 1) { + brushes[aliases[i]] = brush; + } + } + }); + + sh.vars.discoveredBrushes = brushes; + } + + Brush = sh.brushes[brushes[alias || 'plain']]; + + if (!Brush) { + return $(); + } + + brush = new Brush(); + brush.init({toolbar: false, gutter: false}); + + return $(brush.getHtml(content)).find('.line'); + }, + loadScript = function (url, globalId, callback) { if (window[globalId]) { @@ -134,7 +171,7 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource', var $nText; if (current.type === 'markdown') { - $nText = $(templateMarkdown).hide(); + $nText = $(templateMarkdown).hide().text(content); $text.replaceWith($nText); loadMarkdown(function (md) { @@ -144,28 +181,22 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource', } }); } else { - $nText = $(templateText).hide().addClass('toolbar: false; brush:').addClass(settings.types[current.type] || 'plain').text(content); + $nText = $(templateText).hide().text(content); $text.replaceWith($nText); loadSyntaxhighlighter(function (sh) { if (sh) { - sh.highlight({}, $nText[0]); + var $table = $(''); - var $text = $('#pv-txt-text'), - $lineNos = $text.find('td.gutter .line').addClass('cntlinenr'), - $codeLines = $text.find('td.code .line').addClass('cntline'), - $table = $('
').addClass('syntaxhighlighter'), - i, $tr; + getHighlightedLines(sh, settings.types[current.type], content).each(function (i) { + $('') + .append($(''); - $('
').addClass('nr').append(i + 1)) + .append($('').addClass('line').append(this)) + .appendTo($table); + }); - for (i = 0; i < $lineNos.length; i += 1) { - $tr = $('
').addClass('nr').append($lineNos.eq(i)).appendTo($tr); - $('').addClass('line').append($codeLines.eq(i)).appendTo($tr); - $table.append($tr); - } - - $text.find('.syntaxhighlighter').replaceWith($table); + $nText.empty().append($table); } }); }