function from_parser()

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);
}