module cucumber.keywords;

import std.string;

struct Match {
    string reg;
    ulong line;
    this(in string reg, in ulong line = __LINE__) {
        this.reg = reg;
        this.line = line;
    }
}

alias Given = Match;
alias When = Match;
alias Then = Match;
alias And = Match;
alias But = Match;

string stripCucumberKeywords(string str) {
    string stripImpl(string str, in string keyword) {
        import std.array;
        str = str.stripLeft;
        if(str.startsWith(keyword)) {
            return std.array.replace(str, keyword, "");
        } else {
            return str;
        }
    }

    foreach(keyword; ["Given", "When", "Then", "And", "But"]) {
        str = stripImpl(str, keyword);
    }

    return str.stripLeft;
}