parseNumeric

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

Examples

 //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);
	}

Meta