From 8068b01f216a4a24279059ed4bd555a8e69f2653 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 28 Jun 2013 18:15:54 +0400 Subject: [PATCH] fix #1492 $' breaks static-highligher --- demo/static-highlighter/server.js | 16 +++++++++------- lib/ace/ext/static_highlight.js | 10 +++++----- lib/ace/ext/static_highlight_test.js | 12 ++++++++++++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/demo/static-highlighter/server.js b/demo/static-highlighter/server.js index 0571c8f8..d1d6adbb 100644 --- a/demo/static-highlighter/server.js +++ b/demo/static-highlighter/server.js @@ -2,7 +2,7 @@ * Simple node.js server, which generates the synax highlighted version of itself * using the Ace modes and themes on the server and serving a static web page. */ - +// $' // include ace search path and modules require("amd-loader"); @@ -23,12 +23,14 @@ http.createServer(function(req, res) { res.writeHead(200, {"Content-Type": "text/html; charset=utf-8"}); fs.readFile(__filename, "utf8", function(err, data) { var highlighted = highlighter.render(data, new JavaScriptMode(), theme); - res.end('\n\ -\n\ -:html:\n\ -'.replace(":css:", highlighted.css).replace(":html:", highlighted.html)); + res.end( + '\n' + + '\n' + + highlighted.html + + '' + ); }); }).listen(port); diff --git a/lib/ace/ext/static_highlight.js b/lib/ace/ext/static_highlight.js index 3585476c..fee64552 100644 --- a/lib/ace/ext/static_highlight.js +++ b/lib/ace/ext/static_highlight.js @@ -120,11 +120,11 @@ exports.renderSync = function(input, mode, theme, lineStart, disableGutter) { } // let's prepare the whole html - var html = "
\ -
\ - :code\ -
\ -
".replace(/:cssClass/, theme.cssClass).replace(/:code/, stringBuilder.join("")); + var html = "
" + + "
" + + stringBuilder.join("") + + "
" + + "
"; textLayer.destroy(); diff --git a/lib/ace/ext/static_highlight_test.js b/lib/ace/ext/static_highlight_test.js index 2113d14f..1a0dd7cf 100644 --- a/lib/ace/ext/static_highlight_test.js +++ b/lib/ace/ext/static_highlight_test.js @@ -9,6 +9,7 @@ define(function(require, exports, module) { var assert = require("assert"); var highlighter = require("./static_highlight"); var JavaScriptMode = require("../mode/javascript").Mode; +var TextMode = require("../mode/text").Mode; // Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite module.exports = { @@ -65,6 +66,17 @@ function hello (a, b, c) {\n\ result = highlighter.render(snippet, mode, theme); assert.equal(!!result.html.match(/
/), true); + next(); + }, + + "test js string replace specials": function(next) { + var theme = require("../theme/tomorrow"); + var snippet = "$'$&$1$2$$"; + var mode = new TextMode(); + + result = highlighter.render(snippet, mode, theme); + assert.ok(result.html.indexOf(snippet) != -1); + next(); } };