import std.algorithm.searching : canFind; import std.array : array; import std.range : only, takeNone; import virc.ircsplitter : IRCSplitter; { auto versionReply = parseNumeric!(Numeric.RPL_VERSION)(only("Someone", "ircd-seven-1.1.4(20170104-717fbca8dbac,charybdis-3.4-dev)", "localhost", "eHIKMpSZ6 TS6ow 7IZ")); assert(versionReply.get.version_ == "ircd-seven-1.1.4(20170104-717fbca8dbac,charybdis-3.4-dev)"); assert(versionReply.get.server == "localhost"); assert(versionReply.get.comments == "eHIKMpSZ6 TS6ow 7IZ"); } { immutable versionReply = parseNumeric!(Numeric.RPL_VERSION)(takeNone(only(""))); assert(versionReply.isNull); } { immutable versionReply = parseNumeric!(Numeric.RPL_VERSION)(only("Someone")); assert(versionReply.isNull); } { immutable versionReply = parseNumeric!(Numeric.RPL_VERSION)(only("Someone", "ircd-seven-1.1.4(20170104-717fbca8dbac,charybdis-3.4-dev)")); assert(versionReply.isNull); } { immutable versionReply = parseNumeric!(Numeric.RPL_VERSION)(only("Someone", "", "localhost")); assert(versionReply.isNull); }
Parser for RPL_VERSION
Format is 351 <client> <version> <server> :<comments>