Skip to content

Commit 09e0ed2

Browse files
authored
Merge pull request #27 from OpenNMS/jira/NMS-14779
NMS-14779 Fix POW issue
2 parents c5d1716 + e11f497 commit 09e0ed2

7 files changed

+39
-5
lines changed

dist/backshift.js

+11
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,16 @@ Backshift.Utilities.RpnToJexlConverter = Backshift.Class.create({
585585
};
586586
};
587587

588+
var funcOpReverse = function (op, numArgs) {
589+
return function (stack) {
590+
var i, ret = ")";
591+
for (i=0; i < numArgs; i++) {
592+
ret = ',' + stack.pop() + ret;
593+
}
594+
return op + '(' + ret.substring(1, ret.length);
595+
};
596+
};
597+
588598
var ifOp = function (stack) {
589599
var c = stack.pop();
590600
var b = stack.pop();
@@ -680,6 +690,7 @@ Backshift.Utilities.RpnToJexlConverter = Backshift.Class.create({
680690
this.operators['ISINF'] = infOp;
681691
this.operators['LIMIT'] = limitOp;
682692
this.operators['ADDNAN'] = addNanOp;
693+
this.operators['POW'] = funcOpReverse('math:pow', 2);
683694
this.operators['SIN'] = funcOp('math:sin', 1);
684695
this.operators['COS'] = funcOp('math:cos', 1);
685696
this.operators['LOG'] = funcOp('math:log', 1);

dist/backshift.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/backshift.onms.js

+11
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,16 @@ Backshift.Utilities.RpnToJexlConverter = Backshift.Class.create({
399399
};
400400
};
401401

402+
var funcOpReverse = function (op, numArgs) {
403+
return function (stack) {
404+
var i, ret = ")";
405+
for (i=0; i < numArgs; i++) {
406+
ret = ',' + stack.pop() + ret;
407+
}
408+
return op + '(' + ret.substring(1, ret.length);
409+
};
410+
};
411+
402412
var ifOp = function (stack) {
403413
var c = stack.pop();
404414
var b = stack.pop();
@@ -494,6 +504,7 @@ Backshift.Utilities.RpnToJexlConverter = Backshift.Class.create({
494504
this.operators['ISINF'] = infOp;
495505
this.operators['LIMIT'] = limitOp;
496506
this.operators['ADDNAN'] = addNanOp;
507+
this.operators['POW'] = funcOpReverse('math:pow', 2);
497508
this.operators['SIN'] = funcOp('math:sin', 1);
498509
this.operators['COS'] = funcOp('math:cos', 1);
499510
this.operators['LOG'] = funcOp('math:log', 1);

dist/backshift.onms.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "backshift",
3-
"version": "1.3.1",
3+
"version": "1.3.2",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/OpenNMS/backshift.git"

src/Backshift.Utilities.RpnToJexlConverter.js

+11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ Backshift.Utilities.RpnToJexlConverter = Backshift.Class.create({
3232
};
3333
};
3434

35+
var funcOpReverse = function (op, numArgs) {
36+
return function (stack) {
37+
var i, ret = ")";
38+
for (i=0; i < numArgs; i++) {
39+
ret = ',' + stack.pop() + ret;
40+
}
41+
return op + '(' + ret.substring(1, ret.length);
42+
};
43+
};
44+
3545
var ifOp = function (stack) {
3646
var c = stack.pop();
3747
var b = stack.pop();
@@ -127,6 +137,7 @@ Backshift.Utilities.RpnToJexlConverter = Backshift.Class.create({
127137
this.operators['ISINF'] = infOp;
128138
this.operators['LIMIT'] = limitOp;
129139
this.operators['ADDNAN'] = addNanOp;
140+
this.operators['POW'] = funcOpReverse('math:pow', 2);
130141
this.operators['SIN'] = funcOp('math:sin', 1);
131142
this.operators['COS'] = funcOp('math:cos', 1);
132143
this.operators['LOG'] = funcOp('math:log', 1);

test/Backshift.Utilities.RpnToJexlConverter.Test.js

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ describe('Backshift.Utilities.RpnToJexlConverter', function () {
5151
checkRpnConversion("X,LOG", "math:log(X)");
5252
checkRpnConversion("X,EXP", "math:exp(X)");
5353
checkRpnConversion("X,SQRT", "math:sqrt(X)");
54+
checkRpnConversion("X,Y,POW", "math:pow(X,Y)");
5455
checkRpnConversion("X,ATAN", "math:atan(X)");
5556
checkRpnConversion("Y,X,ATAN2", "math:atan2(Y,X)");
5657
checkRpnConversion("Y,X,ATAN2,RAD2DEG", "math:toDegrees(math:atan2(Y,X))");

0 commit comments

Comments
 (0)