src/CodegenUsesTrait.hack (33 lines of code) (raw):

/* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ namespace Facebook\HackCodegen; use namespace HH\Lib\Str; /** * Describe an used trait, optionally including a comment, like: * * // Generated from CowSchema::Moo() * use MooInterface; * * Use the methods codegen_uses_trait[s] to instantiate it. E.g.: * * $trait = codegen_uses_trait('TFoo') * ->setComment('Some common foo methods'); * $class = codegen_class('MyClass') * ->addTrait($trait); */ final class CodegenUsesTrait { private ?string $comment; public function __construct( private IHackCodegenConfig $config, private string $name, ) { } public function getName(): string { return $this->name; } public function setComment(string $comment): this { $this->comment = $comment; return $this; } public function setCommentf( Str\SprintfFormatString $format, mixed ...$args ): this { return $this->setComment(\vsprintf($format, $args)); } public function setGeneratedFrom(CodegenGeneratedFrom $from): this { $this->setComment($from->render()); return $this; } public function render(): string { return (new HackBuilder($this->config)) ->addInlineComment($this->comment) ->addLinef('use %s;', $this->name) ->getCode(); } }