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
@@ -48,6 +48,11 @@ namespace Symfony\Polyfill\Mbstring;
48
48
  * - mb_strstr - Finds first occurrence of a string within another
49
49
  * - mb_strwidth - Return width of string
50
50
  * - mb_substr_count - Count the number of substring occurrences
51
+ * - mb_ucfirst - Make a string's first character uppercase
52
+ * - mb_lcfirst - Make a string's first character lowercase
53
+ * - mb_trim - Strip whitespace (or other characters) from the beginning and end of a string
54
+ * - mb_ltrim - Strip whitespace (or other characters) from the beginning of a string
55
+ * - mb_rtrim - Strip whitespace (or other characters) from the end of a string
51
56
  *
52
57
  * Not implemented:
53
58
  * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
@@ -67,19 +72,29 @@ namespace Symfony\Polyfill\Mbstring;
67
72
  */
68
73
  final class Mbstring
69
74
  {
70
- const MB_CASE_FOLD = PHP_INT_MAX;
75
+ public const MB_CASE_FOLD = \PHP_INT_MAX;
71
76
 
72
- private static $encodingList = array('ASCII', 'UTF-8');
77
+ private const SIMPLE_CASE_FOLD = [
78
+ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
79
+ ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'],
80
+ ];
81
+
82
+ private static $encodingList = ['ASCII', 'UTF-8'];
73
83
  private static $language = 'neutral';
74
84
  private static $internalEncoding = 'UTF-8';
75
- private static $caseFold = array(
76
- array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
77
- array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'),
78
- );
79
85
 
80
86
  public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
81
87
  {
82
- if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
88
+ if (\is_array($s)) {
89
+ $r = [];
90
+ foreach ($s as $str) {
91
+ $r[] = self::mb_convert_encoding($str, $toEncoding, $fromEncoding);
92
+ }
93
+
94
+ return $r;
95
+ }
96
+
97
+ if (\is_array($fromEncoding) || (null !== $fromEncoding && false !== strpos($fromEncoding, ','))) {
83
98
  $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
84
99
  } else {
85
100
  $fromEncoding = self::getEncoding($fromEncoding);
@@ -104,11 +119,11 @@ final class Mbstring
104
119
  $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
105
120
  }
106
121
 
107
- return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
122
+ return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s);
108
123
  }
109
124
 
110
125
  if ('HTML-ENTITIES' === $fromEncoding) {
111
- $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
126
+ $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8');
112
127
  $fromEncoding = 'UTF-8';
113
128
  }
114
129
 
@@ -119,7 +134,7 @@ final class Mbstring
119
134
  {
120
135
  $ok = true;
121
136
  array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
122
- if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
137
+ if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
123
138
  $ok = false;
124
139
  }
125
140
  });
@@ -134,23 +149,23 @@ final class Mbstring
134
149
 
135
150
  public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
136
151
  {
137
- trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
152
+ trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING);
138
153
  }
139
154
 
140
155
  public static function mb_decode_numericentity($s, $convmap, $encoding = null)
141
156
  {
142
- if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
143
- trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
157
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
158
+ trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
144
159
 
145
160
  return null;
146
161
  }
147
162
 
148
- if (!\is_array($convmap) || !$convmap) {
163
+ if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
149
164
  return false;
150
165
  }
151
166
 
152
167
  if (null !== $encoding && !\is_scalar($encoding)) {
153
- trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
168
+ trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
154
169
 
155
170
  return ''; // Instead of null (cf. mb_encode_numericentity).
156
171
  }
@@ -183,7 +198,7 @@ final class Mbstring
183
198
  $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
184
199
  for ($i = 0; $i < $cnt; $i += 4) {
185
200
  if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
186
- return Mbstring::mb_chr($c - $convmap[$i + 2]);
201
+ return self::mb_chr($c - $convmap[$i + 2]);
187
202
  }
188
203
  }
189
204
 
@@ -199,24 +214,24 @@ final class Mbstring
199
214
 
