true if the nickname string is judged to be a nickname, false if not.
assert("kameloso".isValidNickname); assert("kameloso^".isValidNickname); assert("kamelåså".isValidNickname); assert(!"#kameloso".isValidNickname); assert(!"k&&me##so".isValidNickname);
import std.range : repeat; import std.conv : to; IRCServer s; immutable validNicknames = [ "kameloso", "kameloso^", "zorael-", "hirr{}", "asdf`", "[afk]me", "a-zA-Z0-9", `\`, ]; immutable invalidNicknames = [ //"", 'X'.repeat(s.maxNickLength+1).to!string, "åäöÅÄÖ", "\n", "¨", "@pelle", "+calvin", "&hobbes", "#channel", "$deity", "0kameloso", "-kameloso", ]; foreach (immutable nickname; validNicknames) { assert(nickname.isValidNickname(s), nickname); } foreach (immutable nickname; invalidNicknames) { assert(!nickname.isValidNickname(s), nickname); }
Examines a string and judges whether or not it *looks* like a nickname.
It only looks for invalid characters in the name as well as it length.