Output range to write to.
IRCClient to simulate the assignment of.
IRCServer to simulate the assignment of.
Number of tabs to indent the output by.
IRCClient client; IRCServer server; Appender!(char[]) sink; sink.putClientServerDelta(client, server, 0);
import std.array : Appender; Appender!(char[]) sink; sink.reserve(128); IRCClient client; IRCServer server; with (client) { nickname = "NICKNAME"; user = "USER"; server.address = "something.freenode.net"; server.port = 6667; server.daemon = IRCServer.Daemon.unreal; server.aModes = "eIbq"; } sink.putClientServerDelta(client, server, 0); assert(sink[] == `IRCClient client_; with (client_) { nickname = "NICKNAME"; user = "USER"; } IRCServer server_; with (server_) { address = "something.freenode.net"; port = 6667; daemon = IRCServer.Daemon.unreal; aModes = "eIbq"; } auto parser = IRCParser(client_, server_);`, '\n' ~ sink[]);/* `IRCParser parser; with (parser) { client.nickname = "NICKNAME"; client.user = "USER"; server.address = "something.freenode.net"; server.port = 6667; server.daemon = IRCServer.Daemon.unreal; server.aModes = "eIbq"; }`, '\n' ~ sink[]);*/
Constructs assignment block deltastrings for an IRCClient and an IRCServer, as if they were members of an IRCParser instance, and writes them to an output range.
The deltastrings express the differences between the two structs compared to their .init state.