gulp-phug 1.3.4 → 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.
- package/index.js +23 -8
- package/package.json +4 -4
- package/support/composer.json +1 -1
- package/support/composer.lock +93 -178
- package/support/vendor/autoload.php +15 -0
- package/support/vendor/bin/phug +119 -0
- package/support/vendor/bin/var-dump-server +119 -0
- package/support/vendor/composer/ClassLoader.php +166 -32
- package/support/vendor/composer/InstalledVersions.php +387 -329
- package/support/vendor/composer/autoload_classmap.php +1 -5
- package/support/vendor/composer/autoload_files.php +2 -3
- package/support/vendor/composer/autoload_namespaces.php +1 -1
- package/support/vendor/composer/autoload_psr4.php +3 -4
- package/support/vendor/composer/autoload_real.php +12 -37
- package/support/vendor/composer/autoload_static.php +6 -17
- package/support/vendor/composer/installed.json +97 -184
- package/support/vendor/composer/installed.php +129 -151
- package/support/vendor/composer/platform_check.php +16 -4
- package/support/vendor/phug/phug/.github/workflows/coverage.yml +71 -0
- package/support/vendor/phug/phug/.github/workflows/multi-tester.yml +46 -0
- package/support/vendor/phug/phug/.github/workflows/split.yml +41 -0
- package/support/vendor/phug/phug/.github/workflows/style.yml +48 -0
- package/support/vendor/phug/phug/.github/workflows/tests.yml +49 -0
- package/support/vendor/phug/phug/.multi-tester.yml +42 -10
- package/support/vendor/phug/phug/composer.json +25 -16
- package/support/vendor/phug/phug/phpcs.xml +4 -0
- package/support/vendor/phug/phug/phpunit.xml +2 -0
- package/support/vendor/phug/phug/phug +1 -1
- package/support/vendor/phug/phug/release.php +8 -0
- package/support/vendor/phug/phug/src/Phug/Ast/Ast/Node.php +7 -1
- package/support/vendor/phug/phug/src/Phug/Ast/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/Element/BlockElement.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AssignmentNodeCompiler.php +9 -1
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AttributeNodeCompiler.php +1 -0
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ElementNodeCompiler.php +6 -0
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ImportNodeCompiler.php +4 -4
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompilerInterface.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Compiler/composer.json +5 -2
- package/support/vendor/phug/phug/src/Phug/DependencyInjection/DependencyInjection.php +1 -1
- package/support/vendor/phug/phug/src/Phug/DependencyInjection/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Event/Event/ListenerQueue.php +3 -0
- package/support/vendor/phug/phug/src/Phug/Event/EventManagerTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Event/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AbstractFormat.php +15 -12
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AssignmentContainerInterface.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractAssignmentContainerElement.php +11 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractMarkupElement.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AssignmentElement.php +9 -4
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AttributeElement.php +4 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/CodeElement.php +2 -2
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MarkupElement.php +10 -8
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinCallElement.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinElement.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Format/XmlFormat.php +213 -20
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/AssignmentHelpersTrait.php +7 -4
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/HandleVariable.php +4 -4
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/MagicAccessorTrait.php +1 -7
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Invoker/Invoker.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Invoker/composer.json +5 -2
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Partial/IndentStyleTrait.php +5 -5
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AssignmentScanner.php +8 -2
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AttributeScanner.php +23 -11
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/ConditionalScanner.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/FilterScanner.php +6 -10
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/IndentationScanner.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/KeywordScanner.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/MultilineScanner.php +6 -12
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/Partial/TrailingOutdentHandlerTrait.php +26 -0
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/TextScanner.php +3 -3
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/State.php +9 -9
- package/support/vendor/phug/phug/src/Phug/Lexer/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Event/NodeEvent.php +3 -2
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AssignmentNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AttributeNode.php +4 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/ElementNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/FilterNode.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinCallNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AbstractTokenHandler.php +87 -0
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AssignmentTokenHandler.php +6 -21
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeEndTokenHandler.php +5 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeStartTokenHandler.php +7 -23
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeTokenHandler.php +21 -19
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AutoCloseTokenHandler.php +5 -17
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/BlockTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CaseTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ClassTokenHandler.php +7 -34
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CodeTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CommentTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ConditionalTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoctypeTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/EachTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpansionTokenHandler.php +5 -11
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpressionTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/FilterTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ForTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IdTokenHandler.php +7 -33
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ImportTokenHandler.php +14 -20
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IndentTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationEndTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationStartTokenHandler.php +29 -30
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/KeywordTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinCallTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/NewLineTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/OutdentTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/Partial/StaticAttributeTrait.php +36 -0
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationEndTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationStartTokenHandler.php +7 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagTokenHandler.php +6 -21
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TextTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/VariableTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhenTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhileTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/YieldTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Parser/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Cli.php +5 -5
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/ExtensionsTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/FacadeOptionsTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Phug.php +14 -5
- package/support/vendor/phug/phug/src/Phug/Phug/composer.json +5 -2
- package/support/vendor/phug/phug/src/Phug/Reader/Reader.php +9 -9
- package/support/vendor/phug/phug/src/Phug/Reader/composer.json +4 -0
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/FileAdapter.php +21 -4
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/Stream/Template.php +5 -0
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/StreamAdapter.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/CacheInterface.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/AdapterTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/Debug/DebuggerTrait.php +56 -10
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/RendererOptionsTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/Dump.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/LinkDump.php +2 -2
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/ProfilerModule.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/composer.json +7 -3
- package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseTyped.php +67 -0
- package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseUntyped.php +67 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesInterface.php +16 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesOrderInterface.php +17 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesStorage.php +44 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Collection.php +2 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/OrderableInterface.php +22 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/OrderedValue.php +25 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributeTrait.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributesOrderTrait.php +19 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ModuleContainerTrait.php +3 -3
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OptionTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OrderTrait.php +27 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/StaticMemberTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ValueTrait.php +5 -3
- package/support/vendor/phug/phug/src/Phug/Util/Util/SandBox.php +1 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/TestCase.php +47 -4
- package/support/vendor/phug/phug/src/Phug/Util/composer.json +5 -6
- package/support/vendor/symfony/deprecation-contracts/CHANGELOG.md +5 -0
- package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/LICENSE +1 -1
- package/support/vendor/symfony/deprecation-contracts/README.md +26 -0
- package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/composer.json +9 -9
- package/support/vendor/symfony/deprecation-contracts/function.php +27 -0
- package/support/vendor/symfony/polyfill-mbstring/LICENSE +1 -1
- package/support/vendor/symfony/polyfill-mbstring/Mbstring.php +256 -57
- package/support/vendor/symfony/polyfill-mbstring/README.md +1 -1
- package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
- package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1 -1
- package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +102 -27
- package/support/vendor/symfony/polyfill-mbstring/bootstrap.php +33 -8
- package/support/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
- package/support/vendor/symfony/polyfill-mbstring/composer.json +5 -4
- package/support/vendor/symfony/var-dumper/CHANGELOG.md +63 -0
- package/support/vendor/symfony/var-dumper/Caster/AddressInfoCaster.php +82 -0
- package/support/vendor/symfony/var-dumper/Caster/AmqpCaster.php +12 -10
- package/support/vendor/symfony/var-dumper/Caster/ArgsStub.php +6 -7
- package/support/vendor/symfony/var-dumper/Caster/Caster.php +59 -31
- package/support/vendor/symfony/var-dumper/Caster/ClassStub.php +7 -9
- package/support/vendor/symfony/var-dumper/Caster/ConstStub.php +20 -4
- package/support/vendor/symfony/var-dumper/Caster/CurlCaster.php +31 -0
- package/support/vendor/symfony/var-dumper/Caster/CutArrayStub.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/CutStub.php +2 -2
- package/support/vendor/symfony/var-dumper/Caster/DOMCaster.php +61 -156
- package/support/vendor/symfony/var-dumper/Caster/DateCaster.php +27 -26
- package/support/vendor/symfony/var-dumper/Caster/DoctrineCaster.php +6 -4
- package/support/vendor/symfony/var-dumper/Caster/DsCaster.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/DsPairStub.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/EnumStub.php +4 -5
- package/support/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +64 -49
- package/support/vendor/symfony/var-dumper/Caster/FFICaster.php +171 -0
- package/support/vendor/symfony/var-dumper/Caster/FiberCaster.php +43 -0
- package/support/vendor/symfony/var-dumper/Caster/FrameStub.php +6 -8
- package/support/vendor/symfony/var-dumper/Caster/GdCaster.php +30 -0
- package/support/vendor/symfony/var-dumper/Caster/GmpCaster.php +4 -2
- package/support/vendor/symfony/var-dumper/Caster/ImagineCaster.php +2 -0
- package/support/vendor/symfony/var-dumper/Caster/ImgStub.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/IntlCaster.php +10 -8
- package/support/vendor/symfony/var-dumper/Caster/LinkStub.php +14 -17
- package/support/vendor/symfony/var-dumper/Caster/MemcachedCaster.php +10 -8
- package/support/vendor/symfony/var-dumper/Caster/MysqliCaster.php +33 -0
- package/support/vendor/symfony/var-dumper/Caster/OpenSSLCaster.php +69 -0
- package/support/vendor/symfony/var-dumper/Caster/PdoCaster.php +8 -6
- package/support/vendor/symfony/var-dumper/Caster/PgSqlCaster.php +21 -19
- package/support/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php +4 -2
- package/support/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php +188 -0
- package/support/vendor/symfony/var-dumper/Caster/RedisCaster.php +31 -31
- package/support/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +100 -44
- package/support/vendor/symfony/var-dumper/Caster/ResourceCaster.php +33 -46
- package/support/vendor/symfony/var-dumper/Caster/ScalarStub.php +27 -0
- package/support/vendor/symfony/var-dumper/Caster/SocketCaster.php +64 -0
- package/support/vendor/symfony/var-dumper/Caster/SplCaster.php +57 -44
- package/support/vendor/symfony/var-dumper/Caster/SqliteCaster.php +32 -0
- package/support/vendor/symfony/var-dumper/Caster/StubCaster.php +15 -5
- package/support/vendor/symfony/var-dumper/Caster/SymfonyCaster.php +66 -10
- package/support/vendor/symfony/var-dumper/Caster/TraceStub.php +7 -11
- package/support/vendor/symfony/var-dumper/Caster/UninitializedStub.php +25 -0
- package/support/vendor/symfony/var-dumper/Caster/UuidCaster.php +2 -0
- package/support/vendor/symfony/var-dumper/Caster/VirtualStub.php +21 -0
- package/support/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php +25 -10
- package/support/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php +7 -5
- package/support/vendor/symfony/var-dumper/Cloner/AbstractCloner.php +103 -72
- package/support/vendor/symfony/var-dumper/Cloner/ClonerInterface.php +1 -5
- package/support/vendor/symfony/var-dumper/Cloner/Cursor.php +21 -21
- package/support/vendor/symfony/var-dumper/Cloner/Data.php +51 -77
- package/support/vendor/symfony/var-dumper/Cloner/DumperInterface.php +11 -14
- package/support/vendor/symfony/var-dumper/Cloner/Stub.php +40 -31
- package/support/vendor/symfony/var-dumper/Cloner/VarCloner.php +21 -104
- package/support/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php +9 -19
- package/support/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php +10 -11
- package/support/vendor/symfony/var-dumper/Command/ServerDumpCommand.php +27 -15
- package/support/vendor/symfony/var-dumper/Dumper/AbstractDumper.php +68 -48
- package/support/vendor/symfony/var-dumper/Dumper/CliDumper.php +126 -113
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php +1 -1
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php +0 -3
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php +5 -6
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php +10 -15
- package/support/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php +8 -11
- package/support/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php +3 -0
- package/support/vendor/symfony/var-dumper/Dumper/HtmlDumper.php +122 -146
- package/support/vendor/symfony/var-dumper/Dumper/ServerDumper.php +10 -10
- package/support/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php +1 -1
- package/support/vendor/symfony/var-dumper/LICENSE +1 -1
- package/support/vendor/symfony/var-dumper/README.md +6 -6
- package/support/vendor/symfony/var-dumper/Resources/bin/var-dump-server +4 -0
- package/support/vendor/symfony/var-dumper/Resources/functions/dump.php +35 -10
- package/support/vendor/symfony/var-dumper/Server/Connection.php +16 -14
- package/support/vendor/symfony/var-dumper/Server/DumpServer.php +16 -14
- package/support/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php +9 -9
- package/support/vendor/symfony/var-dumper/VarDumper.php +69 -17
- package/support/vendor/symfony/var-dumper/composer.json +10 -16
- package/support/vendor/symfony/polyfill-php72/Php72.php +0 -217
- package/support/vendor/symfony/polyfill-php72/README.md +0 -28
- package/support/vendor/symfony/polyfill-php72/bootstrap.php +0 -57
- package/support/vendor/symfony/polyfill-php80/LICENSE +0 -19
- package/support/vendor/symfony/polyfill-php80/Php80.php +0 -105
- package/support/vendor/symfony/polyfill-php80/README.md +0 -24
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +0 -22
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +0 -11
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +0 -5
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +0 -5
- package/support/vendor/symfony/polyfill-php80/bootstrap.php +0 -42
- package/support/vendor/symfony/polyfill-php80/composer.json +0 -40
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
namespace Symfony\Component\VarDumper\Command\Descriptor;
|
|
13
13
|
|
|
14
|
-
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
|
15
14
|
use Symfony\Component\Console\Input\ArrayInput;
|
|
16
15
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
17
16
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
|
@@ -27,14 +26,11 @@ use Symfony\Component\VarDumper\Dumper\CliDumper;
|
|
|
27
26
|
*/
|
|
28
27
|
class CliDescriptor implements DumpDescriptorInterface
|
|
29
28
|
{
|
|
30
|
-
private $
|
|
31
|
-
private $lastIdentifier;
|
|
32
|
-
private $supportsHref;
|
|
29
|
+
private mixed $lastIdentifier = null;
|
|
33
30
|
|
|
34
|
-
public function __construct(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
$this->supportsHref = method_exists(OutputFormatterStyle::class, 'setHref');
|
|
31
|
+
public function __construct(
|
|
32
|
+
private CliDumper $dumper,
|
|
33
|
+
) {
|
|
38
34
|
}
|
|
39
35
|
|
|
40
36
|
public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void
|
|
@@ -42,7 +38,7 @@ class CliDescriptor implements DumpDescriptorInterface
|
|
|
42
38
|
$io = $output instanceof SymfonyStyle ? $output : new SymfonyStyle(new ArrayInput([]), $output);
|
|
43
39
|
$this->dumper->setColors($output->isDecorated());
|
|
44
40
|
|
|
45
|
-
$rows = [['date', date('r', $context['timestamp'])]];
|
|
41
|
+
$rows = [['date', date('r', (int) $context['timestamp'])]];
|
|
46
42
|
$lastIdentifier = $this->lastIdentifier;
|
|
47
43
|
$this->lastIdentifier = $clientId;
|
|
48
44
|
|
|
@@ -50,7 +46,7 @@ class CliDescriptor implements DumpDescriptorInterface
|
|
|
50
46
|
if (isset($context['request'])) {
|
|
51
47
|
$request = $context['request'];
|
|
52
48
|
$this->lastIdentifier = $request['identifier'];
|
|
53
|
-
$section = sprintf('%s %s', $request['method'], $request['uri']);
|
|
49
|
+
$section = \sprintf('%s %s', $request['method'], $request['uri']);
|
|
54
50
|
if ($controller = $request['controller']) {
|
|
55
51
|
$rows[] = ['controller', rtrim($this->dumper->dump($controller, true), "\n")];
|
|
56
52
|
}
|
|
@@ -65,10 +61,9 @@ class CliDescriptor implements DumpDescriptorInterface
|
|
|
65
61
|
|
|
66
62
|
if (isset($context['source'])) {
|
|
67
63
|
$source = $context['source'];
|
|
68
|
-
$sourceInfo = sprintf('%s on line %d', $source['name'], $source['line']);
|
|
69
|
-
$fileLink = $source['file_link'] ?? null
|
|
70
|
-
|
|
71
|
-
$sourceInfo = sprintf('<href=%s>%s</>', $fileLink, $sourceInfo);
|
|
64
|
+
$sourceInfo = \sprintf('%s on line %d', $source['name'], $source['line']);
|
|
65
|
+
if ($fileLink = $source['file_link'] ?? null) {
|
|
66
|
+
$sourceInfo = \sprintf('<href=%s>%s</>', $fileLink, $sourceInfo);
|
|
72
67
|
}
|
|
73
68
|
$rows[] = ['source', $sourceInfo];
|
|
74
69
|
$file = $source['file_relative'] ?? $source['file'];
|
|
@@ -77,11 +72,6 @@ class CliDescriptor implements DumpDescriptorInterface
|
|
|
77
72
|
|
|
78
73
|
$io->table([], $rows);
|
|
79
74
|
|
|
80
|
-
if (!$this->supportsHref && isset($fileLink)) {
|
|
81
|
-
$io->writeln(['<info>Open source in your IDE/browser:</info>', $fileLink]);
|
|
82
|
-
$io->newLine();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
75
|
$this->dumper->dump($data);
|
|
86
76
|
$io->newLine();
|
|
87
77
|
}
|
|
@@ -24,12 +24,11 @@ use Symfony\Component\VarDumper\Dumper\HtmlDumper;
|
|
|
24
24
|
*/
|
|
25
25
|
class HtmlDescriptor implements DumpDescriptorInterface
|
|
26
26
|
{
|
|
27
|
-
private $
|
|
28
|
-
private $initialized = false;
|
|
27
|
+
private bool $initialized = false;
|
|
29
28
|
|
|
30
|
-
public function __construct(
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
public function __construct(
|
|
30
|
+
private HtmlDumper $dumper,
|
|
31
|
+
) {
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void
|
|
@@ -45,22 +44,22 @@ class HtmlDescriptor implements DumpDescriptorInterface
|
|
|
45
44
|
if (isset($context['request'])) {
|
|
46
45
|
$request = $context['request'];
|
|
47
46
|
$controller = "<span class='dumped-tag'>{$this->dumper->dump($request['controller'], true, ['maxDepth' => 0])}</span>";
|
|
48
|
-
$title = sprintf('<code>%s</code> <a href="%s">%s</a>', $request['method'], $uri = $request['uri'], $uri);
|
|
47
|
+
$title = \sprintf('<code>%s</code> <a href="%s">%s</a>', $request['method'], $uri = $request['uri'], $uri);
|
|
49
48
|
$dedupIdentifier = $request['identifier'];
|
|
50
49
|
} elseif (isset($context['cli'])) {
|
|
51
50
|
$title = '<code>$ </code>'.$context['cli']['command_line'];
|
|
52
51
|
$dedupIdentifier = $context['cli']['identifier'];
|
|
53
52
|
} else {
|
|
54
|
-
$dedupIdentifier =
|
|
53
|
+
$dedupIdentifier = bin2hex(random_bytes(4));
|
|
55
54
|
}
|
|
56
55
|
|
|
57
56
|
$sourceDescription = '';
|
|
58
57
|
if (isset($context['source'])) {
|
|
59
58
|
$source = $context['source'];
|
|
60
59
|
$projectDir = $source['project_dir'] ?? null;
|
|
61
|
-
$sourceDescription = sprintf('%s on line %d', $source['name'], $source['line']);
|
|
60
|
+
$sourceDescription = \sprintf('%s on line %d', $source['name'], $source['line']);
|
|
62
61
|
if (isset($source['file_link'])) {
|
|
63
|
-
$sourceDescription = sprintf('<a href="%s">%s</a>', $source['file_link'], $sourceDescription);
|
|
62
|
+
$sourceDescription = \sprintf('<a href="%s">%s</a>', $source['file_link'], $sourceDescription);
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
65
|
|
|
@@ -94,7 +93,7 @@ HTML
|
|
|
94
93
|
|
|
95
94
|
private function extractDate(array $context, string $format = 'r'): string
|
|
96
95
|
{
|
|
97
|
-
return date($format, $context['timestamp']);
|
|
96
|
+
return date($format, (int) $context['timestamp']);
|
|
98
97
|
}
|
|
99
98
|
|
|
100
99
|
private function renderTags(array $tags): string
|
|
@@ -105,7 +104,7 @@ HTML
|
|
|
105
104
|
|
|
106
105
|
$renderedTags = '';
|
|
107
106
|
foreach ($tags as $key => $value) {
|
|
108
|
-
$renderedTags .= sprintf('<li><span class="badge">%s</span>%s</li>', $key, $value);
|
|
107
|
+
$renderedTags .= \sprintf('<li><span class="badge">%s</span>%s</li>', $key, $value);
|
|
109
108
|
}
|
|
110
109
|
|
|
111
110
|
return <<<HTML
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
|
|
12
12
|
namespace Symfony\Component\VarDumper\Command;
|
|
13
13
|
|
|
14
|
+
use Symfony\Component\Console\Attribute\AsCommand;
|
|
14
15
|
use Symfony\Component\Console\Command\Command;
|
|
16
|
+
use Symfony\Component\Console\Completion\CompletionInput;
|
|
17
|
+
use Symfony\Component\Console\Completion\CompletionSuggestions;
|
|
15
18
|
use Symfony\Component\Console\Exception\InvalidArgumentException;
|
|
16
19
|
use Symfony\Component\Console\Input\InputInterface;
|
|
17
20
|
use Symfony\Component\Console\Input\InputOption;
|
|
@@ -32,18 +35,16 @@ use Symfony\Component\VarDumper\Server\DumpServer;
|
|
|
32
35
|
*
|
|
33
36
|
* @final
|
|
34
37
|
*/
|
|
38
|
+
#[AsCommand(name: 'server:dump', description: 'Start a dump server that collects and displays dumps in a single place')]
|
|
35
39
|
class ServerDumpCommand extends Command
|
|
36
40
|
{
|
|
37
|
-
protected static $defaultName = 'server:dump';
|
|
38
|
-
|
|
39
|
-
private $server;
|
|
40
|
-
|
|
41
41
|
/** @var DumpDescriptorInterface[] */
|
|
42
|
-
private $descriptors;
|
|
42
|
+
private array $descriptors;
|
|
43
43
|
|
|
44
|
-
public function __construct(
|
|
45
|
-
|
|
46
|
-
$
|
|
44
|
+
public function __construct(
|
|
45
|
+
private DumpServer $server,
|
|
46
|
+
array $descriptors = [],
|
|
47
|
+
) {
|
|
47
48
|
$this->descriptors = $descriptors + [
|
|
48
49
|
'cli' => new CliDescriptor(new CliDumper()),
|
|
49
50
|
'html' => new HtmlDescriptor(new HtmlDumper()),
|
|
@@ -52,13 +53,10 @@ class ServerDumpCommand extends Command
|
|
|
52
53
|
parent::__construct();
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
protected function configure()
|
|
56
|
+
protected function configure(): void
|
|
56
57
|
{
|
|
57
|
-
$availableFormats = implode(', ', array_keys($this->descriptors));
|
|
58
|
-
|
|
59
58
|
$this
|
|
60
|
-
->addOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format (%s)', $
|
|
61
|
-
->setDescription('Starts a dump server that collects and displays dumps in a single place')
|
|
59
|
+
->addOption('format', null, InputOption::VALUE_REQUIRED, \sprintf('The output format (%s)', implode(', ', $this->getAvailableFormats())), 'cli')
|
|
62
60
|
->setHelp(<<<'EOF'
|
|
63
61
|
<info>%command.name%</info> starts a dump server that collects and displays
|
|
64
62
|
dumps in a single place for debugging you application:
|
|
@@ -81,7 +79,7 @@ EOF
|
|
|
81
79
|
$format = $input->getOption('format');
|
|
82
80
|
|
|
83
81
|
if (!$descriptor = $this->descriptors[$format] ?? null) {
|
|
84
|
-
throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $format));
|
|
82
|
+
throw new InvalidArgumentException(\sprintf('Unsupported format "%s".', $format));
|
|
85
83
|
}
|
|
86
84
|
|
|
87
85
|
$errorIo = $io->getErrorStyle();
|
|
@@ -89,11 +87,25 @@ EOF
|
|
|
89
87
|
|
|
90
88
|
$this->server->start();
|
|
91
89
|
|
|
92
|
-
$errorIo->success(sprintf('Server listening on %s', $this->server->getHost()));
|
|
90
|
+
$errorIo->success(\sprintf('Server listening on %s', $this->server->getHost()));
|
|
93
91
|
$errorIo->comment('Quit the server with CONTROL-C.');
|
|
94
92
|
|
|
95
93
|
$this->server->listen(function (Data $data, array $context, int $clientId) use ($descriptor, $io) {
|
|
96
94
|
$descriptor->describe($io, $data, $context, $clientId);
|
|
97
95
|
});
|
|
96
|
+
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
|
|
101
|
+
{
|
|
102
|
+
if ($input->mustSuggestOptionValuesFor('format')) {
|
|
103
|
+
$suggestions->suggestValues($this->getAvailableFormats());
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private function getAvailableFormats(): array
|
|
108
|
+
{
|
|
109
|
+
return array_keys($this->descriptors);
|
|
98
110
|
}
|
|
99
111
|
}
|
|
@@ -21,33 +21,35 @@ use Symfony\Component\VarDumper\Cloner\DumperInterface;
|
|
|
21
21
|
*/
|
|
22
22
|
abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
23
23
|
{
|
|
24
|
-
const DUMP_LIGHT_ARRAY = 1;
|
|
25
|
-
const DUMP_STRING_LENGTH = 2;
|
|
26
|
-
const DUMP_COMMA_SEPARATOR = 4;
|
|
27
|
-
const DUMP_TRAILING_COMMA = 8;
|
|
24
|
+
public const DUMP_LIGHT_ARRAY = 1;
|
|
25
|
+
public const DUMP_STRING_LENGTH = 2;
|
|
26
|
+
public const DUMP_COMMA_SEPARATOR = 4;
|
|
27
|
+
public const DUMP_TRAILING_COMMA = 8;
|
|
28
28
|
|
|
29
|
+
/** @var callable|resource|string|null */
|
|
29
30
|
public static $defaultOutput = 'php://output';
|
|
30
31
|
|
|
31
|
-
protected $line = '';
|
|
32
|
+
protected string $line = '';
|
|
33
|
+
/** @var callable|null */
|
|
32
34
|
protected $lineDumper;
|
|
35
|
+
/** @var resource|null */
|
|
33
36
|
protected $outputStream;
|
|
34
|
-
protected $decimalPoint
|
|
35
|
-
protected $indentPad = ' ';
|
|
36
|
-
protected $flags;
|
|
37
|
+
protected string $decimalPoint = '.';
|
|
38
|
+
protected string $indentPad = ' ';
|
|
37
39
|
|
|
38
|
-
private $charset = '';
|
|
40
|
+
private string $charset = '';
|
|
39
41
|
|
|
40
42
|
/**
|
|
41
43
|
* @param callable|resource|string|null $output A line dumper callable, an opened stream or an output path, defaults to static::$defaultOutput
|
|
42
44
|
* @param string|null $charset The default character encoding to use for non-UTF8 strings
|
|
43
45
|
* @param int $flags A bit field of static::DUMP_* constants to fine tune dumps representation
|
|
44
46
|
*/
|
|
45
|
-
public function __construct(
|
|
46
|
-
|
|
47
|
-
$
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
$this->
|
|
47
|
+
public function __construct(
|
|
48
|
+
$output = null,
|
|
49
|
+
?string $charset = null,
|
|
50
|
+
protected int $flags = 0,
|
|
51
|
+
) {
|
|
52
|
+
$this->setCharset($charset ?: \ini_get('php.output_encoding') ?: \ini_get('default_charset') ?: 'UTF-8');
|
|
51
53
|
$this->setOutput($output ?: static::$defaultOutput);
|
|
52
54
|
if (!$output && \is_string(static::$defaultOutput)) {
|
|
53
55
|
static::$defaultOutput = $this->outputStream;
|
|
@@ -57,23 +59,23 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
57
59
|
/**
|
|
58
60
|
* Sets the output destination of the dumps.
|
|
59
61
|
*
|
|
60
|
-
* @param callable|resource|string $output A line dumper callable, an opened stream or an output path
|
|
62
|
+
* @param callable|resource|string|null $output A line dumper callable, an opened stream or an output path
|
|
61
63
|
*
|
|
62
|
-
* @return callable|resource|string The previous output destination
|
|
64
|
+
* @return callable|resource|string|null The previous output destination
|
|
63
65
|
*/
|
|
64
66
|
public function setOutput($output)
|
|
65
67
|
{
|
|
66
|
-
$prev =
|
|
68
|
+
$prev = $this->outputStream ?? $this->lineDumper;
|
|
67
69
|
|
|
68
70
|
if (\is_callable($output)) {
|
|
69
71
|
$this->outputStream = null;
|
|
70
72
|
$this->lineDumper = $output;
|
|
71
73
|
} else {
|
|
72
74
|
if (\is_string($output)) {
|
|
73
|
-
$output = fopen($output, '
|
|
75
|
+
$output = fopen($output, 'w');
|
|
74
76
|
}
|
|
75
77
|
$this->outputStream = $output;
|
|
76
|
-
$this->lineDumper =
|
|
78
|
+
$this->lineDumper = $this->echoLine(...);
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
return $prev;
|
|
@@ -82,16 +84,14 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
82
84
|
/**
|
|
83
85
|
* Sets the default character encoding to use for non-UTF8 strings.
|
|
84
86
|
*
|
|
85
|
-
* @param string $charset The default character encoding to use for non-UTF8 strings
|
|
86
|
-
*
|
|
87
87
|
* @return string The previous charset
|
|
88
88
|
*/
|
|
89
|
-
public function setCharset($charset)
|
|
89
|
+
public function setCharset(string $charset): string
|
|
90
90
|
{
|
|
91
91
|
$prev = $this->charset;
|
|
92
92
|
|
|
93
93
|
$charset = strtoupper($charset);
|
|
94
|
-
$charset =
|
|
94
|
+
$charset = 'UTF-8' === $charset || 'UTF8' === $charset ? 'CP1252' : $charset;
|
|
95
95
|
|
|
96
96
|
$this->charset = $charset;
|
|
97
97
|
|
|
@@ -105,7 +105,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
105
105
|
*
|
|
106
106
|
* @return string The previous indent pad
|
|
107
107
|
*/
|
|
108
|
-
public function setIndentPad($pad)
|
|
108
|
+
public function setIndentPad(string $pad): string
|
|
109
109
|
{
|
|
110
110
|
$prev = $this->indentPad;
|
|
111
111
|
$this->indentPad = $pad;
|
|
@@ -120,17 +120,14 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
120
120
|
*
|
|
121
121
|
* @return string|null The dump as string when $output is true
|
|
122
122
|
*/
|
|
123
|
-
public function dump(Data $data, $output = null)
|
|
123
|
+
public function dump(Data $data, $output = null): ?string
|
|
124
124
|
{
|
|
125
|
-
$this->decimalPoint = localeconv();
|
|
126
|
-
$this->decimalPoint = $this->decimalPoint['decimal_point'];
|
|
127
|
-
|
|
128
125
|
if ($locale = $this->flags & (self::DUMP_COMMA_SEPARATOR | self::DUMP_TRAILING_COMMA) ? setlocale(\LC_NUMERIC, 0) : null) {
|
|
129
126
|
setlocale(\LC_NUMERIC, 'C');
|
|
130
127
|
}
|
|
131
128
|
|
|
132
129
|
if ($returnDump = true === $output) {
|
|
133
|
-
$output = fopen('php://memory', 'r+
|
|
130
|
+
$output = fopen('php://memory', 'r+');
|
|
134
131
|
}
|
|
135
132
|
if ($output) {
|
|
136
133
|
$prevOutput = $this->setOutput($output);
|
|
@@ -163,7 +160,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
163
160
|
* @param int $depth The recursive depth in the dumped structure for the line being dumped,
|
|
164
161
|
* or -1 to signal the end-of-dump to the line dumper callable
|
|
165
162
|
*/
|
|
166
|
-
protected function dumpLine($depth)
|
|
163
|
+
protected function dumpLine(int $depth): void
|
|
167
164
|
{
|
|
168
165
|
($this->lineDumper)($this->line, $depth, $this->indentPad);
|
|
169
166
|
$this->line = '';
|
|
@@ -171,12 +168,8 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
171
168
|
|
|
172
169
|
/**
|
|
173
170
|
* Generic line dumper callback.
|
|
174
|
-
*
|
|
175
|
-
* @param string $line The line to write
|
|
176
|
-
* @param int $depth The recursive depth in the dumped structure
|
|
177
|
-
* @param string $indentPad The line indent pad
|
|
178
171
|
*/
|
|
179
|
-
protected function echoLine($line, $depth, $indentPad)
|
|
172
|
+
protected function echoLine(string $line, int $depth, string $indentPad): void
|
|
180
173
|
{
|
|
181
174
|
if (-1 !== $depth) {
|
|
182
175
|
fwrite($this->outputStream, str_repeat($indentPad, $depth).$line."\n");
|
|
@@ -185,28 +178,55 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
|
|
|
185
178
|
|
|
186
179
|
/**
|
|
187
180
|
* Converts a non-UTF-8 string to UTF-8.
|
|
188
|
-
*
|
|
189
|
-
* @param string|null $s The non-UTF-8 string to convert
|
|
190
|
-
*
|
|
191
|
-
* @return string|null The string converted to UTF-8
|
|
192
181
|
*/
|
|
193
|
-
protected function utf8Encode($s)
|
|
182
|
+
protected function utf8Encode(?string $s): ?string
|
|
194
183
|
{
|
|
195
184
|
if (null === $s || preg_match('//u', $s)) {
|
|
196
185
|
return $s;
|
|
197
186
|
}
|
|
198
187
|
|
|
199
|
-
if (
|
|
200
|
-
|
|
188
|
+
if (\function_exists('iconv')) {
|
|
189
|
+
if (false !== $c = @iconv($this->charset, 'UTF-8', $s)) {
|
|
190
|
+
return $c;
|
|
191
|
+
}
|
|
192
|
+
if ('CP1252' !== $this->charset && false !== $c = @iconv('CP1252', 'UTF-8', $s)) {
|
|
193
|
+
return $c;
|
|
194
|
+
}
|
|
201
195
|
}
|
|
202
196
|
|
|
203
|
-
|
|
204
|
-
|
|
197
|
+
$s .= $s;
|
|
198
|
+
$len = \strlen($s);
|
|
199
|
+
$mapCp1252 = false;
|
|
200
|
+
|
|
201
|
+
for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
|
|
202
|
+
if ($s[$i] < "\x80") {
|
|
203
|
+
$s[$j] = $s[$i];
|
|
204
|
+
} elseif ($s[$i] < "\xC0") {
|
|
205
|
+
$s[$j] = "\xC2";
|
|
206
|
+
$s[++$j] = $s[$i];
|
|
207
|
+
if ($s[$i] < "\xA0") {
|
|
208
|
+
$mapCp1252 = true;
|
|
209
|
+
}
|
|
210
|
+
} else {
|
|
211
|
+
$s[$j] = "\xC3";
|
|
212
|
+
$s[++$j] = \chr(\ord($s[$i]) - 64);
|
|
213
|
+
}
|
|
205
214
|
}
|
|
206
|
-
|
|
207
|
-
|
|
215
|
+
|
|
216
|
+
$s = substr($s, 0, $j);
|
|
217
|
+
|
|
218
|
+
if (!$mapCp1252) {
|
|
219
|
+
return $s;
|
|
208
220
|
}
|
|
209
221
|
|
|
210
|
-
return
|
|
222
|
+
return strtr($s, [
|
|
223
|
+
"\xC2\x80" => '€', "\xC2\x82" => '‚', "\xC2\x83" => 'ƒ', "\xC2\x84" => '„',
|
|
224
|
+
"\xC2\x85" => '…', "\xC2\x86" => '†', "\xC2\x87" => '‡', "\xC2\x88" => 'ˆ',
|
|
225
|
+
"\xC2\x89" => '‰', "\xC2\x8A" => 'Š', "\xC2\x8B" => '‹', "\xC2\x8C" => 'Œ',
|
|
226
|
+
"\xC2\x8D" => 'Ž', "\xC2\x91" => '‘', "\xC2\x92" => '’', "\xC2\x93" => '“',
|
|
227
|
+
"\xC2\x94" => '”', "\xC2\x95" => '•', "\xC2\x96" => '–', "\xC2\x97" => '—',
|
|
228
|
+
"\xC2\x98" => '˜', "\xC2\x99" => '™', "\xC2\x9A" => 'š', "\xC2\x9B" => '›',
|
|
229
|
+
"\xC2\x9C" => 'œ', "\xC2\x9E" => 'ž',
|
|
230
|
+
]);
|
|
211
231
|
}
|
|
212
232
|
}
|