@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.
Files changed (201) hide show
  1. package/README.md +39 -0
  2. package/handler.js +9 -0
  3. package/index.js +138 -0
  4. package/index.php +173 -0
  5. package/latte/AssetFilter.php +11 -0
  6. package/latte/FetchFunction.php +28 -0
  7. package/latte/IconFilter.php +14 -0
  8. package/latte/JsonTag.php +64 -0
  9. package/latte/PlaceholderFunction.php +11 -0
  10. package/latte/RandomColorFunction.php +14 -0
  11. package/latte/TelFilter.php +22 -0
  12. package/package.json +35 -0
  13. package/vendor/autoload.php +7 -0
  14. package/vendor/bin/latte-lint +107 -0
  15. package/vendor/composer/ClassLoader.php +572 -0
  16. package/vendor/composer/InstalledVersions.php +350 -0
  17. package/vendor/composer/LICENSE +21 -0
  18. package/vendor/composer/autoload_classmap.php +183 -0
  19. package/vendor/composer/autoload_namespaces.php +9 -0
  20. package/vendor/composer/autoload_psr4.php +9 -0
  21. package/vendor/composer/autoload_real.php +57 -0
  22. package/vendor/composer/autoload_static.php +193 -0
  23. package/vendor/composer/installed.json +93 -0
  24. package/vendor/composer/installed.php +32 -0
  25. package/vendor/composer/platform_check.php +26 -0
  26. package/vendor/latte/latte/bin/latte-lint +29 -0
  27. package/vendor/latte/latte/composer.json +53 -0
  28. package/vendor/latte/latte/license.md +60 -0
  29. package/vendor/latte/latte/ncs.php +14 -0
  30. package/vendor/latte/latte/ncs.xml +9 -0
  31. package/vendor/latte/latte/readme.md +21 -0
  32. package/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php +114 -0
  33. package/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php +99 -0
  34. package/vendor/latte/latte/src/Bridges/Tracy/templates/LattePanel.panel.phtml +98 -0
  35. package/vendor/latte/latte/src/Bridges/Tracy/templates/LattePanel.tab.phtml +15 -0
  36. package/vendor/latte/latte/src/Latte/Compiler/Block.php +44 -0
  37. package/vendor/latte/latte/src/Latte/Compiler/Escaper.php +244 -0
  38. package/vendor/latte/latte/src/Latte/Compiler/ExpressionBuilder.php +128 -0
  39. package/vendor/latte/latte/src/Latte/Compiler/Node.php +28 -0
  40. package/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php +132 -0
  41. package/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php +77 -0
  42. package/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php +17 -0
  43. package/vendor/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php +27 -0
  44. package/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php +59 -0
  45. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php +48 -0
  46. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php +46 -0
  47. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php +39 -0
  48. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php +129 -0
  49. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/QuotedValue.php +53 -0
  50. package/vendor/latte/latte/src/Latte/Compiler/Nodes/NopNode.php +21 -0
  51. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php +45 -0
  52. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php +17 -0
  53. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php +41 -0
  54. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayItemNode.php +52 -0
  55. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php +94 -0
  56. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php +39 -0
  57. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php +45 -0
  58. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php +65 -0
  59. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php +43 -0
  60. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php +42 -0
  61. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php +36 -0
  62. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php +73 -0
  63. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureUseNode.php +37 -0
  64. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php +37 -0
  65. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php +36 -0
  66. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ErrorSuppressNode.php +36 -0
  67. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php +39 -0
  68. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php +45 -0
  69. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallableNode.php +39 -0
  70. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InRangeNode.php +42 -0
  71. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php +40 -0
  72. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php +40 -0
  73. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php +49 -0
  74. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php +50 -0
  75. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallableNode.php +42 -0
  76. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php +45 -0
  77. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NotNode.php +36 -0
  78. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php +43 -0
  79. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php +43 -0
  80. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php +42 -0
  81. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticCallNode.php +55 -0
  82. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticCallableNode.php +47 -0
  83. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php +42 -0
  84. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php +50 -0
  85. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php +45 -0
  86. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php +40 -0
  87. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php +17 -0
  88. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php +67 -0
  89. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php +36 -0
  90. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php +39 -0
  91. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php +45 -0
  92. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php +107 -0
  93. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php +89 -0
  94. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php +35 -0
  95. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php +54 -0
  96. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php +30 -0
  97. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/EncapsedStringNode.php +80 -0
  98. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/EncapsedStringPartNode.php +30 -0
  99. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php +63 -0
  100. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php +70 -0
  101. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php +29 -0
  102. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php +40 -0
  103. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php +15 -0
  104. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php +29 -0
  105. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php +39 -0
  106. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php +21 -0
  107. package/vendor/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php +15 -0
  108. package/vendor/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php +34 -0
  109. package/vendor/latte/latte/src/Latte/Compiler/Nodes/TextNode.php +37 -0
  110. package/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php +227 -0
  111. package/vendor/latte/latte/src/Latte/Compiler/Position.php +43 -0
  112. package/vendor/latte/latte/src/Latte/Compiler/PrintContext.php +334 -0
  113. package/vendor/latte/latte/src/Latte/Compiler/Tag.php +117 -0
  114. package/vendor/latte/latte/src/Latte/Compiler/TagLexer.php +399 -0
  115. package/vendor/latte/latte/src/Latte/Compiler/TagParser.php +388 -0
  116. package/vendor/latte/latte/src/Latte/Compiler/TagParserData.php +580 -0
  117. package/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php +206 -0
  118. package/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php +391 -0
  119. package/vendor/latte/latte/src/Latte/Compiler/TemplateParser.php +448 -0
  120. package/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php +506 -0
  121. package/vendor/latte/latte/src/Latte/Compiler/Token.php +259 -0
  122. package/vendor/latte/latte/src/Latte/Compiler/TokenStream.php +151 -0
  123. package/vendor/latte/latte/src/Latte/ContentType.php +22 -0
  124. package/vendor/latte/latte/src/Latte/Engine.php +591 -0
  125. package/vendor/latte/latte/src/Latte/Essential/Blueprint.php +160 -0
  126. package/vendor/latte/latte/src/Latte/Essential/CachingIterator.php +232 -0
  127. package/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +232 -0
  128. package/vendor/latte/latte/src/Latte/Essential/Filters.php +591 -0
  129. package/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php +161 -0
  130. package/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php +98 -0
  131. package/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +74 -0
  132. package/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php +53 -0
  133. package/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php +134 -0
  134. package/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php +49 -0
  135. package/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php +58 -0
  136. package/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php +125 -0
  137. package/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php +60 -0
  138. package/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php +81 -0
  139. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php +91 -0
  140. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +155 -0
  141. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php +141 -0
  142. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php +82 -0
  143. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php +180 -0
  144. package/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php +49 -0
  145. package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php +140 -0
  146. package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php +81 -0
  147. package/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php +94 -0
  148. package/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php +105 -0
  149. package/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php +54 -0
  150. package/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php +79 -0
  151. package/vendor/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php +84 -0
  152. package/vendor/latte/latte/src/Latte/Essential/Nodes/PrintNode.php +70 -0
  153. package/vendor/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php +46 -0
  154. package/vendor/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php +37 -0
  155. package/vendor/latte/latte/src/Latte/Essential/Nodes/SkipNode.php +71 -0
  156. package/vendor/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php +62 -0
  157. package/vendor/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php +118 -0
  158. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php +39 -0
  159. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php +38 -0
  160. package/vendor/latte/latte/src/Latte/Essential/Nodes/TraceNode.php +35 -0
  161. package/vendor/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php +104 -0
  162. package/vendor/latte/latte/src/Latte/Essential/Nodes/TryNode.php +75 -0
  163. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarNode.php +106 -0
  164. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php +40 -0
  165. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php +36 -0
  166. package/vendor/latte/latte/src/Latte/Essential/Nodes/WhileNode.php +81 -0
  167. package/vendor/latte/latte/src/Latte/Essential/Passes.php +115 -0
  168. package/vendor/latte/latte/src/Latte/Essential/RawPhpExtension.php +28 -0
  169. package/vendor/latte/latte/src/Latte/Essential/RollbackException.php +16 -0
  170. package/vendor/latte/latte/src/Latte/Essential/Tracer.php +117 -0
  171. package/vendor/latte/latte/src/Latte/Essential/TranslatorExtension.php +101 -0
  172. package/vendor/latte/latte/src/Latte/Extension.php +97 -0
  173. package/vendor/latte/latte/src/Latte/Helpers.php +96 -0
  174. package/vendor/latte/latte/src/Latte/Loader.php +37 -0
  175. package/vendor/latte/latte/src/Latte/Loaders/FileLoader.php +95 -0
  176. package/vendor/latte/latte/src/Latte/Loaders/StringLoader.php +76 -0
  177. package/vendor/latte/latte/src/Latte/Policy.php +24 -0
  178. package/vendor/latte/latte/src/Latte/PositionAwareException.php +50 -0
  179. package/vendor/latte/latte/src/Latte/Runtime/Block.php +24 -0
  180. package/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php +151 -0
  181. package/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php +39 -0
  182. package/vendor/latte/latte/src/Latte/Runtime/Filters.php +234 -0
  183. package/vendor/latte/latte/src/Latte/Runtime/Html.php +35 -0
  184. package/vendor/latte/latte/src/Latte/Runtime/HtmlStringable.php +17 -0
  185. package/vendor/latte/latte/src/Latte/Runtime/Template.php +381 -0
  186. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php +30 -0
  187. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallableNode.php +29 -0
  188. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php +32 -0
  189. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallableNode.php +30 -0
  190. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php +32 -0
  191. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php +73 -0
  192. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticCallNode.php +31 -0
  193. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticCallableNode.php +30 -0
  194. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php +32 -0
  195. package/vendor/latte/latte/src/Latte/Sandbox/RuntimeChecker.php +116 -0
  196. package/vendor/latte/latte/src/Latte/Sandbox/SandboxExtension.php +132 -0
  197. package/vendor/latte/latte/src/Latte/Sandbox/SecurityPolicy.php +185 -0
  198. package/vendor/latte/latte/src/Latte/Strict.php +101 -0
  199. package/vendor/latte/latte/src/Latte/attributes.php +24 -0
  200. package/vendor/latte/latte/src/Latte/exceptions.php +69 -0
  201. 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
+ }
@@ -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
+ }