in src/build/UnifiedAPIIndexBuildStep.php [23:96]
public function buildAll(): void {
Log::i("\nUnifiedAPIIndexBuildStep");
$cg = $this->getCodegenFactory();
$defs = Map {};
$defs->setAll($this->getHackAPILinks(APIProduct::HACK));
$defs->setAll($this->getHackAPILinks(APIProduct::HSL));
$defs->setAll($this->getHackAPILinks(APIProduct::HSL_EXPERIMENTAL));
$defs->setAll($this->getSpecialAttributeLinks());
$cg->codegenFile(BuildPaths::UNIFIED_INDEX)
->setNamespace("HHVM\\UserDocumentation")
->addClass(
$cg->codegenClass('UnifiedIndexData')
->setIsFinal(true)
->setIsAbstract(true)
->addMethod(
$cg->codegenMethod('getIndex')
->setIsStatic(true)
->setReturnType('dict<string, string>')
->setBody(
$cg->codegenHackBuilder()
->addReturn(
dict($defs),
CG\HackBuilderValues::dict(
CG\HackBuilderKeys::export(),
CG\HackBuilderValues::export(),
),
)
->getCode(),
),
),
)
->save();
// Make it available to later build steps
require_once(BuildPaths::UNIFIED_INDEX);
$jump_index = dict[];
foreach ($defs as $name => $url) {
$name = Str\lowercase($name);
if (
(!C\contains_key($jump_index, $name)) ||
Str\length($jump_index[$name]) > Str\length($url)
) {
$jump_index[$name] = $url;
}
}
$cg->codegenFile(BuildPaths::JUMP_INDEX)
->setNamespace("HHVM\\UserDocumentation")
->addClass(
$cg->codegenClass('JumpIndexData')
->setIsFinal(true)
->setIsAbstract(true)
->addMethod(
$cg->codegenMethod('getIndex')
->setIsStatic(true)
->setReturnType('dict<string, string>')
->setBody(
$cg->codegenHackBuilder()
->addReturn(
$jump_index,
CG\HackBuilderValues::dict(
CG\HackBuilderKeys::export(),
CG\HackBuilderValues::export(),
),
)
->getCode(),
),
),
)
->save();
}