gulp-phug 1.3.3 → 1.3.5

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 (260) hide show
  1. package/index.js +23 -8
  2. package/package.json +4 -4
  3. package/support/composer.json +1 -1
  4. package/support/composer.lock +93 -178
  5. package/support/vendor/autoload.php +15 -0
  6. package/support/vendor/bin/phug +119 -0
  7. package/support/vendor/bin/var-dump-server +119 -0
  8. package/support/vendor/composer/ClassLoader.php +166 -32
  9. package/support/vendor/composer/InstalledVersions.php +387 -329
  10. package/support/vendor/composer/autoload_classmap.php +1 -5
  11. package/support/vendor/composer/autoload_files.php +2 -3
  12. package/support/vendor/composer/autoload_namespaces.php +1 -1
  13. package/support/vendor/composer/autoload_psr4.php +3 -4
  14. package/support/vendor/composer/autoload_real.php +12 -37
  15. package/support/vendor/composer/autoload_static.php +6 -17
  16. package/support/vendor/composer/installed.json +97 -184
  17. package/support/vendor/composer/installed.php +129 -151
  18. package/support/vendor/composer/platform_check.php +16 -4
  19. package/support/vendor/phug/phug/.github/workflows/coverage.yml +71 -0
  20. package/support/vendor/phug/phug/.github/workflows/multi-tester.yml +46 -0
  21. package/support/vendor/phug/phug/.github/workflows/split.yml +41 -0
  22. package/support/vendor/phug/phug/.github/workflows/style.yml +48 -0
  23. package/support/vendor/phug/phug/.github/workflows/tests.yml +49 -0
  24. package/support/vendor/phug/phug/.multi-tester.yml +42 -10
  25. package/support/vendor/phug/phug/composer.json +25 -16
  26. package/support/vendor/phug/phug/phpcs.xml +4 -0
  27. package/support/vendor/phug/phug/phpunit.xml +2 -0
  28. package/support/vendor/phug/phug/phug +1 -1
  29. package/support/vendor/phug/phug/release.php +8 -0
  30. package/support/vendor/phug/phug/src/Phug/Ast/Ast/Node.php +7 -1
  31. package/support/vendor/phug/phug/src/Phug/Ast/composer.json +1 -2
  32. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/Element/BlockElement.php +1 -1
  33. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AssignmentNodeCompiler.php +9 -1
  34. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AttributeNodeCompiler.php +1 -0
  35. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ElementNodeCompiler.php +6 -0
  36. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ImportNodeCompiler.php +4 -4
  37. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompilerInterface.php +1 -1
  38. package/support/vendor/phug/phug/src/Phug/Compiler/composer.json +5 -2
  39. package/support/vendor/phug/phug/src/Phug/DependencyInjection/DependencyInjection.php +1 -1
  40. package/support/vendor/phug/phug/src/Phug/DependencyInjection/composer.json +1 -2
  41. package/support/vendor/phug/phug/src/Phug/Event/Event/ListenerQueue.php +3 -0
  42. package/support/vendor/phug/phug/src/Phug/Event/EventManagerTrait.php +1 -1
  43. package/support/vendor/phug/phug/src/Phug/Event/composer.json +1 -2
  44. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AbstractFormat.php +15 -12
  45. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AssignmentContainerInterface.php +2 -1
  46. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractAssignmentContainerElement.php +11 -1
  47. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractMarkupElement.php +1 -1
  48. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AssignmentElement.php +9 -4
  49. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AttributeElement.php +4 -1
  50. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/CodeElement.php +2 -2
  51. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MarkupElement.php +10 -8
  52. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinCallElement.php +2 -1
  53. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinElement.php +2 -1
  54. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Format/XmlFormat.php +213 -20
  55. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/AssignmentHelpersTrait.php +7 -4
  56. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/HandleVariable.php +4 -4
  57. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/MagicAccessorTrait.php +1 -7
  58. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter.php +1 -1
  59. package/support/vendor/phug/phug/src/Phug/Formatter/composer.json +1 -2
  60. package/support/vendor/phug/phug/src/Phug/Invoker/Invoker.php +1 -1
  61. package/support/vendor/phug/phug/src/Phug/Invoker/composer.json +5 -2
  62. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Partial/IndentStyleTrait.php +5 -5
  63. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AssignmentScanner.php +8 -2
  64. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AttributeScanner.php +23 -11
  65. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/ConditionalScanner.php +1 -1
  66. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/FilterScanner.php +6 -10
  67. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/IndentationScanner.php +1 -1
  68. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/KeywordScanner.php +1 -1
  69. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/MultilineScanner.php +6 -12
  70. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/Partial/TrailingOutdentHandlerTrait.php +26 -0
  71. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/TextScanner.php +3 -3
  72. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/State.php +9 -9
  73. package/support/vendor/phug/phug/src/Phug/Lexer/composer.json +1 -2
  74. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Event/NodeEvent.php +3 -2
  75. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AssignmentNode.php +5 -1
  76. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AttributeNode.php +4 -1
  77. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/ElementNode.php +5 -1
  78. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/FilterNode.php +2 -1
  79. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinCallNode.php +5 -1
  80. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinNode.php +5 -1
  81. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AbstractTokenHandler.php +87 -0
  82. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AssignmentTokenHandler.php +6 -21
  83. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeEndTokenHandler.php +5 -10
  84. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeStartTokenHandler.php +7 -23
  85. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeTokenHandler.php +21 -19
  86. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AutoCloseTokenHandler.php +5 -17
  87. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/BlockTokenHandler.php +4 -10
  88. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CaseTokenHandler.php +4 -10
  89. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ClassTokenHandler.php +7 -34
  90. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CodeTokenHandler.php +4 -10
  91. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CommentTokenHandler.php +4 -10
  92. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ConditionalTokenHandler.php +4 -10
  93. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoTokenHandler.php +4 -10
  94. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoctypeTokenHandler.php +4 -10
  95. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/EachTokenHandler.php +4 -10
  96. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpansionTokenHandler.php +5 -11
  97. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpressionTokenHandler.php +4 -10
  98. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/FilterTokenHandler.php +4 -10
  99. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ForTokenHandler.php +4 -10
  100. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IdTokenHandler.php +7 -33
  101. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ImportTokenHandler.php +14 -20
  102. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IndentTokenHandler.php +4 -10
  103. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationEndTokenHandler.php +4 -10
  104. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationStartTokenHandler.php +29 -30
  105. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/KeywordTokenHandler.php +4 -10
  106. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinCallTokenHandler.php +4 -10
  107. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinTokenHandler.php +4 -10
  108. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/NewLineTokenHandler.php +4 -10
  109. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/OutdentTokenHandler.php +4 -10
  110. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/Partial/StaticAttributeTrait.php +36 -0
  111. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationEndTokenHandler.php +4 -10
  112. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationStartTokenHandler.php +7 -10
  113. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagTokenHandler.php +6 -21
  114. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TextTokenHandler.php +4 -10
  115. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/VariableTokenHandler.php +4 -10
  116. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhenTokenHandler.php +4 -10
  117. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhileTokenHandler.php +4 -10
  118. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/YieldTokenHandler.php +4 -10
  119. package/support/vendor/phug/phug/src/Phug/Parser/Parser.php +1 -1
  120. package/support/vendor/phug/phug/src/Phug/Parser/composer.json +1 -2
  121. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Cli.php +5 -5
  122. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/ExtensionsTrait.php +1 -1
  123. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/FacadeOptionsTrait.php +1 -1
  124. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Phug.php +14 -5
  125. package/support/vendor/phug/phug/src/Phug/Phug/composer.json +5 -2
  126. package/support/vendor/phug/phug/src/Phug/Reader/Reader.php +9 -9
  127. package/support/vendor/phug/phug/src/Phug/Reader/composer.json +4 -0
  128. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/FileAdapter.php +21 -4
  129. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/Stream/Template.php +5 -0
  130. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/StreamAdapter.php +1 -1
  131. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/CacheInterface.php +1 -1
  132. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/AdapterTrait.php +1 -1
  133. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/Debug/DebuggerTrait.php +56 -10
  134. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/RendererOptionsTrait.php +1 -1
  135. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/Dump.php +1 -1
  136. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/LinkDump.php +2 -2
  137. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/ProfilerModule.php +1 -1
  138. package/support/vendor/phug/phug/src/Phug/Renderer/composer.json +7 -3
  139. package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseTyped.php +67 -0
  140. package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseUntyped.php +67 -0
  141. package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesInterface.php +16 -0
  142. package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesOrderInterface.php +17 -0
  143. package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesStorage.php +44 -0
  144. package/support/vendor/phug/phug/src/Phug/Util/Util/Collection.php +2 -0
  145. package/support/vendor/phug/phug/src/Phug/Util/Util/OrderableInterface.php +22 -0
  146. package/support/vendor/phug/phug/src/Phug/Util/Util/OrderedValue.php +25 -0
  147. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributeTrait.php +2 -1
  148. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributesOrderTrait.php +19 -0
  149. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ModuleContainerTrait.php +3 -3
  150. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OptionTrait.php +1 -1
  151. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OrderTrait.php +27 -0
  152. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/StaticMemberTrait.php +1 -1
  153. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ValueTrait.php +5 -3
  154. package/support/vendor/phug/phug/src/Phug/Util/Util/SandBox.php +1 -0
  155. package/support/vendor/phug/phug/src/Phug/Util/Util/TestCase.php +47 -4
  156. package/support/vendor/phug/phug/src/Phug/Util/composer.json +5 -6
  157. package/support/vendor/symfony/deprecation-contracts/CHANGELOG.md +5 -0
  158. package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/LICENSE +1 -1
  159. package/support/vendor/symfony/deprecation-contracts/README.md +26 -0
  160. package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/composer.json +9 -9
  161. package/support/vendor/symfony/deprecation-contracts/function.php +27 -0
  162. package/support/vendor/symfony/polyfill-mbstring/LICENSE +1 -1
  163. package/support/vendor/symfony/polyfill-mbstring/Mbstring.php +256 -57
  164. package/support/vendor/symfony/polyfill-mbstring/README.md +1 -1
  165. package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
  166. package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1 -1
  167. package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +102 -27
  168. package/support/vendor/symfony/polyfill-mbstring/bootstrap.php +33 -8
  169. package/support/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
  170. package/support/vendor/symfony/polyfill-mbstring/composer.json +5 -4
  171. package/support/vendor/symfony/var-dumper/CHANGELOG.md +63 -0
  172. package/support/vendor/symfony/var-dumper/Caster/AddressInfoCaster.php +82 -0
  173. package/support/vendor/symfony/var-dumper/Caster/AmqpCaster.php +12 -10
  174. package/support/vendor/symfony/var-dumper/Caster/ArgsStub.php +6 -7
  175. package/support/vendor/symfony/var-dumper/Caster/Caster.php +59 -31
  176. package/support/vendor/symfony/var-dumper/Caster/ClassStub.php +7 -9
  177. package/support/vendor/symfony/var-dumper/Caster/ConstStub.php +20 -4
  178. package/support/vendor/symfony/var-dumper/Caster/CurlCaster.php +31 -0
  179. package/support/vendor/symfony/var-dumper/Caster/CutArrayStub.php +1 -1
  180. package/support/vendor/symfony/var-dumper/Caster/CutStub.php +2 -2
  181. package/support/vendor/symfony/var-dumper/Caster/DOMCaster.php +61 -156
  182. package/support/vendor/symfony/var-dumper/Caster/DateCaster.php +27 -26
  183. package/support/vendor/symfony/var-dumper/Caster/DoctrineCaster.php +6 -4
  184. package/support/vendor/symfony/var-dumper/Caster/DsCaster.php +1 -1
  185. package/support/vendor/symfony/var-dumper/Caster/DsPairStub.php +1 -1
  186. package/support/vendor/symfony/var-dumper/Caster/EnumStub.php +4 -5
  187. package/support/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +64 -49
  188. package/support/vendor/symfony/var-dumper/Caster/FFICaster.php +171 -0
  189. package/support/vendor/symfony/var-dumper/Caster/FiberCaster.php +43 -0
  190. package/support/vendor/symfony/var-dumper/Caster/FrameStub.php +6 -8
  191. package/support/vendor/symfony/var-dumper/Caster/GdCaster.php +30 -0
  192. package/support/vendor/symfony/var-dumper/Caster/GmpCaster.php +4 -2
  193. package/support/vendor/symfony/var-dumper/Caster/ImagineCaster.php +2 -0
  194. package/support/vendor/symfony/var-dumper/Caster/ImgStub.php +1 -1
  195. package/support/vendor/symfony/var-dumper/Caster/IntlCaster.php +10 -8
  196. package/support/vendor/symfony/var-dumper/Caster/LinkStub.php +14 -17
  197. package/support/vendor/symfony/var-dumper/Caster/MemcachedCaster.php +10 -8
  198. package/support/vendor/symfony/var-dumper/Caster/MysqliCaster.php +33 -0
  199. package/support/vendor/symfony/var-dumper/Caster/OpenSSLCaster.php +69 -0
  200. package/support/vendor/symfony/var-dumper/Caster/PdoCaster.php +8 -6
  201. package/support/vendor/symfony/var-dumper/Caster/PgSqlCaster.php +21 -19
  202. package/support/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php +4 -2
  203. package/support/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php +188 -0
  204. package/support/vendor/symfony/var-dumper/Caster/RedisCaster.php +31 -31
  205. package/support/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +100 -44
  206. package/support/vendor/symfony/var-dumper/Caster/ResourceCaster.php +33 -46
  207. package/support/vendor/symfony/var-dumper/Caster/ScalarStub.php +27 -0
  208. package/support/vendor/symfony/var-dumper/Caster/SocketCaster.php +64 -0
  209. package/support/vendor/symfony/var-dumper/Caster/SplCaster.php +57 -44
  210. package/support/vendor/symfony/var-dumper/Caster/SqliteCaster.php +32 -0
  211. package/support/vendor/symfony/var-dumper/Caster/StubCaster.php +15 -5
  212. package/support/vendor/symfony/var-dumper/Caster/SymfonyCaster.php +66 -10
  213. package/support/vendor/symfony/var-dumper/Caster/TraceStub.php +7 -11
  214. package/support/vendor/symfony/var-dumper/Caster/UninitializedStub.php +25 -0
  215. package/support/vendor/symfony/var-dumper/Caster/UuidCaster.php +2 -0
  216. package/support/vendor/symfony/var-dumper/Caster/VirtualStub.php +21 -0
  217. package/support/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php +25 -10
  218. package/support/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php +7 -5
  219. package/support/vendor/symfony/var-dumper/Cloner/AbstractCloner.php +103 -72
  220. package/support/vendor/symfony/var-dumper/Cloner/ClonerInterface.php +1 -5
  221. package/support/vendor/symfony/var-dumper/Cloner/Cursor.php +21 -21
  222. package/support/vendor/symfony/var-dumper/Cloner/Data.php +51 -77
  223. package/support/vendor/symfony/var-dumper/Cloner/DumperInterface.php +11 -14
  224. package/support/vendor/symfony/var-dumper/Cloner/Stub.php +40 -31
  225. package/support/vendor/symfony/var-dumper/Cloner/VarCloner.php +21 -104
  226. package/support/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php +9 -19
  227. package/support/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php +10 -11
  228. package/support/vendor/symfony/var-dumper/Command/ServerDumpCommand.php +27 -15
  229. package/support/vendor/symfony/var-dumper/Dumper/AbstractDumper.php +68 -48
  230. package/support/vendor/symfony/var-dumper/Dumper/CliDumper.php +126 -113
  231. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php +1 -1
  232. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php +0 -3
  233. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php +5 -6
  234. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php +10 -15
  235. package/support/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php +8 -11
  236. package/support/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php +3 -0
  237. package/support/vendor/symfony/var-dumper/Dumper/HtmlDumper.php +122 -146
  238. package/support/vendor/symfony/var-dumper/Dumper/ServerDumper.php +10 -10
  239. package/support/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php +1 -1
  240. package/support/vendor/symfony/var-dumper/LICENSE +1 -1
  241. package/support/vendor/symfony/var-dumper/README.md +6 -6
  242. package/support/vendor/symfony/var-dumper/Resources/bin/var-dump-server +4 -0
  243. package/support/vendor/symfony/var-dumper/Resources/functions/dump.php +35 -10
  244. package/support/vendor/symfony/var-dumper/Server/Connection.php +16 -14
  245. package/support/vendor/symfony/var-dumper/Server/DumpServer.php +16 -14
  246. package/support/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php +9 -9
  247. package/support/vendor/symfony/var-dumper/VarDumper.php +69 -17
  248. package/support/vendor/symfony/var-dumper/composer.json +10 -16
  249. package/support/vendor/symfony/polyfill-php72/Php72.php +0 -217
  250. package/support/vendor/symfony/polyfill-php72/README.md +0 -28
  251. package/support/vendor/symfony/polyfill-php72/bootstrap.php +0 -57
  252. package/support/vendor/symfony/polyfill-php80/LICENSE +0 -19
  253. package/support/vendor/symfony/polyfill-php80/Php80.php +0 -105
  254. package/support/vendor/symfony/polyfill-php80/README.md +0 -24
  255. package/support/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +0 -22
  256. package/support/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +0 -11
  257. package/support/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +0 -5
  258. package/support/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +0 -5
  259. package/support/vendor/symfony/polyfill-php80/bootstrap.php +0 -42
  260. package/support/vendor/symfony/polyfill-php80/composer.json +0 -40
