dyaml/examples/representer/main.d
Cameron Ross 7f913246ea Move custom types to Node (#213)
Move custom types to Node
merged-on-behalf-of: BBasile <BBasile@users.noreply.github.com>
2019-01-15 08:37:50 +01:00

44 lines
873 B
D

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