Escape latex in staticmath selectable span
diff --git a/src/services/textarea.js b/src/services/textarea.js
index eaed10c..8782e26 100644
--- a/src/services/textarea.js
+++ b/src/services/textarea.js
@@ -48,7 +48,8 @@
var ctrlr = this, root = ctrlr.root, cursor = ctrlr.cursor,
textarea = ctrlr.textarea, textareaSpan = ctrlr.textareaSpan;
- this.container.prepend('<span class="mq-selectable">$'+ctrlr.exportLatex()+'$</span>');
+ this.container.prepend(jQuery('<span class="mq-selectable">')
+ .text('$'+ctrlr.exportLatex()+'$'));
ctrlr.blurred = true;
textarea.bind('cut paste', false)
.bind('copy', function() { ctrlr.setTextareaSelection(); })
diff --git a/test/unit/latex.test.js b/test/unit/latex.test.js
index 7baa156..e6e4096 100644
--- a/test/unit/latex.test.js
+++ b/test/unit/latex.test.js
@@ -329,4 +329,18 @@
testCantParse('langlerfish/ranglerfish (checking for confusion with langle/rangle)',
'\\left\\langlerfish 123\\right\\ranglerfish)');
});
+
+ suite('selectable span', function() {
+ setup(function() {
+ MQ.StaticMath($('<span>2<x</span>').appendTo('#mock')[0]);
+ });
+
+ function selectableContent() {
+ return document.querySelector('#mock .mq-selectable').textContent;
+ }
+
+ test('escapes < in textContent', function () {
+ assert.equal(selectableContent(), '$2<x$');
+ });
+ });
});