UNPKG

pddl-workspace

Version:
71 lines 2.55 kB
"use strict"; /* -------------------------------------------------------------------------------------------- * 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