facebook / hack-codegen
此包的最新版本(v4.5.1)没有可用的许可信息。
Hack Codegen 是一个用于编程生成 Hack 代码的库
v4.5.1
2022-06-06 17:05 UTC
Requires
- hhvm: ^4.128
Requires (Dev)
- facebook/difflib: ^1.0
- facebook/fbexpect: ^2.6.1
- hhvm/hacktest: ^2.0
- hhvm/hhast: ^4.80
- hhvm/hhvm-autoload: ^2.0|^3.0
- hhvm/hsl-experimental: ^4.53
- hhvm/type-assert: ^3.1|^4.0
- dev-main
- v4.5.1
- v4.5.0
- v4.4.1
- v4.4.0
- v4.3.12
- v4.3.11
- v4.3.10
- v4.3.9
- v4.3.8
- v4.3.7
- v4.3.6
- v4.3.5
- v4.3.4
- v4.3.3
- 4.3.2
- v4.3.1
- v4.3.0
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2
- v4.1.1
- v4.1.0
- v4.0.x-dev
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.x-dev
- v3.3.1
- v3.3.0
- v3.2.1
- v3.2.0
- v3.1.1
- v3.1.0
- v3.0.8
- v3.0.7
- v3.0.5
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.x-dev
- v2.2.1
- v2.2.0
- v2.1.0
- v2.0.0
- v1.x-dev
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1
- v1.0.1
- v1.0
- v0.9-beta
- dev-dependabot/bundler/docs/nokogiri-1.14.3
This package is auto-updated.
Last update: 2024-08-30 01:11:26 UTC
README
Hack Codegen 是一个库,可以轻松生成 Hack 代码并将其写入签名文件,以防止不希望的改变。编写编写代码的代码背后的理念是提高抽象层次并减少耦合。您可以以自己的方式描述问题并生成相应的代码。例如,请参阅 examples/dorm。在这个例子中,我们使用一个模式来描述数据的结构,并使用 Hack Codegen 来编写匹配的代码。
示例
DORM 示例展示了如何在简化的实际例子中使用代码生成的不同方面。包含的测试也举例说明了不同组件的使用。
需求
Hack Codegen 需要
- HHVM
- Composer
安装 Hack Codegen
此包可以通过 composer 安装
composer require facebook/hack-codegen
用法
包含由 composer 生成的自动加载文件,您就可以开始使用它了。例如
<?hh require 'vendor/autoload.php'; use Facebook\HackCodegen\HackCodegenFactory; $cg = new HackCodegenFactory(new HackCodegenConfig()); echo $cg->codegenFile('HelloWorld.php') ->addClass( $cg->codegenClass('HelloWorld') ->addMethod( $cg->codegenMethod('sayHi') ->setReturnType('void') ->setBody( $cg->codegenHackBuilder() ->addAssignment( '$some_vector', Vector { 1, 2, 3 }, HackBuilderValues::vector( HackBuilderValues::export(), ), ) ->addAssignment( '$debug_info', Map { 'file' => '__FILE__', 'line' => '__LINE__' }, HackBuilderValues::map( HackBuilderKeys::export(), HackBuilderValues::literal(), ), ) ->addAssignment( '$some_vector_of_vectors', Vector { Vector { 1, 2, 3 }, Vector { 4, 5, 6 } }, HackBuilderValues::vector( HackBuilderValues::vector( HackBuilderValues::export(), ), ), ) ->addLine('echo "hello world\n";') ->getCode(); ); ) )->save();
配置
您可以通过实现 IHackCodegenConfig
并将其实例传递给 HackCodegenFactory
的构造函数来配置一些选项,例如最大行宽、间距和标题。
许可
Hack Codegen 使用 MIT 许可。