mirror of
https://github.com/zadam/trilium.git
synced 2025-11-17 18:50:41 +01:00
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
"use strict";
|
|
|
|
import Expression from "./expression.js";
|
|
import NoteSet from "../note_set.js";
|
|
import TrueExp from "./true.js";
|
|
import SearchContext from "../search_context.js";
|
|
|
|
class OrExp extends Expression {
|
|
private subExpressions: Expression[];
|
|
|
|
static of(subExpressions: Expression[]) {
|
|
subExpressions = subExpressions.filter(exp => !!exp);
|
|
|
|
if (subExpressions.length === 1) {
|
|
return subExpressions[0];
|
|
}
|
|
else if (subExpressions.length > 0) {
|
|
return new OrExp(subExpressions);
|
|
}
|
|
else {
|
|
return new TrueExp();
|
|
}
|
|
}
|
|
|
|
constructor(subExpressions: Expression[]) {
|
|
super();
|
|
|
|
this.subExpressions = subExpressions;
|
|
}
|
|
|
|
execute(inputNoteSet: NoteSet, executionContext: {}, searchContext: SearchContext) {
|
|
const resultNoteSet = new NoteSet();
|
|
|
|
for (const subExpression of this.subExpressions) {
|
|
resultNoteSet.mergeIn(subExpression.execute(inputNoteSet, executionContext, searchContext));
|
|
}
|
|
|
|
return resultNoteSet;
|
|
}
|
|
}
|
|
|
|
export = OrExp;
|