@vituum/vite-plugin-latte 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/handler.js +9 -0
- package/index.js +138 -0
- package/index.php +173 -0
- package/latte/AssetFilter.php +11 -0
- package/latte/FetchFunction.php +28 -0
- package/latte/IconFilter.php +14 -0
- package/latte/JsonTag.php +64 -0
- package/latte/PlaceholderFunction.php +11 -0
- package/latte/RandomColorFunction.php +14 -0
- package/latte/TelFilter.php +22 -0
- package/package.json +35 -0
- package/vendor/autoload.php +7 -0
- package/vendor/bin/latte-lint +107 -0
- package/vendor/composer/ClassLoader.php +572 -0
- package/vendor/composer/InstalledVersions.php +350 -0
- package/vendor/composer/LICENSE +21 -0
- package/vendor/composer/autoload_classmap.php +183 -0
- package/vendor/composer/autoload_namespaces.php +9 -0
- package/vendor/composer/autoload_psr4.php +9 -0
- package/vendor/composer/autoload_real.php +57 -0
- package/vendor/composer/autoload_static.php +193 -0
- package/vendor/composer/installed.json +93 -0
- package/vendor/composer/installed.php +32 -0
- package/vendor/composer/platform_check.php +26 -0
- package/vendor/latte/latte/bin/latte-lint +29 -0
- package/vendor/latte/latte/composer.json +53 -0
- package/vendor/latte/latte/license.md +60 -0
- package/vendor/latte/latte/ncs.php +14 -0
- package/vendor/latte/latte/ncs.xml +9 -0
- package/vendor/latte/latte/readme.md +21 -0
- package/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php +114 -0
- package/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php +99 -0
- package/vendor/latte/latte/src/Bridges/Tracy/templates/LattePanel.panel.phtml +98 -0
- package/vendor/latte/latte/src/Bridges/Tracy/templates/LattePanel.tab.phtml +15 -0
- package/vendor/latte/latte/src/Latte/Compiler/Block.php +44 -0
- package/vendor/latte/latte/src/Latte/Compiler/Escaper.php +244 -0
- package/vendor/latte/latte/src/Latte/Compiler/ExpressionBuilder.php +128 -0
- package/vendor/latte/latte/src/Latte/Compiler/Node.php +28 -0
- package/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php +132 -0
- package/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php +77 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php +17 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php +27 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php +59 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php +48 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php +46 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php +129 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/QuotedValue.php +53 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/NopNode.php +21 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php +45 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php +17 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php +41 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayItemNode.php +52 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php +94 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php +45 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php +65 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php +43 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php +42 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php +36 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php +73 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureUseNode.php +37 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php +37 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php +36 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ErrorSuppressNode.php +36 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php +45 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallableNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InRangeNode.php +42 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php +40 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php +40 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php +49 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php +50 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallableNode.php +42 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php +45 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NotNode.php +36 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php +43 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php +43 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php +42 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticCallNode.php +55 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticCallableNode.php +47 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php +42 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php +50 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php +45 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php +40 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php +17 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php +67 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php +36 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php +45 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php +107 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php +89 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php +35 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php +54 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php +30 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/EncapsedStringNode.php +80 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/EncapsedStringPartNode.php +30 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php +63 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php +70 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php +29 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php +40 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php +15 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php +29 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php +21 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php +15 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php +34 -0
- package/vendor/latte/latte/src/Latte/Compiler/Nodes/TextNode.php +37 -0
- package/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php +227 -0
- package/vendor/latte/latte/src/Latte/Compiler/Position.php +43 -0
- package/vendor/latte/latte/src/Latte/Compiler/PrintContext.php +334 -0
- package/vendor/latte/latte/src/Latte/Compiler/Tag.php +117 -0
- package/vendor/latte/latte/src/Latte/Compiler/TagLexer.php +399 -0
- package/vendor/latte/latte/src/Latte/Compiler/TagParser.php +388 -0
- package/vendor/latte/latte/src/Latte/Compiler/TagParserData.php +580 -0
- package/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php +206 -0
- package/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php +391 -0
- package/vendor/latte/latte/src/Latte/Compiler/TemplateParser.php +448 -0
- package/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php +506 -0
- package/vendor/latte/latte/src/Latte/Compiler/Token.php +259 -0
- package/vendor/latte/latte/src/Latte/Compiler/TokenStream.php +151 -0
- package/vendor/latte/latte/src/Latte/ContentType.php +22 -0
- package/vendor/latte/latte/src/Latte/Engine.php +591 -0
- package/vendor/latte/latte/src/Latte/Essential/Blueprint.php +160 -0
- package/vendor/latte/latte/src/Latte/Essential/CachingIterator.php +232 -0
- package/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +232 -0
- package/vendor/latte/latte/src/Latte/Essential/Filters.php +591 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php +161 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php +98 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +74 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php +53 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php +134 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php +49 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php +58 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php +125 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php +60 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php +81 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php +91 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +155 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php +141 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php +82 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php +180 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php +49 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php +140 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php +81 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php +94 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php +105 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php +54 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php +79 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php +84 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/PrintNode.php +70 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php +46 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php +37 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/SkipNode.php +71 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php +62 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php +118 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php +39 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php +38 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/TraceNode.php +35 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php +104 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/TryNode.php +75 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/VarNode.php +106 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php +40 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php +36 -0
- package/vendor/latte/latte/src/Latte/Essential/Nodes/WhileNode.php +81 -0
- package/vendor/latte/latte/src/Latte/Essential/Passes.php +115 -0
- package/vendor/latte/latte/src/Latte/Essential/RawPhpExtension.php +28 -0
- package/vendor/latte/latte/src/Latte/Essential/RollbackException.php +16 -0
- package/vendor/latte/latte/src/Latte/Essential/Tracer.php +117 -0
- package/vendor/latte/latte/src/Latte/Essential/TranslatorExtension.php +101 -0
- package/vendor/latte/latte/src/Latte/Extension.php +97 -0
- package/vendor/latte/latte/src/Latte/Helpers.php +96 -0
- package/vendor/latte/latte/src/Latte/Loader.php +37 -0
- package/vendor/latte/latte/src/Latte/Loaders/FileLoader.php +95 -0
- package/vendor/latte/latte/src/Latte/Loaders/StringLoader.php +76 -0
- package/vendor/latte/latte/src/Latte/Policy.php +24 -0
- package/vendor/latte/latte/src/Latte/PositionAwareException.php +50 -0
- package/vendor/latte/latte/src/Latte/Runtime/Block.php +24 -0
- package/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php +151 -0
- package/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php +39 -0
- package/vendor/latte/latte/src/Latte/Runtime/Filters.php +234 -0
- package/vendor/latte/latte/src/Latte/Runtime/Html.php +35 -0
- package/vendor/latte/latte/src/Latte/Runtime/HtmlStringable.php +17 -0
- package/vendor/latte/latte/src/Latte/Runtime/Template.php +381 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php +30 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallableNode.php +29 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php +32 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallableNode.php +30 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php +32 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php +73 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticCallNode.php +31 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticCallableNode.php +30 -0
- package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php +32 -0
- package/vendor/latte/latte/src/Latte/Sandbox/RuntimeChecker.php +116 -0
- package/vendor/latte/latte/src/Latte/Sandbox/SandboxExtension.php +132 -0
- package/vendor/latte/latte/src/Latte/Sandbox/SecurityPolicy.php +185 -0
- package/vendor/latte/latte/src/Latte/Strict.php +101 -0
- package/vendor/latte/latte/src/Latte/attributes.php +24 -0
- package/vendor/latte/latte/src/Latte/exceptions.php +69 -0
- package/vendor/latte/latte/src/Tools/Linter.php +175 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class NotNode extends ExpressionNode
|
|
18
|
+
{
|
|
19
|
+
public function __construct(
|
|
20
|
+
public ExpressionNode $expr,
|
|
21
|
+
public ?Position $position = null,
|
|
22
|
+
) {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
public function print(PrintContext $context): string
|
|
27
|
+
{
|
|
28
|
+
return $context->prefixOp($this, '!', $this->expr);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
public function &getIterator(): \Generator
|
|
33
|
+
{
|
|
34
|
+
yield $this->expr;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PostOpNode extends ExpressionNode
|
|
18
|
+
{
|
|
19
|
+
private const Ops = ['++' => 1, '--' => 1];
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
public function __construct(
|
|
23
|
+
public ExpressionNode $var,
|
|
24
|
+
public /*readonly*/ string $operator,
|
|
25
|
+
public ?Position $position = null,
|
|
26
|
+
) {
|
|
27
|
+
if (!isset(self::Ops[$this->operator])) {
|
|
28
|
+
throw new \InvalidArgumentException("Unexpected operator '$this->operator'");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
public function print(PrintContext $context): string
|
|
34
|
+
{
|
|
35
|
+
return $context->postfixOp($this, $this->var, $this->operator);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
public function &getIterator(): \Generator
|
|
40
|
+
{
|
|
41
|
+
yield $this->var;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PreOpNode extends ExpressionNode
|
|
18
|
+
{
|
|
19
|
+
private const Ops = ['++' => 1, '--' => 1];
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
public function __construct(
|
|
23
|
+
public ExpressionNode $var,
|
|
24
|
+
public /*readonly*/ string $operator,
|
|
25
|
+
public ?Position $position = null,
|
|
26
|
+
) {
|
|
27
|
+
if (!isset(self::Ops[$this->operator])) {
|
|
28
|
+
throw new \InvalidArgumentException("Unexpected operator '$this->operator'");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
public function print(PrintContext $context): string
|
|
34
|
+
{
|
|
35
|
+
return $context->prefixOp($this, $this->operator, $this->var);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
public function &getIterator(): \Generator
|
|
40
|
+
{
|
|
41
|
+
yield $this->var;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Nodes\Php\IdentifierNode;
|
|
14
|
+
use Latte\Compiler\Position;
|
|
15
|
+
use Latte\Compiler\PrintContext;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PropertyFetchNode extends ExpressionNode
|
|
19
|
+
{
|
|
20
|
+
public function __construct(
|
|
21
|
+
public ExpressionNode $object,
|
|
22
|
+
public IdentifierNode|ExpressionNode $name,
|
|
23
|
+
public bool $nullsafe = false,
|
|
24
|
+
public ?Position $position = null,
|
|
25
|
+
) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
public function print(PrintContext $context): string
|
|
30
|
+
{
|
|
31
|
+
return $context->dereferenceExpr($this->object)
|
|
32
|
+
. ($this->nullsafe ? '?->' : '->')
|
|
33
|
+
. $context->objectProperty($this->name);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
public function &getIterator(): \Generator
|
|
38
|
+
{
|
|
39
|
+
yield $this->object;
|
|
40
|
+
yield $this->name;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php;
|
|
13
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
14
|
+
use Latte\Compiler\Nodes\Php\IdentifierNode;
|
|
15
|
+
use Latte\Compiler\Nodes\Php\NameNode;
|
|
16
|
+
use Latte\Compiler\Position;
|
|
17
|
+
use Latte\Compiler\PrintContext;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class StaticCallNode extends ExpressionNode
|
|
21
|
+
{
|
|
22
|
+
public function __construct(
|
|
23
|
+
public NameNode|ExpressionNode $class,
|
|
24
|
+
public IdentifierNode|ExpressionNode $name,
|
|
25
|
+
/** @var array<Php\ArgumentNode> */
|
|
26
|
+
public array $args = [],
|
|
27
|
+
public ?Position $position = null,
|
|
28
|
+
) {
|
|
29
|
+
(function (Php\ArgumentNode ...$args) {})(...$args);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
public function print(PrintContext $context): string
|
|
34
|
+
{
|
|
35
|
+
$name = match (true) {
|
|
36
|
+
$this->name instanceof VariableNode => $this->name->print($context),
|
|
37
|
+
$this->name instanceof ExpressionNode => '{' . $this->name->print($context) . '}',
|
|
38
|
+
default => $this->name,
|
|
39
|
+
};
|
|
40
|
+
return $context->dereferenceExpr($this->class)
|
|
41
|
+
. '::'
|
|
42
|
+
. $name
|
|
43
|
+
. '(' . $context->implode($this->args) . ')';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
public function &getIterator(): \Generator
|
|
48
|
+
{
|
|
49
|
+
yield $this->class;
|
|
50
|
+
yield $this->name;
|
|
51
|
+
foreach ($this->args as &$item) {
|
|
52
|
+
yield $item;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Nodes\Php\IdentifierNode;
|
|
14
|
+
use Latte\Compiler\Nodes\Php\NameNode;
|
|
15
|
+
use Latte\Compiler\Position;
|
|
16
|
+
use Latte\Compiler\PrintContext;
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class StaticCallableNode extends ExpressionNode
|
|
20
|
+
{
|
|
21
|
+
public function __construct(
|
|
22
|
+
public NameNode|ExpressionNode $class,
|
|
23
|
+
public IdentifierNode|ExpressionNode $name,
|
|
24
|
+
public ?Position $position = null,
|
|
25
|
+
) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
public function print(PrintContext $context): string
|
|
30
|
+
{
|
|
31
|
+
$name = match (true) {
|
|
32
|
+
$this->name instanceof VariableNode => $this->name->print($context),
|
|
33
|
+
$this->name instanceof ExpressionNode => '{' . $this->name->print($context) . '}',
|
|
34
|
+
default => $this->name,
|
|
35
|
+
};
|
|
36
|
+
return PHP_VERSION_ID < 80100
|
|
37
|
+
? '[' . $this->class->print($context) . ', ' . $context->memberAsString($this->name) . ']'
|
|
38
|
+
: $context->dereferenceExpr($this->class) . '::' . $name . '(...)';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
public function &getIterator(): \Generator
|
|
43
|
+
{
|
|
44
|
+
yield $this->class;
|
|
45
|
+
yield $this->name;
|
|
46
|
+
}
|
|
47
|
+
}
|
package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Nodes\Php\NameNode;
|
|
14
|
+
use Latte\Compiler\Nodes\Php\VarLikeIdentifierNode;
|
|
15
|
+
use Latte\Compiler\Position;
|
|
16
|
+
use Latte\Compiler\PrintContext;
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class StaticPropertyFetchNode extends ExpressionNode
|
|
20
|
+
{
|
|
21
|
+
public function __construct(
|
|
22
|
+
public NameNode|ExpressionNode $class,
|
|
23
|
+
public VarLikeIdentifierNode|ExpressionNode $name,
|
|
24
|
+
public ?Position $position = null,
|
|
25
|
+
) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
public function print(PrintContext $context): string
|
|
30
|
+
{
|
|
31
|
+
return $context->dereferenceExpr($this->class)
|
|
32
|
+
. '::$'
|
|
33
|
+
. $context->objectProperty($this->name);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
public function &getIterator(): \Generator
|
|
38
|
+
{
|
|
39
|
+
yield $this->class;
|
|
40
|
+
yield $this->name;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Nodes\Php\NameNode;
|
|
14
|
+
use Latte\Compiler\Position;
|
|
15
|
+
use Latte\Compiler\PrintContext;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class TernaryNode extends ExpressionNode
|
|
19
|
+
{
|
|
20
|
+
public function __construct(
|
|
21
|
+
public ExpressionNode $cond,
|
|
22
|
+
public ?ExpressionNode $if,
|
|
23
|
+
public ?ExpressionNode $else,
|
|
24
|
+
public ?Position $position = null,
|
|
25
|
+
) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
public function print(PrintContext $context): string
|
|
30
|
+
{
|
|
31
|
+
return $context->infixOp(
|
|
32
|
+
$this,
|
|
33
|
+
$this->cond,
|
|
34
|
+
' ?' . ($this->if !== null ? ' ' . $this->if->print($context) . ' ' : '') . ': ',
|
|
35
|
+
$this->else ?? new NameNode('null'),
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
public function &getIterator(): \Generator
|
|
41
|
+
{
|
|
42
|
+
yield $this->cond;
|
|
43
|
+
if ($this->if) {
|
|
44
|
+
yield $this->if;
|
|
45
|
+
}
|
|
46
|
+
if ($this->else) {
|
|
47
|
+
yield $this->else;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class UnaryOpNode extends ExpressionNode
|
|
18
|
+
{
|
|
19
|
+
private const Ops = ['+' => 1, '-' => 1, '~' => 1];
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
public function __construct(
|
|
23
|
+
public ExpressionNode $expr,
|
|
24
|
+
public /*readonly*/ string $operator,
|
|
25
|
+
public ?Position $position = null,
|
|
26
|
+
) {
|
|
27
|
+
if (!isset(self::Ops[$this->operator])) {
|
|
28
|
+
throw new \InvalidArgumentException("Unexpected operator '$this->operator'");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
public function print(PrintContext $context): string
|
|
34
|
+
{
|
|
35
|
+
return $this->expr instanceof self || $this->expr instanceof PreOpNode
|
|
36
|
+
? $this->operator . '(' . $this->expr->print($context) . ')' // Enforce -(-$expr) instead of --$expr
|
|
37
|
+
: $context->prefixOp($this, $this->operator, $this->expr);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
public function &getIterator(): \Generator
|
|
42
|
+
{
|
|
43
|
+
yield $this->expr;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php\Expression;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Nodes\Php\ExpressionNode;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class VariableNode extends ExpressionNode
|
|
18
|
+
{
|
|
19
|
+
public function __construct(
|
|
20
|
+
public string|ExpressionNode $name,
|
|
21
|
+
public ?Position $position = null,
|
|
22
|
+
) {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
public function print(PrintContext $context): string
|
|
27
|
+
{
|
|
28
|
+
return $this->name instanceof ExpressionNode
|
|
29
|
+
? '${' . $this->name->print($context) . '}'
|
|
30
|
+
: '$' . $this->name;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
public function &getIterator(): \Generator
|
|
35
|
+
{
|
|
36
|
+
if ($this->name instanceof ExpressionNode) {
|
|
37
|
+
yield $this->name;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Node;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
abstract class ExpressionNode extends Node
|
|
16
|
+
{
|
|
17
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Node;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class FilterNode extends Node
|
|
18
|
+
{
|
|
19
|
+
public const
|
|
20
|
+
Escape = 'escape',
|
|
21
|
+
NoEscape = 'noescape';
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
public function __construct(
|
|
25
|
+
public IdentifierNode $name,
|
|
26
|
+
/** @var ArgumentNode[] */
|
|
27
|
+
public array $args = [],
|
|
28
|
+
public ?Position $position = null,
|
|
29
|
+
) {
|
|
30
|
+
(function (ArgumentNode ...$args) {})(...$args);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
public function print(PrintContext $context): string
|
|
35
|
+
{
|
|
36
|
+
throw new \LogicException('Cannot directly print FilterNode');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
public function printSimple(PrintContext $context, string $expr): string
|
|
41
|
+
{
|
|
42
|
+
return '($this->filters->' . $this->name . ')('
|
|
43
|
+
. $expr
|
|
44
|
+
. ($this->args ? ', ' . $context->implode($this->args) : '')
|
|
45
|
+
. ')';
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
public function printContentAware(PrintContext $context, string $expr): string
|
|
50
|
+
{
|
|
51
|
+
return '$this->filters->filterContent('
|
|
52
|
+
. $context->encodeString($this->name->name)
|
|
53
|
+
. ', $ʟ_fi, '
|
|
54
|
+
. $expr
|
|
55
|
+
. ($this->args ? ', ' . $context->implode($this->args) : '')
|
|
56
|
+
. ')';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
public function &getIterator(): \Generator
|
|
61
|
+
{
|
|
62
|
+
yield $this->name;
|
|
63
|
+
foreach ($this->args as &$item) {
|
|
64
|
+
yield $item;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Node;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class IdentifierNode extends Node
|
|
18
|
+
{
|
|
19
|
+
public function __construct(
|
|
20
|
+
public string $name,
|
|
21
|
+
public ?Position $position = null,
|
|
22
|
+
) {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
public function __toString(): string
|
|
27
|
+
{
|
|
28
|
+
return $this->name;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
public function print(PrintContext $context): string
|
|
33
|
+
{
|
|
34
|
+
return $this->name;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Position;
|
|
13
|
+
use Latte\Compiler\PrintContext;
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class IntersectionTypeNode extends ComplexTypeNode
|
|
17
|
+
{
|
|
18
|
+
public function __construct(
|
|
19
|
+
/** @var array<IdentifierNode|NameNode> */
|
|
20
|
+
public array $types,
|
|
21
|
+
public ?Position $position = null,
|
|
22
|
+
) {
|
|
23
|
+
(function (IdentifierNode|NameNode ...$args) {})(...$types);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
public function print(PrintContext $context): string
|
|
28
|
+
{
|
|
29
|
+
return $context->implode($this->types, '&');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
public function &getIterator(): \Generator
|
|
34
|
+
{
|
|
35
|
+
foreach ($this->types as &$item) {
|
|
36
|
+
yield $item;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This file is part of the Latte (https://latte.nette.org)
|
|
5
|
+
* Copyright (c) 2008 David Grudl (https://davidgrudl.com)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare(strict_types=1);
|
|
9
|
+
|
|
10
|
+
namespace Latte\Compiler\Nodes\Php;
|
|
11
|
+
|
|
12
|
+
use Latte\Compiler\Node;
|
|
13
|
+
use Latte\Compiler\Position;
|
|
14
|
+
use Latte\Compiler\PrintContext;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class MatchArmNode extends Node
|
|
18
|
+
{
|
|
19
|
+
public function __construct(
|
|
20
|
+
/** @var ExpressionNode[]|null */
|
|
21
|
+
public ?array $conds,
|
|
22
|
+
public ExpressionNode $body,
|
|
23
|
+
public ?Position $position = null,
|
|
24
|
+
) {
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
public function print(PrintContext $context): string
|
|
29
|
+
{
|
|
30
|
+
return ($this->conds ? $context->implode($this->conds) : 'default')
|
|
31
|
+
. ' => '
|
|
32
|
+
. $this->body->print($context);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
public function &getIterator(): \Generator
|
|
37
|
+
{
|
|
38
|
+
if ($this->conds) {
|
|
39
|
+
foreach ($this->conds as &$item) {
|
|
40
|
+
yield $item;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
yield $this->body;
|
|
44
|
+
}
|
|
45
|
+
}
|