in src/DocumentationBuilder.hack [104:151]
protected function getDocumentationBody(
Documentable $documentable,
): string {
$docs = DocBlock\DocBlock::nullable(
$documentable['definition']->getDocComment(),
);
$ctx = $this->getContext();
$md = $this->getPageSections()
|> Vec\map($$, $s ==> (new $s($ctx, $documentable, $docs))->getMarkdown())
|> Vec\filter_nulls($$)
|> Str\join($$, "\n\n");
$parser_ctx = new Markdown\ParserContext();
$parser_ctx->setSourceType(Markdown\SourceType::TRUSTED);
$ast = Markdown\parse($parser_ctx, $md);
$render_ctx = (new MarkdownExt\RenderContext())
->setOutputFormat($this->getContext()->getOutputFormat())
->setDocumentable($documentable)
->setPathProvider(
new IndexedPathProvider(
$this->getContext()->getIndex(),
$this->getContext()->getPathProvider(),
),
)
->appendFilters(
new MarkdownExt\AutoLinkifyFilter(),
);
if ($ctx->isSyntaxHighlightingEnabled()) {
$render_ctx = $render_ctx->appendFilters(new MarkdownExt\SyntaxHighlightingFilter());
}
switch ($ctx->getOutputFormat()) {
case OutputFormat::MARKDOWN:
$renderer = new Markdown\MarkdownRenderer($render_ctx);
break;
case OutputFormat::HTML:
$renderer = new Markdown\HTMLRenderer($render_ctx);
break;
}
$out = $renderer->render($ast);
$fm =
(new PageSections\FrontMatter($ctx, $documentable, $docs))->getMarkdown();
if ($fm is nonnull) {
$out = $fm.$out;
}
return $out;
}