import std.range : only, takeNone; import virc.common : User; import virc.numerics.isupport : defaultModePrefixes; { auto reply = parseNumeric!(Numeric.RPL_WHOISCHANNELS)(only("someone", "whoisuser", "#test3 +#test"), defaultModePrefixes, "#"); assert(reply.get.user == User("whoisuser")); assert(reply.get.channels.length == 2); with(reply.get.channels[0]) { assert(channel == Channel("#test3")); assert(prefix.isNull); } with(reply.get.channels[1]) { assert(channel == Channel("#test")); assert(prefix.get == "+"); } } { auto reply = parseNumeric!(Numeric.RPL_WHOISCHANNELS)(only("someone", "whoisuser"), defaultModePrefixes, "#"); assert(reply.isNull); } { auto reply = parseNumeric!(Numeric.RPL_WHOISCHANNELS)(only("someone"), defaultModePrefixes, "#"); assert(reply.isNull); } { auto reply = parseNumeric!(Numeric.RPL_WHOISCHANNELS)(takeNone(only("")), defaultModePrefixes, "#"); assert(reply.isNull); }
Parser for RPL_WHOISCHANNELS
Format is 319 <client> <nick> <server mask> :<server description>