//Numeric.RPL_LOGON import std.datetime : DateTime, SysTime, UTC; import std.range : only; { immutable logon = parseNumeric!(Numeric.RPL_LOGON)(only("someone", "someoneElse", "someIdent", "example.net", "911248013", "logged on")); assert(logon.user.mask.nickname == "someoneElse"); assert(logon.user.mask.ident == "someIdent"); assert(logon.user.mask.host == "example.net"); static immutable date = SysTime(DateTime(1998, 11, 16, 20, 26, 53), UTC()); assert(logon.timeOccurred == date); }
Parses most of the WATCH numerics. Most of them have the same format, so the majority of the magic happens in this function.
Formats are:
600 <client> <nickname> <username> <hostname> <signontime> :logged on
601 <client> <nickname> <username> <hostname> <lastnickchange> :logged off
602 <client> <nickname> <username> <hostname> <lastnickchange> :stopped watching
604 <client> <nickname> <username> <hostname> <lastnickchange> :is online
605 <client> <nickname> <username> <hostname> <lastnickchange> :is offline
609 <client> <nickname> <username> <hostname> <awaysince> :is away