200
215
  public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
201
216
  {
202
- if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
203
- trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
217
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
218
+ trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
204
219
 
205
220
  return null;
206
221
  }
207
222
 
208
- if (!\is_array($convmap) || !$convmap) {
223
+ if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
209
224
  return false;
210
225
  }
211
226
 
212
227
  if (null !== $encoding && !\is_scalar($encoding)) {
213
- trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
228
+ trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
214
229
 
215
230
  return null; // Instead of '' (cf. mb_decode_numericentity).
216
231
  }
217
232
 
218
233
  if (null !== $is_hex && !\is_scalar($is_hex)) {
219
- trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
234
+ trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING);
220
235
 
221
236
  return null;
222
237
  }
@@ -237,7 +252,7 @@ final class Mbstring
237
252
  $s = iconv($encoding, 'UTF-8//IGNORE', $s);
238
253
  }
239
254
 
240
- static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
255
+ static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
241
256
 
242
257
  $cnt = floor(\count($convmap) / 4) * 4;
243
258
  $i = 0;
@@ -285,14 +300,14 @@ final class Mbstring
285
300
  $s = iconv($encoding, 'UTF-8//IGNORE', $s);
286
301
  }
287
302
 
288
- if (MB_CASE_TITLE == $mode) {
303
+ if (\MB_CASE_TITLE == $mode) {
289
304
  static $titleRegexp = null;
290
305
  if (null === $titleRegexp) {
291
306
  $titleRegexp = self::getData('titleCaseRegexp');
292
307
  }
293
- $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
308
+ $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s);
294
309
  } else {
295
- if (MB_CASE_UPPER == $mode) {
310
+ if (\MB_CASE_UPPER == $mode) {
296
311
  static $upper = null;
297
312
  if (null === $upper) {
298
313
  $upper = self::getData('upperCase');
@@ -300,7 +315,11 @@ final class Mbstring
300
315
  $map = $upper;
301
316
  } else {
302
317
  if (self::MB_CASE_FOLD === $mode) {
303
- $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
318
+ static $caseFolding = null;
319
+ if (null === $caseFolding) {
320
+ $caseFolding = self::getData('caseFolding');
321
+ }
322
+ $s = strtr($s, $caseFolding);
304
323
  }
305
324
 
306
325
  static $lower = null;
@@ -310,7 +329,7 @@ final class Mbstring
310
329
  $map = $lower;
311
330
  }
312
331
 
313
- static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
332
+ static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
314
333
 
315
334
  $i = 0;
316
335
  $len = \strlen($s);
@@ -351,15 +370,19 @@ final class Mbstring
351
370
  return self::$internalEncoding;
352
371
  }
353
372
 
354
- $encoding = self::getEncoding($encoding);
373
+ $normalizedEncoding = self::getEncoding($encoding);
355
374
 
356
- if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
357
- self::$internalEncoding = $encoding;
375
+ if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) {
376
+ self::$internalEncoding = $normalizedEncoding;
358
377
 
359
378
  return true;
360
379
  }
361
380
 
362
- return false;
381
+ if (80000 > \PHP_VERSION_ID) {
382
+ return false;
383
+ }
384
+
385
+ throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding));
363
386
  }
364
387
 
365
388
  public static function mb_language($lang = null)
@@ -368,20 +391,24 @@ final class Mbstring
368
391
  return self::$language;
369
392
  }
370
393
 
371
- switch ($lang = strtolower($lang)) {
394
+ switch ($normalizedLang = strtolower($lang)) {
372
395
  case 'uni':
373
396
  case 'neutral':
374
- self::$language = $lang;
397
+ self::$language = $normalizedLang;
375
398
 
376
399
  return true;
377
400
  }
378
401
 
379
- return false;
402
+ if (80000 > \PHP_VERSION_ID) {
403
+ return false;
404
+ }
405
+
406
+ throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang));
380
407
  }
381
408
 
382
409
  public static function mb_list_encodings()
