module gumbo.parse; import gumbo.capi; import gumbo.node; import std.string : toStringz; import std.file : readText; class Output { private: GumboOutput* _output; Node _document; Node _root; public: this(GumboOutput* output) { _output = output; _document = Node.fromCAPI(_output.document); _root = Node.fromCAPI(_output.root); } Node document() { return _document; } Node root() { return _root; } void destroy(const(GumboOptions)* options = &kGumboDefaultOptions) { gumbo_destroy_output(options, _output); } static Output fromFile(string filename) { return fromString(readText(filename)); } static Output fromString(string str) { GumboOutput *output = gumbo_parse(toStringz(str)); return new Output(output); } }