putClientServerDelta

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.

version(AssertGeneration)
private pure @safe
void
putClientServerDelta
(
Sink
)
(
auto ref Sink sink
,,,
const uint indents
)

Parameters

sink Sink

Output range to write to.

client IRCClient

IRCClient to simulate the assignment of.

server IRCServer

IRCServer to simulate the assignment of.

indents uint

Number of tabs to indent the output by.

Examples

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[]);*/