All files / patterns/src/command manager.ts

100% Statements 31/31
100% Branches 5/5
100% Functions 3/3
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 1x 1x 1x 4x 4x 4x 4x 1x 1x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 1x 1x 1x 1x 1x 1x  
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.slice(-1)[0];
 
        if (command != null) {
            return this.execute(command);
        }
 
        return null;
    }
 
    public undo(): CommandResultInterface | null {
        const command = this.commands.pop();
 
        if (command != null) {
            return command.undo();
        }
 
        return null;
    }
}