writes nested packages
import std.array : appender; import std.string : outdent, stripLeft; auto output = appender!string; auto writer = writer(formatter(output)); writer.put(["a", "b", "x"]); writer.put(["a", "b", "y"]); writer.put(["a", "z"]); writer.close; const expected = ` package a { package b as a.b { package x as a.b.x {} package y as a.b.y {} } package z as a.z {} } `; assert(output.data == outdent(expected).stripLeft);