in src/from_parser.hack [20:61]
function from_parser(BaseParser $parser): vec<Documentable> {
$top_level = Vec\concat(
$parser->getClasses(),
$parser->getInterfaces(),
$parser->getTraits(),
$parser->getFunctions(),
$parser->getTypes(),
$parser->getNewtypes(),
) |> Vec\sort_by(
$$,
$def ==> $def->getName(),
) |> Vec\map(
$$,
$def ==> shape(
'sources' => vec[$def->getFileName()],
'definition' => $def,
'parent' => null,
),
);
$methods = Vec\map(
$top_level,
$data ==> {
$class = $data['definition'];
if (!$class is ScannedClassish) {
return vec[];
}
return $class->getMethods()
|> Vec\sort_by($$, $m ==> $m->getName())
|> Vec\map(
$$,
$method ==> shape(
'sources' => vec[$method->getName()],
'definition' => $method,
'parent' => $class,
),
);
}
) |> Vec\flatten($$);
return Vec\concat($top_level, $methods);
}