2020-05-26 23:25:13 +02:00

31 lines
753 B
JavaScript

"use strict";
const Expression = require('./expression');
class AndExp extends Expression {
static of(subExpressions) {
subExpressions = subExpressions.filter(exp => !!exp);
if (subExpressions.length === 1) {
return subExpressions[0];
} else if (subExpressions.length > 0) {
return new AndExp(subExpressions);
}
}
constructor(subExpressions) {
super();
this.subExpressions = subExpressions;
}
async execute(inputNoteSet, searchContext) {
for (const subExpression of this.subExpressions) {
inputNoteSet = await subExpression.execute(inputNoteSet, searchContext);
}
return inputNoteSet;
}
}
module.exports = AndExp;