import std.stdio; import dyaml; struct Color { ubyte red; ubyte green; ubyte blue; Node opCast(T: Node)() const { static immutable hex = "0123456789ABCDEF"; //Using the color format from the Constructor example. string scalar; foreach(channel; [red, green, blue]) { scalar ~= hex[channel / 16]; scalar ~= hex[channel % 16]; } //Representing as a scalar, with custom tag to specify this data type. return Node(scalar, "!color"); } } void main() { try { auto dumper = dumper(File("output.yaml", "w").lockingTextWriter); auto document = Node([Color(255, 0, 0), Color(0, 255, 0), Color(0, 0, 255)]); dumper.dump(document); } catch(YAMLException e) { writeln(e.msg); } }