@@ -3,10 +3,11 @@
3
3
  namespace Phug\Formatter\Element;
4
4
 
5
5
  use Phug\Formatter\AbstractElement;
6
+ use Phug\Util\AttributesInterface;
6
7
  use Phug\Util\Partial\AttributeTrait;
7
8
  use Phug\Util\Partial\NameTrait;
8
9
 
9
- class MixinElement extends AbstractElement
10
+ class MixinElement extends AbstractElement implements AttributesInterface
10
11
  {
11
12
  use AttributeTrait;
12
13
  use NameTrait;
@@ -2,8 +2,12 @@
2
2
 
3
3
  namespace Phug\Formatter\Format;
4
4
 
5
+ use Closure;
6
+ use Generator;
7
+ use InvalidArgumentException;
5
8
  use Phug\Formatter;
6
9
  use Phug\Formatter\AbstractFormat;
10
+ use Phug\Formatter\AssignmentContainerInterface;
7
11
  use Phug\Formatter\Element\AbstractValueElement;
8
12
  use Phug\Formatter\Element\AssignmentElement;
9
13
  use Phug\Formatter\Element\AttributeElement;
@@ -16,7 +20,9 @@ use Phug\Formatter\ElementInterface;
16
20
  use Phug\Formatter\MarkupInterface;
17
21
  use Phug\Formatter\Partial\AssignmentHelpersTrait;
18
22
  use Phug\FormatterException;
23
+ use Phug\Util\AttributesInterface;
19
24
  use Phug\Util\Joiner;
25
+ use Phug\Util\OrderedValue;
20
26
  use SplObjectStorage;
21
27
 
22
28
  class XmlFormat extends AbstractFormat
@@ -161,19 +167,23 @@ class XmlFormat extends AbstractFormat
161
167
  $value = $element->getValue();
162
168
  $name = $element->getName();
163
169
  $nonEmptyAttribute = ($name === 'class' || $name === 'id');
170
+
164
171
  if ($nonEmptyAttribute && (
165
172
  !$value ||
166
- ($value instanceof TextElement && ($value->getValue() ?: '') === '') ||
167
- (is_string($value) && in_array(trim($value), ['', '""', "''"]))
173
+ ($value instanceof TextElement && ((string) $value->getValue()) === '') ||
174
+ (is_string($value) && in_array(trim($value), ['', '""', "''"], true))
168
175
  )) {
169
176
  return '';
170
177
  }
178
+
171
179
  if ($value instanceof ExpressionElement) {
172
- if ($nonEmptyAttribute && in_array(trim($value->getValue()), ['', '""', "''"])) {
180
+ if ($nonEmptyAttribute && in_array(trim($value->getValue()), ['', '""', "''"], true)) {
173
181
  return '';
174
182
  }
183
+
175
184
  if (strtolower($value->getValue()) === 'true') {
176
185
  $formattedValue = null;
186
+
177
187
  if ($name instanceof ExpressionElement) {
178
188
  $bufferVariable = $this->pattern('buffer_variable');
179
189
  $name = $this->pattern(
@@ -187,6 +197,7 @@ class XmlFormat extends AbstractFormat
187
197
  $value = new ExpressionElement($bufferVariable);
188
198
  $formattedValue = $this->format($value);
189
199
  }
200
+
190
201
  $formattedName = $this->format($name);
191
202
  $formattedValue = $formattedValue || $formattedValue === '0'
192
203
  ? $formattedValue
@@ -198,7 +209,8 @@ class XmlFormat extends AbstractFormat
198
209
  $formattedValue
199
210
  );
200
211
  }
201
- if (in_array(strtolower($value->getValue()), ['false', 'null', 'undefined'])) {
212
+
213
+ if (in_array(strtolower($value->getValue()), ['false', 'null', 'undefined'], true)) {
202
214
  return '';
203
215
  }
204
216
  }
@@ -265,26 +277,172 @@ class XmlFormat extends AbstractFormat
265
277
 
266
278
  /* @var MarkupElement $markup */
267
279
  $markup = $element->getContainer();
280
+ $attributeOrder = $this->hasOption('attribute_precedence')
281
+ ? $this->getOption('attribute_precedence')
282
+ : 'assignment';
283
+
284
+ switch ($attributeOrder) {
285
+ case 'assignment':
286
+ case 'assignments':
287
+ $arguments = array_merge(
288
+ $markup instanceof AttributesInterface
289
+ ? $this->formatMarkupAttributes($markup)
290
+ : [],
291
+ $markup instanceof AssignmentContainerInterface
292
+ ? $this->formatAttributeAssignments($markup)
293
+ : []
294
+ );
295
+ break;
296
+
297
+ case 'attribute':
298
+ case 'attributes':
299
+ $arguments = array_merge(
300
+ $markup instanceof AssignmentContainerInterface
301
+ ? $this->formatAttributeAssignments($markup)
302
+ : [],
303
+ $markup instanceof AttributesInterface
304
+ ? $this->formatMarkupAttributes($markup)
305
+ : []
306
+ );
307
+ break;
308
+
309
+ case 'left':
310
+ $arguments = $this->getSortedAttributes($markup, static function (OrderedValue $a, OrderedValue $b) {
311
+ return $b->getOrder() - $a->getOrder();
312
+ });
313
+ break;
314
+
315
+ case 'right':
316
+ $arguments = $this->getSortedAttributes($markup, static function (OrderedValue $a, OrderedValue $b) {
317
+ return $a->getOrder() - $b->getOrder();
318
+ });
319
+ break;
268
320
 
321
+ default:
322
+ if (!is_callable($attributeOrder)) {
323
+ throw new InvalidArgumentException(
324
+ 'Option attribute_precedence must be '.
325
+ '"assignment" (default), "attribute", "left", "right" or a callable.'
326
+ );
327
+ }
328
+
329
+ $arguments = array_map(static function ($argument) {
330
+ return $argument instanceof OrderedValue ? $argument->getValue() : $argument;
331
+ }, $attributeOrder(
332
+ $markup instanceof AssignmentContainerInterface
333
+ ? $this->formatOrderedAttributeAssignments($markup)
334
+ : [],
335
+ $markup instanceof AttributesInterface
336
+ ? $this->formatOrderedMarkupAttributes($markup)
337
+ : []
338
+ ));
339
+ }
340
+
341
+ foreach ($markup->getAssignments() as $assignment) {
342
+ /* @var AssignmentElement $assignment */
343
+ $this->throwException(
344
+ 'Unable to handle '.$assignment->getName().' assignment',
345
+ $assignment
346
+ );
347
+ }
348
+
349
+ if (count($arguments)) {
350
+ yield $this->attributesAssignmentsFromPairs($arguments);
351
+ }
352
+ }
353
+
354
+ /**
355
+ * @param AssignmentContainerInterface $markup
356
+ *
357
+ * @return array<string>
358
+ */
359
+ protected function formatAttributeAssignments(AssignmentContainerInterface $markup)
360
+ {
361
+ $arguments = [];
362
+
363
+ foreach ($this->yieldAssignmentAttributes($markup) as $attribute) {
364
+ $arguments[] = $this->formatInnerCodeValue($attribute);
365
+ }
366
+
367
+ return $arguments;
368
+ }
369
+
370
+ /**
371
+ * @param AssignmentContainerInterface $markup
372
+ *
373
+ * @return list<OrderedValue<string>>
374
+ */
375
+ protected function formatOrderedAttributeAssignments(AssignmentContainerInterface $markup)
376
+ {
269
377
  $arguments = [];
270
378
 
379
+ foreach ($this->yieldAssignmentOrderedAttributes($markup) as $attribute => $order) {
380
+ $arguments[] = new OrderedValue($this->formatInnerCodeValue($attribute), $order);
381
+ }
382
+
383
+ return $arguments;
384
+ }
385
+
386
+ /**
387
+ * @param AbstractValueElement|mixed $value
388
+ *
389
+ * @return string
390
+ */
391
+ protected function formatInnerCodeValue($value)
392
+ {
393
+ $checked = method_exists($value, 'isChecked') && $value->isChecked();
394
+
395
+ while (method_exists($value, 'getValue')) {
396
+ $value = $value->getValue();
397
+ }
398
+
399
+ return $this->formatCode($value, $checked);
400
+ }
401
+
402
+ /**
403
+ * @param AssignmentContainerInterface $markup
404
+ *
405
+ * @return Generator<AbstractValueElement>
406
+ */
407
+ protected function yieldAssignmentAttributes(AssignmentContainerInterface $markup)
408
+ {
271
409
  foreach ($markup->getAssignmentsByName('attributes') as $attributesAssignment) {
272
410
  /* @var AssignmentElement $attributesAssignment */
273
411
  foreach ($attributesAssignment->getAttributes() as $attribute) {
274
412
  /* @var AbstractValueElement $attribute */
275
- $value = $attribute;
276
- $checked = method_exists($value, 'isChecked') && $value->isChecked();
413
+ yield $attribute;
414
+ }
277
415
 
278
- while (method_exists($value, 'getValue')) {
279
- $value = $value->getValue();
280
- }
416
+ $markup->removedAssignment($attributesAssignment);
417
+ }
418
+ }
281
419
 
282
- $arguments[] = $this->formatCode($value, $checked);
420
+ /**
421
+ * @param AssignmentContainerInterface $markup
422
+ *
423
+ * @return Generator<AbstractValueElement, int|null>
424
+ */
425
+ protected function yieldAssignmentOrderedAttributes(AssignmentContainerInterface $markup)
426
+ {
427
+ foreach ($markup->getAssignmentsByName('attributes') as $attributesAssignment) {
428
+ /* @var AssignmentElement $attributesAssignment */
429
+ foreach ($attributesAssignment->getAttributes() as $attribute) {
430
+ /* @var AbstractValueElement $attribute */
431
+ yield $attribute => $attributesAssignment->getOrder();
283
432
  }
284
433
 
285
434
  $markup->removedAssignment($attributesAssignment);
286
435
  }
436
+ }
287
437
 
438
+ /**
439
+ * @param AttributesInterface $markup
440
+ *
441
+ * @return list<string>
442
+ */
443
+ protected function formatMarkupAttributes(AttributesInterface $markup)
444
+ {
445
+ $arguments = [];
288
446
  $attributes = $markup->getAttributes();
289
447
 
290
448
  foreach ($attributes as $attribute) {
@@ -294,17 +452,27 @@ class XmlFormat extends AbstractFormat
294
452
 
295
453
  $attributes->removeAll($attributes);
296
454
 
297
- foreach ($markup->getAssignments() as $assignment) {
298
- /* @var AssignmentElement $assignment */
299
- $this->throwException(
300
- 'Unable to handle '.$assignment->getName().' assignment',
301
- $assignment
302
- );
303
- }
455
+ return $arguments;
456
+ }
304
457
 
305
- if (count($arguments)) {
306
- yield $this->attributesAssignmentsFromPairs($arguments);
458
+ /**
459
+ * @param AttributesInterface $markup
460
+ *
461
+ * @return list<OrderedValue<string>>
462
+ */
463
+ protected function formatOrderedMarkupAttributes(AttributesInterface $markup)
464
+ {
465
+ $arguments = [];
466
+ $attributes = $markup->getAttributes();
467
+
468
+ foreach ($attributes as $attribute) {
469
+ /* @var AttributeElement $attribute */
470
+ $arguments[] = new OrderedValue($this->formatAttributeAsArrayItem($attribute), $attribute->getOrder());
307
471
  }
472
+
473
+ $attributes->removeAll($attributes);
474
+
475
+ return $arguments;
308
476
  }
309
477
 
310
478
  /**
@@ -325,7 +493,9 @@ class XmlFormat extends AbstractFormat
325
493
  $names = [];
326
494
  foreach ($element->getAttributes() as $attribute) {
327
495
  $name = $attribute->getName();
328
- if (($name instanceof ExpressionElement && !$name->hasStaticValue()) || in_array($name, $names)) {
496
+ if (($name instanceof ExpressionElement && !$name->hasStaticValue()) ||
497
+ in_array($name, $names, true)
498
+ ) {
329
499
  return true;
330
500
  }
331
501
 
@@ -395,4 +565,27 @@ class XmlFormat extends AbstractFormat
395
565
  ? $this->getIndent().$tag.$this->getNewLine()
396
566
  : $tag;
397
567
  }
568
+
569
+ /**
570
+ * @param AssignmentContainerInterface|AttributesInterface|mixed $markup
571
+ * @param Closure(OrderedValue, OrderedValue): int $sorter
572
+ *
573
+ * @return list<string>
574
+ */
575
+ private function getSortedAttributes($markup, Closure $sorter)
576
+ {
577
+ $arguments = array_merge(
578
+ $markup instanceof AssignmentContainerInterface
579
+ ? $this->formatOrderedAttributeAssignments($markup)
580
+ : [],
581
+ $markup instanceof AttributesInterface
582
+ ? $this->formatOrderedMarkupAttributes($markup)
583
+ : []
584
+ );
585
+ usort($arguments, $sorter);
586
+
587
+ return array_map(static function (OrderedValue $value) {
588
+ return $value->getValue();
589
+ }, $arguments);
590
+ }
398
591
  }
@@ -14,7 +14,7 @@ trait AssignmentHelpersTrait
14
14
  'get_helper',
15
15
  function ($availableAssignments, $getHelper) {
16
16
  return function (&$attributes, $name, $value) use ($availableAssignments, $getHelper) {
17
- if (!in_array($name, $availableAssignments)) {
17
+ if (!in_array($name, $availableAssignments, true)) {
18
18
  return $value;
19
19
  }
20
20
 
@@ -37,7 +37,7 @@ trait AssignmentHelpersTrait
37
37
  return function (&$attributes, $name, $value) use ($attributeAssignments) {
38
38
  if (isset($name) && $name !== '') {
39
39
  $result = $attributeAssignments($attributes, $name, $value);
40
- if (($result !== null && $result !== false && ($result !== '' || $name !== 'class'))) {
40
+ if ($result !== null && $result !== false && ($result !== '' || $name !== 'class')) {
41
41
  $attributes[$name] = $result;
42
42
  }
43
43
  }
@@ -143,7 +143,7 @@ trait AssignmentHelpersTrait
143
143
  'pattern.html_text_escape',
144
144
  function ($arrayEscape, $escape) {
145
145
  return function ($name, $input) use ($arrayEscape, $escape) {
146
- if (is_array($input) && in_array(strtolower($name), ['class', 'style'])) {
146
+ if (is_array($input) && in_array(strtolower($name), ['class', 'style'], true)) {
147
147
  $result = [];
148
148
  foreach ($input as $key => $value) {
149
149
  $result[$escape($key)] = $arrayEscape($name, $value);
@@ -183,7 +183,7 @@ trait AssignmentHelpersTrait
183
183
  $input = $key;
184
184
  }
185
185
  foreach ($split($input) as $class) {
186
- if (!in_array($class, $classes)) {
186
+ if (!in_array($class, $classes, true)) {
187
187
  $classes[] = $class;
188
188
  }
189
189
  }
@@ -202,11 +202,14 @@ trait AssignmentHelpersTrait
202
202
  if (is_string($value) && mb_substr($value, 0, 7) === '{&quot;') {
203
203
  $value = json_decode(htmlspecialchars_decode($value));
204
204
  }
205
+
205
206
  $styles = isset($attributes['style']) ? array_filter(explode(';', $attributes['style'])) : [];
207
+
206
208
  foreach ((array) $value as $propertyName => $propertyValue) {
207
209
  if (!is_int($propertyName)) {
208
210
  $propertyValue = $propertyName.':'.$propertyValue;
209
211
  }
212
+
210
213
  $styles[] = $propertyValue;
211
214
  }
212
215
 
@@ -24,7 +24,7 @@ trait HandleVariable
24
24
  {
25
25
  $afterOpen = false;
26
26
  for ($i = $index - 1; $i >= 0; $i--) {
27
- if (in_array($tokens[$i], [')', '}'])) {
27
+ if (in_array($tokens[$i], [')', '}'], true)) {
28
28
  break;
29
29
  }
30
30
  if ($tokens[$i] === '(') {
@@ -34,7 +34,7 @@ trait HandleVariable
34
34
  if ($afterOpen && is_array($tokens[$i]) && in_array($tokens[$i][0], [
35
35
  T_FUNCTION,
36
36
  T_USE,
37
- ])) {
37
+ ], true)) {
38
38
  return true;
39
39
  }
40
40
  }
@@ -102,13 +102,13 @@ trait HandleVariable
102
102
  T_COMMENT,
103
103
  T_DOC_COMMENT,
104
104
  T_WHITESPACE,
105
- ])) {
105
+ ], true)) {
106
106
  continue;
107
107
  }
108
108
  break;
109
109
  }
110
110
 
111
- if (in_array($tokenId, $exclusions)) {
111
+ if (in_array($tokenId, $exclusions, true)) {
112
112
  return true;
113
113
  }
114
114
  }
@@ -6,13 +6,7 @@ trait MagicAccessorTrait
6
6
  {
7
7
  private function getMethod($prefix, $name)
8
8
  {
9
- switch ($name) {
10
- case 'nodes':
11
- $name = 'children';
12
- break;
13
- }
14
-
15
- return $prefix.ucfirst($name);
9
+ return $prefix.ucfirst($name === 'nodes' ? 'children' : $name);
16
10
  }
17
11
 
18
12
  public function __get($name)
@@ -504,7 +504,7 @@ class Formatter implements ModuleContainerInterface
504
504
  }
505
505
 
506
506
  foreach ($this->mixins->getRequirementsStates() as $key => $value) {
507
- if ($value || $this->mixinsAllRequired || in_array($key, $this->mixinsPreCalled)) {
507
+ if ($value || $this->mixinsAllRequired || in_array($key, $this->mixinsPreCalled, true)) {
508
508
  $dependencies .= $this->mixins->get($key);
509
509
  }
510
510
  }
@@ -7,8 +7,7 @@
7
7
  "homepage": "http://phug-lang.com",
8
8
  "authors": [
9
9
  {
10
- "name": "KyleKatarn",
11
- "email": "jade-php@selfbuild.fr",
10
+ "name": "kylekatarnls",
12
11
  "homepage": "http://github.com/kylekatarnls"
13
12
  },
14
13
  {
@@ -107,7 +107,7 @@ class Invoker implements InvokerInterface
107
107
  $filteredQueue = new ListenerQueue();
108
108
 
109
109
  foreach ($queue as $invokable) {
110
- if (!in_array($invokable, $invokables)) {
110
+ if (!in_array($invokable, $invokables, true)) {
111
111
  $filteredQueue->insert($invokable, 0);
112
112
  }
113
113
  }
@@ -7,9 +7,12 @@
7
7
  "homepage": "http://phug-lang.com",
8
8
  "authors": [
9
9
  {
10
- "name": "KyleKatarn",
11
- "email": "jade-php@selfbuild.fr",
10
+ "name": "kylekatarnls",
12
11
  "homepage": "http://github.com/kylekatarnls"
12
+ },
13
+ {
14
+ "name": "Torben Koehn",
15
+ "email": "torben@talesoft.codes"
13
16
  }
14
17
  ],
15
18
  "support": {
@@ -23,7 +23,7 @@ trait IndentStyleTrait
23
23
  /**
24
24
  * Returns the currently used indentation style.
25
25
  *
26
- * @return string
26
+ * @return string|null
27
27
  */
28
28
  public function getIndentStyle()
29
29
  {
@@ -36,13 +36,13 @@ trait IndentStyleTrait
36
36
  * The value needs to be one of the `Lexer::INDENT_*` constants, but you can also just
37
37
  * pass either a single space or a single tab for the respective style.
38
38
  *
39
- * @param $indentStyle
39
+ * @param string|null $indentStyle
40
40
  *
41
41
  * @return $this
42
42
  */
43
43
  public function setIndentStyle($indentStyle)
44
44
  {
45
- if (!in_array($indentStyle, [null, Lexer::INDENT_TAB, Lexer::INDENT_SPACE])) {
45
+ if (!in_array($indentStyle, [null, Lexer::INDENT_TAB, Lexer::INDENT_SPACE], true)) {
46
46
  throw new \InvalidArgumentException(
47
47
  'indentStyle needs to be null or one of the INDENT_* constants of the lexer'
48
48
  );
@@ -56,7 +56,7 @@ trait IndentStyleTrait
56
56
  /**
57
57
  * Returns the currently used indentation width.
58
58
  *
59
- * @return int
59
+ * @return int|null
60
60
  */
61
61
  public function getIndentWidth()
62
62
  {
@@ -68,7 +68,7 @@ trait IndentStyleTrait
68
68
  *
69
69
  * The value of this specifies if e.g. 2 spaces make up one indentation level or 4.
70
70
  *
71
- * @param $indentWidth
71
+ * @param int|null $indentWidth
72
72
  *
73
73
  * @return $this
74
74
  */
@@ -14,9 +14,15 @@ class AssignmentScanner implements ScannerInterface
14
14
  {
15
15
  public function scan(State $state)
16
16
  {
17
- return $state->scanToken(
17
+ foreach ($state->scanToken(
18
18
  AssignmentToken::class,
19
19
  '&(?<name>[a-zA-Z_][a-zA-Z0-9\-_]*)'
20
- );
20
+ ) as $token) {
21
+ yield $token;
22
+
23
+ foreach ($state->scan(AttributeScanner::class, ['allow_name' => false]) as $attributeToken) {
24
+ yield $attributeToken;
25
+ }
26
+ }
21
27
  }
22
28
  }
@@ -30,7 +30,7 @@ class AttributeScanner implements ScannerInterface
30
30
  $expression = preg_replace('/
31
31
  "(?:\\\\[\\S\\s]|[^"\\\\])*"|
32
32
  \'(?:\\\\[\\S\\s]|[^\'\\\\])*\'
33
- /x', '0', $expression);
33
+ /x', '0', (string) $expression);
34
34
  $expression = preg_replace('/\\s*(
35
35
  (\\[([^\\[\\]]+|(?1))*\\]) |
36
36
  (\\(([^\\(\\)]+|(?1))*\\)) |
@@ -42,6 +42,8 @@ class AttributeScanner implements ScannerInterface
42
42
 
43
43
  private function isTruncatedExpression(Reader $reader, &$expression)
44
44
  {
45
+ $expression = (string) $expression;
46
+
45
47
  if (mb_substr($expression, -3) === 'new' || mb_substr($expression, -5) === 'clone') {
46
48
  $expression .= $reader->getLastPeekResult();
47
49
  $reader->consume();
@@ -118,13 +120,15 @@ class AttributeScanner implements ScannerInterface
118
120
  return $expression;
119
121
  }
120
122
 
121
- private function readAttributeValue(Reader $reader, AttributeToken $token)
123
+ private function readAttributeValue(Reader $reader, AttributeToken $token, $expression = '')
122
124
  {
123
- $expression = $this->getAttributeValue($reader);
125
+ $expression .= $this->getAttributeValue($reader);
126
+
124
127
  while ($this->isTruncatedExpression($reader, $expression)) {
125
128
  $this->skipComments($reader);
126
129
  $expression .= $this->getAttributeValue($reader);
127
130
  }
131
+
128
132
  $token->setValue($expression);
129
133
 
130
134
  //Ignore a comma if found
@@ -210,7 +214,7 @@ class AttributeScanner implements ScannerInterface
210
214
  $token->escape();
211
215
  $token->check();
212
216
 
213
- if ($variadic = $reader->peekString('...')) {
217
+ if ($reader->peekString('...')) {
214
218
  $token->setIsVariadic(true);
215
219
  $reader->consume();
216
220
  }
@@ -218,9 +222,17 @@ class AttributeScanner implements ScannerInterface
218
222
  return $token;
219
223
  }
220
224
 
221
- private function seedAttributeToken(State $state, AttributeToken $token, $expression)
225
+ private function seedAttributeToken(State $state, AttributeToken $token, $expression, array $options)
222
226
  {
223
227
  $reader = $state->getReader();
228
+ $allowName = isset($options['allow_name']) ? $options['allow_name'] : true;
229
+
230
+ if (!$allowName) {
231
+ $this->readAttributeValue($reader, $token, $expression);
232
+ $this->skipComments($reader);
233
+
234
+ return;
235
+ }
224
236
 
225
237
  $token->setName($expression);
226
238
 
@@ -252,7 +264,7 @@ class AttributeScanner implements ScannerInterface
252
264
  }
253
265
  }
254
266
 
255
- private function scanParenthesesContent(State $state)
267
+ private function scanParenthesesContent(State $state, array $options)
256
268
  {
257
269
  $reader = $state->getReader();
258
270
 
@@ -263,7 +275,7 @@ class AttributeScanner implements ScannerInterface
263
275
  continue;
264
276
  }
265
277
 
266
- $this->seedAttributeToken($state, $token, $expression);
278
+ $this->seedAttributeToken($state, $token, $expression, $options);
267
279
 
268
280
  yield $token;
269
281
 
@@ -275,7 +287,7 @@ class AttributeScanner implements ScannerInterface
275
287
  }
276
288
  }
277
289
 
278
- private function scanParentheses(State $state)
290
+ private function scanParentheses(State $state, array $options)
279
291
  {
280
292
  $reader = $state->getReader();
281
293
 
@@ -283,7 +295,7 @@ class AttributeScanner implements ScannerInterface
283
295
  return;
284
296
  }
285
297
 
286
- foreach ($this->scanParenthesesContent($state) as $token) {
298
+ foreach ($this->scanParenthesesContent($state, $options) as $token) {
287
299
  yield $token;
288
300
  }
289
301
 
@@ -294,7 +306,7 @@ class AttributeScanner implements ScannerInterface
294
306
  }
295
307
  }
296
308
 
297
- public function scan(State $state)
309
+ public function scan(State $state, array $options = [])
298
310
  {
299
311
  $reader = $state->getReader();
300
312
 
@@ -307,7 +319,7 @@ class AttributeScanner implements ScannerInterface
307
319
  $reader->consume();
308
320
  yield $state->endToken($start);
309
321
 
310
- foreach ($this->scanParentheses($state) as $token) {
322
+ foreach ($this->scanParentheses($state, $options) as $token) {
311
323
  yield $token;
312
324
  }
313
325
 
@@ -26,7 +26,7 @@ class ConditionalScanner extends ControlStatementScanner
26
26
  //Make sure spaces are replaced from `elseif`/`else if` to make a final keyword, "elseif"
27
27
  $token->setName(preg_replace('/[ \t]/', '', $token->getName()));
28
28
 
29
- if ($token->getName() === 'else' && !in_array($token->getSubject(), ['', false, null])) {
29
+ if ($token->getName() === 'else' && !in_array($token->getSubject(), ['', false, null], true)) {
30
30
  $state->throwException(
31
31
  'The `else`-conditional statement can\'t have a subject'
32
32
  );