FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
hack-codegen/src/CodegenImplementsInterface.php at master · kevinmel2000/hack-codegen · GitHub
kevinmel2000
/
hack-codegen
Public
forked from
hhvm/hack-codegen
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
hack-codegen
/
src
/
CodegenImplementsInterface.php
Copy path
More file actions
More file actions
Latest commit
History
History
History
71 lines (61 loc) · 1.81 KB
Breadcrumbs
hack-codegen
/
src
/
CodegenImplementsInterface.php
Copy path
File metadata and controls
71 lines (61 loc) · 1.81 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<
?
hh
//
strict
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
/**
* Describes an implemented interface, optionally including a comment, like:
*
* // Generated from CowSchema::Moo()
* IDoesMoo
*
* Use the methods codegen_implements_interface[s] to instantiate it. E.g.:
*
* $i = codegen_implements_interface('IUser')
* ->setComment('Some kind of user');
* $class = codegen_class('MyClass')
* ->addInterface($i);
*/
final
class
CodegenImplementsInterface
implements
ICodeBuilderRenderer
{
use
HackBuilderRenderer
;
private
?
string
$comment
;
public
function
__construct
(
private
string
$name
) {}
public
function
getName
():
string
{
return
$this
->
name
;
}
public
function
setComment
(
string
$format
, ...):
this
{
$comment
=
vsprintf
(
$format
,
array_slice
(
func_get_args
(),
1
));
$this
->
comment
=
$comment
;
return
$this
;
}
public
function
setGeneratedFrom
(
CodegenGeneratedFrom
$from
):
this
{
$this
->
setComment(
$from
->
render());
return
$this
;
}
public
function
appendToBuilder
(
HackBuilder
$builder
):
HackBuilder
{
return
$builder
->
indent()
->
addInlineComment(
$this
->
comment
)
->
add(
$this
->
name
)
->
unindent();
}
}
function
codegen_implements_interface
(
string
$name
,
):
CodegenImplementsInterface
{
return
new
CodegenImplementsInterface
(
$name
);
}
function
codegen_implements_interfaces
(
Vector
<
string
>
$names
,
):
Vector
<
CodegenImplementsInterface
> {
$interfaces
=
Vector
{};
foreach
(
$names
as
$name
) {
$interfaces
->
add(
new
CodegenImplementsInterface
(
$name
));
}
return
$interfaces
;
}
Back
|
FazBrowse Home
|
New Git URL