/**
* @param string $input
*
* @return Document
*/
public function parse($input)
{
$context = new Context(new Document(), $this->getEnvironment());
$lines = $this->preProcessInput($input);
foreach ($lines as $line) {
$context->setNextLine($line);
$this->incorporateLine($context);
}
while ($context->getTip()) {
$context->getTip()->finalize($context);
}
$this->processInlines($context, $context->getDocument());
return $context->getDocument();
}