pddl-workspace
Version:
71 lines • 2.55 kB
JavaScript
;
/* --------------------------------------------------------------------------------------------
* Copyright (c) Jan Dolejsi 2020. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
Object.defineProperty(exports, "__esModule", { value: true });
exports.PlanInfo = void 0;
const FileInfo_1 = require("./FileInfo");
const PddlSyntaxTree_1 = require("./parser/PddlSyntaxTree");
const language_1 = require("./language");
const Plan_1 = require("./Plan");
/**
* Plan file.
*/
class PlanInfo extends FileInfo_1.FileInfo {
constructor(fileUri, version, problemName, domainName, text, positionResolver) {
// note we use the `problemName` as the plan name as the plan does not have any declared name
super(fileUri, version, problemName, PddlSyntaxTree_1.PddlSyntaxTree.EMPTY, positionResolver);
this.problemName = problemName;
this.domainName = domainName;
this.steps = [];
this.setText(text);
}
getLanguage() {
return language_1.PddlLanguage.PLAN;
}
setSteps(steps) {
this.steps = steps;
}
getSteps() {
return this.steps;
}
get metric() {
return this._metric;
}
set metric(metric) {
this._metric = metric;
}
get statesEvaluated() {
return this._statesEvaluated;
}
set statesEvaluated(statesEvaluated) {
this._statesEvaluated = statesEvaluated;
}
isPlan() {
return true;
}
static getHappenings(planSteps) {
// todo: when flatMap is available, rewrite this...
const happenings = [];
planSteps
.forEach((planStep, idx, allSteps) => happenings.push(...planStep.getHappenings(allSteps.slice(0, idx - 1))));
const compare = function (happening1, happening2) {
if (happening1.getTime() !== happening2.getTime()) {
return happening1.getTime() - happening2.getTime();
}
else {
return happening1.getFullActionName().localeCompare(happening2.getFullActionName());
}
};
return happenings.sort(compare);
}
getHappenings() {
return PlanInfo.getHappenings(this.getSteps());
}
getPlan(domain, problem) {
return new Plan_1.Plan(this.getSteps(), domain, problem);
}
}
exports.PlanInfo = PlanInfo;
//# sourceMappingURL=PlanInfo.js.map