383
410
  {
384
- return array('UTF-8');
411
+ return ['UTF-8'];
385
412
  }
386
413
 
387
414
  public static function mb_encoding_aliases($encoding)
@@ -389,7 +416,7 @@ final class Mbstring
389
416
  switch (strtoupper($encoding)) {
390
417
  case 'UTF8':
391
418
  case 'UTF-8':
392
- return array('utf8');
419
+ return ['utf8'];
393
420
  }
394
421
 
395
422
  return false;
@@ -404,7 +431,20 @@ final class Mbstring
404
431
  $encoding = self::$internalEncoding;
405
432
  }
406
433
 
407
- return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
434
+ if (!\is_array($var)) {
435
+ return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
436
+ }
437
+
438
+ foreach ($var as $key => $value) {
439
+ if (!self::mb_check_encoding($key, $encoding)) {
440
+ return false;
441
+ }
442
+ if (!self::mb_check_encoding($value, $encoding)) {
443
+ return false;
444
+ }
445
+ }
446
+
447
+ return true;
408
448
  }
409
449
 
410
450
  public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
@@ -491,9 +531,13 @@ final class Mbstring
491
531
 
492
532
  $needle = (string) $needle;
493
533
  if ('' === $needle) {
494
- trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
534
+ if (80000 > \PHP_VERSION_ID) {
535
+ trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING);
495
536
 
496
- return false;
537
+ return false;
538
+ }
539
+
540
+ return 0;
497
541
  }
498
542
 
499
543
  return iconv_strpos($haystack, $needle, $offset, $encoding);
@@ -519,23 +563,29 @@ final class Mbstring
519
563
  }
520
564
  }
521
565
 
522
- $pos = iconv_strrpos($haystack, $needle, $encoding);
566
+ $pos = '' !== $needle || 80000 > \PHP_VERSION_ID
567
+ ? iconv_strrpos($haystack, $needle, $encoding)
568
+ : self::mb_strlen($haystack, $encoding);
523
569
 
524
570
  return false !== $pos ? $offset + $pos : false;
525
571
  }
526
572
 
527
573
  public static function mb_str_split($string, $split_length = 1, $encoding = null)
528
574
  {
529
- if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
530
- trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
575
+ if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) {
576
+ trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING);
531
577
 
532
578
  return null;
533
579
  }
534
580
 
535
581
  if (1 > $split_length = (int) $split_length) {
536
- trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
582
+ if (80000 > \PHP_VERSION_ID) {
583
+ trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING);
537
584
 
538
- return false;
585
+ return false;
586
+ }
587
+
588
+ throw new \ValueError('Argument #2 ($length) must be greater than 0');
539
589
  }
540
590
 
541
591
  if (null === $encoding) {
@@ -550,10 +600,10 @@ final class Mbstring
550
600
  }
551
601
  $rx .= '.{'.$split_length.'})/us';
552
602
 
553
- return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
603
+ return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
554
604
  }
555
605
 
556
- $result = array();
606
+ $result = [];
557
607
  $length = mb_strlen($string, $encoding);
558
608
 
559
609
  for ($i = 0; $i < $length; $i += $split_length) {
@@ -565,21 +615,30 @@ final class Mbstring
565
615
 
566
616
  public static function mb_strtolower($s, $encoding = null)
567
617
  {
568
- return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
618
+ return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding);
569
619
  }
570
620
 
571
621
  public static function mb_strtoupper($s, $encoding = null)
572
622
  {
573
- return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
623
+ return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding);
574
624
  }
575
625
 
576
626
  public static function mb_substitute_character($c = null)
577
627
  {
628
+ if (null === $c) {
629
+ return 'none';
630
+ }
578
631
  if (0 === strcasecmp($c, 'none')) {
579
632
  return true;
580
633
  }
634
+ if (80000 > \PHP_VERSION_ID) {
635
+ return false;
636
+ }
637
+ if (\is_int($c) || 'long' === $c || 'entity' === $c) {
638
+ return false;
639
+ }
581
640
 
582
- return null !== $c ? false : 'none';
641
+ throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint');
583
642
  }
