Name: hack-router-codegen
Owner: HipHop Virtual Machine
Description: Codegen (eg URI Map generation) on top of hhvm/hack-router
Created: 2017-02-09 04:09:29.0
Updated: 2018-04-12 18:32:37.0
Pushed: 2018-04-12 18:32:36.0
Size: 181
Language: Hack
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Code generation for controller classes using the UriPattern
system from
hhvm/hack-router
This currently supports generating:
Request routing maps
Hack request routing classes for your site
For now, looking at the unit tests is the best way to learn how to use it.
ire_once(__DIR__.'/../vendor/hh_autoload.php');
\Facebook\HackRouter\Codegen;
l class UpdateCodegen {
blic function main(): void {
Codegen::forTree(
__DIR__.'/../src/',
shape(
'controllerBase' => WebController::class,
'router' => shape(
'abstract' => false,
'file' => __DIR__.'/../codegen/Router.php',
'class' => 'Router',
),
),
)->build;
This will generate a class called 'Router', complete with an automatically-generated route map, based on the URI patterns in your controllers.
WebController
is the root controller for your site, and must implement
Facebook\HackRouter\IncludeInUriMap
, which in turn requires
Facebook\HackRouter\HasUriPattern
- for example:
ic static function getUriPattern(): UriPattern {
turn (new UriPattern())
->literal('/')
->string('MyString')
->literal('/')
->int('MyInt')
->literal('/')
->enum(MyEnum::class, 'MyEnum');
This is unusual advice, but it's the best approach for Hack code as you otherwise have a circular dependency:
We welcome GitHub issues and pull requests - please see CONTRIBUTING.md for details.
hack-router-codegen is MIT-licensed.