Merge pull request #700 from bengolds/function-text
Modify Symbol to fix text() output for functions
diff --git a/src/commands/math/basicSymbols.js b/src/commands/math/basicSymbols.js
index 7f44356..49198a4 100644
--- a/src/commands/math/basicSymbols.js
+++ b/src/commands/math/basicSymbols.js
@@ -24,13 +24,22 @@
};
_.text = function() {
var text = this.ctrlSeq;
- if (this[L] && !(this[L] instanceof Variable)
- && !(this[L] instanceof BinaryOperator)
- && this[L].ctrlSeq !== "\\ ")
- text = '*' + text;
- if (this[R] && !(this[R] instanceof BinaryOperator)
- && !(this[R] instanceof SupSub))
- text += '*';
+ if (this.isPartOfOperator) {
+ if (text[0] == '\\') {
+ text = text.slice(1, text.length);
+ }
+ else if (text[text.length-1] == ' ') {
+ text = text.slice (0, -1);
+ }
+ } else {
+ if (this[L] && !(this[L] instanceof Variable)
+ && !(this[L] instanceof BinaryOperator)
+ && this[L].ctrlSeq !== '\\ ')
+ text = '*' + text;
+ if (this[R] && !(this[R] instanceof BinaryOperator)
+ && !(this[R] instanceof SupSub))
+ text += '*';
+ }
return text;
};
});
@@ -83,6 +92,7 @@
};
_.italicize = function(bool) {
this.isItalic = bool;
+ this.isPartOfOperator = !bool;
this.jQ.toggleClass('mq-operator-name', !bool);
return this;
};
diff --git a/test/unit/autoOperatorNames.test.js b/test/unit/autoOperatorNames.test.js
index 96449d4..25d5cac 100644
--- a/test/unit/autoOperatorNames.test.js
+++ b/test/unit/autoOperatorNames.test.js
@@ -11,6 +11,13 @@
);
}
+ function assertText(input, expected) {
+ var result = mq.text();
+ assert.equal(result, expected,
+ input+', got \''+result+'\', expected \''+expected+'\''
+ );
+ }
+
test('simple LaTeX parsing, typing', function() {
function assertAutoOperatorNamesWork(str, latex) {
var count = 0;
@@ -44,6 +51,16 @@
assertAutoOperatorNamesWork('scscscscscsc', 's\\csc s\\csc s\\csc');
});
+ test('text() output', function(){
+ function assertTranslatedCorrectly(latexStr, text) {
+ mq.latex(latexStr);
+ assertText('outputting ' + latexStr, text);
+ }
+
+ assertTranslatedCorrectly('\\sin', 'sin');
+ assertTranslatedCorrectly('\\sin\\left(xy\\right)', 'sin(x*y)');
+ });
+
test('deleting', function() {
var count = 0;
var _autoUnItalicize = Letter.prototype.autoUnItalicize;