Simple DOM generator inspired by Emmet. Dumb and fluent.
% composer require dmitrivereshchagin/sprout
You can build your DOM from subtrees in the following way (you should avoid recursion though)
use Sprout\Node as Root;
$head = Root::create('head')
->meta('charset="utf-8"')->merge()
->up()
->title()->text('Title')
->root()
;
$body = Root::create('body')
->h1('id="header"')->text('Header')
->up()
->p()->text('Paragraph of text.')->times(2)
->root()
;
echo Root::create('html', 'lang="en"')
->insert($head, $body)
;
Or you can build entire tree using marked nodes
echo Root::create('html', 'lang="en"')->mark('h')
// head subtree
// ...
->to('h')
// body subtree
// ...
->root()
;
% composer test