stripSeparatedPrefix

Strips a prefix word from a string, optionally also stripping away some non-word characters (currently ":;?! ").

This is to make a helper for stripping away bot prefixes, where such may be "kameloso: ".

pure
stripSeparatedPrefix
(
const string line
,
const string prefix
,
const Flag!"demandSeparatingChars" demandSep = Yes.demandSeparatingChars
)

Parameters

line string

String line prefixed with prefix, potentially including separating characters.

prefix string

Prefix to strip.

demandSep Flag!"demandSeparatingChars"

Makes it a necessity that line is followed by one of the prefix letters ": !?;". If it isn't, the line string will be returned as is.

Return Value

Type: auto

The passed line with the prefix sliced away.

Examples

string prefixed = "kameloso: sudo MODE +o #channel :user";
string command = prefixed.stripSeparatedPrefix("kameloso");
assert((command == "sudo MODE +o #channel :user"), command);
immutable lorem = "say: lorem ipsum".stripSeparatedPrefix("say");
assert((lorem == "lorem ipsum"), lorem);

immutable notehello = "note!!!! zorael hello".stripSeparatedPrefix("note");
assert((notehello == "zorael hello"), notehello);

immutable sudoquit = "sudo quit :derp".stripSeparatedPrefix("sudo");
assert((sudoquit == "quit :derp"), sudoquit);

/*immutable eightball = "8ball predicate?".stripSeparatedPrefix("");
assert((eightball == "8ball predicate?"), eightball);*/

immutable isnotabot = "kamelosois a bot".stripSeparatedPrefix("kameloso");
assert((isnotabot == "kamelosois a bot"), isnotabot);

immutable isabot = "kamelosois a bot"
    .stripSeparatedPrefix("kameloso", No.demandSeparatingChars);
assert((isabot == "is a bot"), isabot);

immutable doubles = "kameloso            is a snek"
    .stripSeparatedPrefix("kameloso");
assert((doubles == "is a snek"), doubles);