/** * @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(); }