js: Use native >, <, === when possible
This commit is contained in:
1 file changed
+24
-6
+24
-6
@@ -251,20 +251,38 @@ class ScriptCompiler {
|
||||
return new TypedInput(`(Math.round(Math.cos((Math.PI * ${this.descendInput(node.value).asNumber()}) / 180) * 1e10) / 1e10)`, TYPE_NUMBER);
|
||||
case 'op.divide':
|
||||
return new TypedInput(`(${this.descendInput(node.left).asNumber()} / ${this.descendInput(node.right).asNumber()})`, TYPE_NUMBER_NAN);
|
||||
case 'op.equals':
|
||||
return new TypedInput(`compareEqual(${this.descendInput(node.left).asUnknown()}, ${this.descendInput(node.right).asUnknown()})`, TYPE_BOOLEAN);
|
||||
case 'op.equals': {
|
||||
const left = this.descendInput(node.left);
|
||||
const right = this.descendInput(node.right);
|
||||
if (left.isAlwaysNumber() && right.isAlwaysNumber()) {
|
||||
return new TypedInput(`(${left.asNumber()} === ${right.asNumber()})`, TYPE_BOOLEAN);
|
||||
}
|
||||
return new TypedInput(`compareEqual(${left.asUnknown()}, ${right.asUnknown()})`, TYPE_BOOLEAN);
|
||||
}
|
||||
case 'op.e^':
|
||||
return new TypedInput(`Math.exp(${this.descendInput(node.value).asNumber()})`, TYPE_NUMBER);
|
||||
case 'op.floor':
|
||||
return new TypedInput(`Math.floor(${this.descendInput(node.value).asNumber()})`, TYPE_NUMBER);
|
||||
case 'op.greater':
|
||||
return new TypedInput(`compareGreaterThan(${this.descendInput(node.left).asUnknown()}, ${this.descendInput(node.right).asUnknown()})`, TYPE_BOOLEAN);
|
||||
case 'op.greater': {
|
||||
const left = this.descendInput(node.left);
|
||||
const right = this.descendInput(node.right);
|
||||
if (left.isAlwaysNumber() && right.isAlwaysNumber()) {
|
||||
return new TypedInput(`(${left.asNumber()} > ${right.asNumber()})`, TYPE_BOOLEAN);
|
||||
}
|
||||
return new TypedInput(`compareGreaterThan(${left.asUnknown()}, ${right.asUnknown()})`, TYPE_BOOLEAN);
|
||||
}
|
||||
case 'op.join':
|
||||
return new TypedInput(`(${this.descendInput(node.left).asString()} + ${this.descendInput(node.right).asString()})`, TYPE_STRING);
|
||||
case 'op.length':
|
||||
return new TypedInput(`${this.descendInput(node.string).asString()}.length`, TYPE_NUMBER);
|
||||
case 'op.less':
|
||||
return new TypedInput(`compareLessThan(${this.descendInput(node.left).asUnknown()}, ${this.descendInput(node.right).asUnknown()})`, TYPE_BOOLEAN);
|
||||
case 'op.less': {
|
||||
const left = this.descendInput(node.left);
|
||||
const right = this.descendInput(node.right);
|
||||
if (left.isAlwaysNumber() && right.isAlwaysNumber()) {
|
||||
return new TypedInput(`(${left.asNumber()} < ${right.asNumber()})`, TYPE_BOOLEAN);
|
||||
}
|
||||
return new TypedInput(`compareLessThan(${left.asUnknown()}, ${right.asUnknown()})`, TYPE_BOOLEAN);
|
||||
}
|
||||
case 'op.letterOf':
|
||||
return new TypedInput(`((${this.descendInput(node.string).asString()})[(${this.descendInput(node.letter).asNumber()} | 0) - 1] || "")`, TYPE_STRING);
|
||||
case 'op.ln':
|
||||
|
||||
Reference in new issue
Block a user