584
643
 
585
644
  public static function mb_substr($s, $start, $length = null, $encoding = null)
@@ -610,8 +669,10 @@ final class Mbstring
610
669
 
611
670
  public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
612
671
  {
613
- $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
614
- $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
672
+ [$haystack, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [
673
+ self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding),
674
+ self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding),
675
+ ]);
615
676
 
616
677
  return self::mb_strpos($haystack, $needle, $offset, $encoding);
617
678
  }
@@ -646,8 +707,11 @@ final class Mbstring
646
707
 
647
708
  public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
648
709
  {
649
- $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
650
- $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
710
+ $haystack = self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding);
711
+ $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding);
712
+
713
+ $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack);
714
+ $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle);
651
715
 
652
716
  return self::mb_strrpos($haystack, $needle, $offset, $encoding);
653
717
  }
@@ -667,7 +731,7 @@ final class Mbstring
667
731
 
668
732
  public static function mb_get_info($type = 'all')
669
733
  {
670
- $info = array(
734
+ $info = [
671
735
  'internal_encoding' => self::$internalEncoding,
672
736
  'http_output' => 'pass',
673
737
  'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
@@ -682,7 +746,7 @@ final class Mbstring
682
746
  'detect_order' => self::$encodingList,
683
747
  'substitute_character' => 'none',
684
748
  'strict_detection' => 'Off',
685
- );
749
+ ];
686
750
 
687
751
  if ('all' === $type) {
688
752
  return $info;
@@ -770,6 +834,69 @@ final class Mbstring
770
834
  return $code;
771
835
  }
772
836
 
837
+ public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string
838
+ {
839
+ if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) {
840
+ throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
841
+ }
842
+
843
+ if (null === $encoding) {
844
+ $encoding = self::mb_internal_encoding();
845
+ } else {
846
+ self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given');
847
+ }
848
+
849
+ if (self::mb_strlen($pad_string, $encoding) <= 0) {
850
+ throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
851
+ }
852
+
853
+ $paddingRequired = $length - self::mb_strlen($string, $encoding);
854
+
855
+ if ($paddingRequired < 1) {
856
+ return $string;
857
+ }
858
+
859
+ switch ($pad_type) {
860
+ case \STR_PAD_LEFT:
861
+ return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string;
862
+ case \STR_PAD_RIGHT:
863
+ return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding);
864
+ default:
865
+ $leftPaddingLength = floor($paddingRequired / 2);
866
+ $rightPaddingLength = $paddingRequired - $leftPaddingLength;
867
+
868
+ return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding);
869
+ }
870
+ }
871
+
872
+ public static function mb_ucfirst(string $string, ?string $encoding = null): string
873
+ {
874
+ if (null === $encoding) {
875
+ $encoding = self::mb_internal_encoding();
876
+ } else {
877
+ self::assertEncoding($encoding, 'mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
878
+ }
879
+
880
+ $firstChar = mb_substr($string, 0, 1, $encoding);
881
+ $firstChar = mb_convert_case($firstChar, \MB_CASE_TITLE, $encoding);
882
+
883
+ return $firstChar.mb_substr($string, 1, null, $encoding);
884
+ }
885
+
886
+ public static function mb_lcfirst(string $string, ?string $encoding = null): string
887
+ {
888
+ if (null === $encoding) {
889
+ $encoding = self::mb_internal_encoding();
890
+ } else {
891
+ self::assertEncoding($encoding, 'mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
892
+ }
893
+
894
+ $firstChar = mb_substr($string, 0, 1, $encoding);
895
+ $firstChar = mb_convert_case($firstChar, \MB_CASE_LOWER, $encoding);
896
+
897
+ return $firstChar.mb_substr($string, 1, null, $encoding);
898
+ }
899
+
773
900
  private static function getSubpart($pos, $part, $haystack, $encoding)
774
901
  {
775
902
  if (false === $pos) {
@@ -786,7 +913,7 @@ final class Mbstring
786
913
  {
787
914
  $i = 1;
788
915
  $entities = '';
789
- $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
916
+ $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8'));
790
917
 
791
918
  while (isset($m[$i])) {
792
919
  if (0x80 > $m[$i]) {
@@ -809,7 +936,7 @@ final class Mbstring
809
936
 
810
937
  private static function title_case(array $s)
811
938
  {
812
- return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
939
+ return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8');
813
940
  }
814
941
 
815
942
  private static function getData($file)
@@ -843,4 +970,76 @@ final class Mbstring
843
970
 
844
971
  return $encoding;
845
972
  }
973
+
974
+ public static function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string
975
+ {
976
+ return self::mb_internal_trim('{^[%s]+|[%1$s]+$}Du', $string, $characters, $encoding, __FUNCTION__);
977
+ }
978
+
979
+ public static function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string
980
+ {
981
+ return self::mb_internal_trim('{^[%s]+}Du', $string, $characters, $encoding, __FUNCTION__);
982
+ }
983
+
984
+ public static function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string
985
+ {
986
+ return self::mb_internal_trim('{[%s]+$}Du', $string, $characters, $encoding, __FUNCTION__);
987
+ }
988
+
989
+ private static function mb_internal_trim(string $regex, string $string, ?string $characters, ?string $encoding, string $function): string
990
+ {
991
+ if (null === $encoding) {
992
+ $encoding = self::mb_internal_encoding();
993
+ } else {
994
+ self::assertEncoding($encoding, $function.'(): Argument #3 ($encoding) must be a valid encoding, "%s" given');
995
+ }
996
+
997
+ if ('' === $characters) {
998
+ return null === $encoding ? $string : self::mb_convert_encoding($string, $encoding);
999
+ }
1000
+
1001
+ if ('UTF-8' === $encoding) {
1002
+ $encoding = null;
1003
+ if (!preg_match('//u', $string)) {
1004
+ $string = @iconv('UTF-8', 'UTF-8//IGNORE', $string);
1005
+ }
1006
+ if (null !== $characters && !preg_match('//u', $characters)) {
1007
+ $characters = @iconv('UTF-8', 'UTF-8//IGNORE', $characters);
1008
+ }
1009
+ } else {
1010
+ $string = iconv($encoding, 'UTF-8//IGNORE', $string);
1011
+
1012
+ if (null !== $characters) {
1013
+ $characters = iconv($encoding, 'UTF-8//IGNORE', $characters);
1014
+ }
1015
+ }
1016
+
1017
+ if (null === $characters) {
1018
+ $characters = "\\0 \f\n\r\t\v\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}";
1019
+ } else {
1020
+ $characters = preg_quote($characters);
1021
+ }
1022
+
1023
+ $string = preg_replace(sprintf($regex, $characters), '', $string);
1024
+
1025
+ if (null === $encoding) {
1026
+ return $string;
1027
+ }
1028
+
1029
+ return iconv('UTF-8', $encoding.'//IGNORE', $string);
1030
+ }
1031
+
1032
+ private static function assertEncoding(string $encoding, string $errorFormat): void
1033
+ {
1034
+ try {
1035
+ $validEncoding = @self::mb_check_encoding('', $encoding);
1036
+ } catch (\ValueError $e) {
1037
+ throw new \ValueError(sprintf($errorFormat, $encoding));
1038
+ }
1039
+
1040
+ // BC for PHP 7.3 and lower
1041
+ if (!$validEncoding) {
1042
+ throw new \ValueError(sprintf($errorFormat, $encoding));
1043
+ }
1044
+ }
846
1045
  }
@@ -5,7 +5,7 @@ This component provides a partial, native PHP implementation for the
5
5
  [Mbstring](https://php.net/mbstring) extension.
6
6
 
7
7
  More information can be found in the
8
- [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
8
+ [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
9
9
 
10
10
  License
11
11
  =======