All files / patterns/src/command manager.ts

100% Statements 31/31
100% Branches 6/6
100% Functions 4/4
100% Lines 31/31

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 321x 1x 1x 35x 35x 35x 9x 9x 9x 9x 35x 35x 2x 2x 2x 1x 1x 1x 1x 2x 35x 35x 2x 2x 2x 1x 1x 1x 1x 2x 35x  
import { Command, CommandResultInterface } from "./command";
 
export class CommandManager {
    protected commands: Command[] = [];
 
    public execute(command: Command): CommandResultInterface {
        this.commands.push(command);
 
        return command.execute();
    }
 
    public redo(): CommandResultInterface | null {
        const command = this.commands.at(-1);
 
        if (command != undefined) {
            return this.execute(command);
        }
 
        return null;
    }
 
    public undo(): CommandResultInterface | null {
        const command = this.commands.pop();
 
        if (command != undefined) {
            return command.undo();
        }
 
        return null;
    }
}