40 lines
1.0 KiB
TypeScript
Raw Normal View History

2020-05-23 10:36:49 +02:00
"use strict";
import Expression from "./expression.js";
import NoteSet from "../note_set.js";
import SearchContext from "../search_context.js";
2020-05-23 10:36:49 +02:00
class ParentOfExp extends Expression {
private subExpression: Expression;
constructor(subExpression: Expression) {
2020-05-23 10:36:49 +02:00
super();
this.subExpression = subExpression;
}
execute(inputNoteSet: NoteSet, executionContext: {}, searchContext: SearchContext) {
2020-05-23 10:36:49 +02:00
const subInputNoteSet = new NoteSet();
for (const note of inputNoteSet.notes) {
subInputNoteSet.addAll(note.children);
}
const subResNoteSet = this.subExpression.execute(subInputNoteSet, executionContext, searchContext);
2020-05-23 10:36:49 +02:00
const resNoteSet = new NoteSet();
for (const childNote of subResNoteSet.notes) {
for (const parentNote of childNote.parents) {
if (inputNoteSet.hasNote(parentNote)) {
resNoteSet.add(parentNote);
}
}
}
return resNoteSet;
}
}
export = ParentOfExp;