Version Description
(07.12.2020) = * Tested up to WordPress 5.6 * Tested on PHP 5.6 - 8.0
Download this release
Release Info
Developer | mihdan |
Plugin | Cyr-To-Lat |
Version | 4.5.1 |
Comparing to | |
See all releases |
Code changes from version 4.5.0 to 4.5.1
- .phpcs.cache +1 -0
- cyr-to-lat.php +4 -4
- dist/js/settings/app.js +0 -1
- languages/cyr2lat-ru_RU.mo +0 -0
- languages/cyr2lat-ru_RU.po +66 -42
- languages/cyr2lat-sv.mo +0 -0
- languages/cyr2lat-uk.mo +0 -0
- readme.txt +6 -2
- vendor/10up/wp_mock/.gitmodules +1 -0
- vendor/10up/wp_mock/CONTRIBUTING.md +26 -0
- vendor/10up/wp_mock/LICENSE.md +368 -0
- vendor/10up/wp_mock/behat.yml +9 -0
- vendor/10up/wp_mock/bootstrap.php.dist +5 -0
- vendor/10up/wp_mock/features/bootstrap/FeatureContext.php +88 -0
- vendor/10up/wp_mock/features/bootstrap/FunctionsContext.php +127 -0
- vendor/10up/wp_mock/features/bootstrap/HooksContext.php +235 -0
- vendor/10up/wp_mock/features/function-mocks.feature +48 -0
- vendor/10up/wp_mock/features/hooks.feature +228 -0
- vendor/10up/wp_mock/php/WP_Mock.php +543 -0
- vendor/10up/wp_mock/php/WP_Mock/API/constant-mocks.php +72 -0
- vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/themes/vip/plugins/vip-init.php +0 -0
- vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/wp-includes/class-http.php +0 -0
- vendor/10up/wp_mock/php/WP_Mock/API/function-mocks.php +161 -0
- vendor/10up/wp_mock/php/WP_Mock/Action.php +77 -0
- vendor/10up/wp_mock/php/WP_Mock/DeprecatedListener.php +119 -0
- vendor/10up/wp_mock/php/WP_Mock/EventManager.php +124 -0
- vendor/10up/wp_mock/php/WP_Mock/Filter.php +76 -0
- vendor/10up/wp_mock/php/WP_Mock/Functions.php +295 -0
- vendor/10up/wp_mock/php/WP_Mock/Handler.php +110 -0
- vendor/10up/wp_mock/php/WP_Mock/Hook.php +88 -0
- vendor/10up/wp_mock/php/WP_Mock/HookedCallback.php +107 -0
- vendor/10up/wp_mock/php/WP_Mock/InvokedFilterValue.php +25 -0
- vendor/10up/wp_mock/php/WP_Mock/Loader.php +149 -0
- vendor/10up/wp_mock/php/WP_Mock/Matcher/FuzzyObject.php +101 -0
- vendor/10up/wp_mock/php/WP_Mock/ReturnSequence.php +39 -0
- vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/ExpectationsMet.php +40 -0
- vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/IsEqualHtml.php +21 -0
- vendor/10up/wp_mock/php/WP_Mock/Tools/TestCase.php +319 -0
- vendor/10up/wp_mock/phpdoc.xml +16 -0
- vendor/10up/wp_mock/phpunit.xml.dist +22 -0
- vendor/antecedent/patchwork/.scrutinizer.yml +48 -0
- vendor/antecedent/patchwork/LICENSE +21 -0
- vendor/antecedent/patchwork/Patchwork.php +149 -0
- vendor/autoload.php +1 -1
- vendor/composer/ClassLoader.php +3 -3
- vendor/composer/InstalledVersions.php +819 -0
- vendor/composer/autoload_classmap.php +624 -0
- vendor/composer/autoload_files.php +13 -0
- vendor/composer/autoload_namespaces.php +5 -0
- vendor/composer/autoload_psr4.php +24 -0
- vendor/composer/autoload_real.php +8 -8
- vendor/composer/autoload_static.php +817 -4
- vendor/composer/installed.json +4232 -126
- vendor/composer/installed.php +624 -0
- vendor/doctrine/instantiator/.scrutinizer.yml +46 -0
- vendor/doctrine/instantiator/.travis.install.sh +14 -0
- vendor/doctrine/instantiator/CONTRIBUTING.md +35 -0
- vendor/doctrine/instantiator/LICENSE +19 -0
- vendor/doctrine/instantiator/phpmd.xml.dist +27 -0
- vendor/doctrine/instantiator/phpunit.xml.dist +22 -0
- vendor/guzzlehttp/guzzle/.php_cs +23 -0
- vendor/guzzlehttp/guzzle/Dockerfile +18 -0
- vendor/guzzlehttp/guzzle/LICENSE +19 -0
- vendor/guzzlehttp/guzzle/UPGRADING.md +1203 -0
- vendor/guzzlehttp/promises/.php_cs.dist +88 -0
- vendor/guzzlehttp/promises/LICENSE +19 -0
- vendor/guzzlehttp/promises/phpstan-baseline.neon +7 -0
- vendor/guzzlehttp/promises/phpstan.neon.dist +10 -0
- vendor/guzzlehttp/promises/psalm.xml +15 -0
- vendor/guzzlehttp/psr7/LICENSE +19 -0
- vendor/hamcrest/hamcrest-php/.gush.yml +7 -0
- vendor/hamcrest/hamcrest-php/CHANGES.txt +173 -0
- vendor/hamcrest/hamcrest-php/LICENSE.txt +27 -0
- vendor/hamcrest/hamcrest-php/generator/FactoryCall.php +41 -0
- vendor/hamcrest/hamcrest-php/generator/FactoryClass.php +71 -0
- vendor/hamcrest/hamcrest-php/generator/FactoryFile.php +121 -0
- vendor/hamcrest/hamcrest-php/generator/FactoryGenerator.php +124 -0
- vendor/hamcrest/hamcrest-php/generator/FactoryMethod.php +231 -0
- vendor/hamcrest/hamcrest-php/generator/FactoryParameter.php +131 -0
- vendor/hamcrest/hamcrest-php/generator/GlobalFunctionFile.php +42 -0
- vendor/hamcrest/hamcrest-php/generator/StaticMethodFile.php +38 -0
- vendor/hamcrest/hamcrest-php/generator/parts/file_header.txt +7 -0
- vendor/hamcrest/hamcrest-php/generator/parts/functions_footer.txt +0 -0
- vendor/hamcrest/hamcrest-php/generator/parts/functions_header.txt +24 -0
- vendor/hamcrest/hamcrest-php/generator/parts/functions_imports.txt +0 -0
- vendor/hamcrest/hamcrest-php/generator/parts/matchers_footer.txt +1 -0
- vendor/hamcrest/hamcrest-php/generator/parts/matchers_header.txt +7 -0
- vendor/hamcrest/hamcrest-php/generator/parts/matchers_imports.txt +2 -0
- vendor/hamcrest/hamcrest-php/generator/run.php +37 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php +882 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php +118 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php +63 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php +59 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php +57 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php +75 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php +80 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php +73 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php +69 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php +75 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php +10 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php +132 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php +30 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php +71 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php +47 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php +59 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php +58 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php +78 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php +68 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php +56 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php +56 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php +57 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php +45 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php +93 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php +44 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php +38 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php +67 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php +44 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php +56 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php +51 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php +71 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php +95 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php +43 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php +70 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php +25 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php +67 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php +27 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php +50 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php +118 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php +713 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php +43 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php +67 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php +132 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php +23 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php +57 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php +85 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php +52 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php +66 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php +40 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php +45 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php +40 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php +66 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php +40 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php +40 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php +45 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php +32 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php +32 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php +37 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php +34 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php +32 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php +54 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php +32 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php +32 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php +34 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php +32 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php +29 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php +107 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php +76 -0
- vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php +195 -0
- vendor/lucatume/args/codeception.yml +17 -0
- vendor/lucatume/function-mocker/cache/003718f94361bf05e7a0149d8c566eda.php +1 -0
- vendor/lucatume/function-mocker/cache/248b6c7ab72e92c63d8ea2dc0000ba0c.php +1 -0
- vendor/lucatume/function-mocker/cache/35a0eb5e7c644778e349db32d7929a3b.php +2 -0
- vendor/lucatume/function-mocker/cache/51a4bafc9ebe4b76b8047ef2c4683321.php +91 -0
- vendor/lucatume/function-mocker/cache/539425a502f6acd0d5ae4dbbb111eebc.php +1226 -0
- vendor/lucatume/function-mocker/cache/5c160974325c7689e4934dd71fd72c04.php +401 -0
- vendor/lucatume/function-mocker/cache/5ef18fdb052a08d48b73f70c53e22f6f.php +287 -0
- vendor/lucatume/function-mocker/cache/64c11395d6a993bb4748cbb13c06e511.php +89 -0
- vendor/lucatume/function-mocker/cache/7a6bb82a1570d399a0fc0211458a3b75.php +234 -0
- vendor/lucatume/function-mocker/cache/7dd6f1c277a6c78d8318bbe76000ada3.php +1 -0
- vendor/lucatume/function-mocker/cache/823ab44b7fe7fb35b7976f7a7fbf1e7a.php +210 -0
- vendor/lucatume/function-mocker/cache/87c0186bd1f5eef7fac3cc830853843d.php +1 -0
- vendor/lucatume/function-mocker/cache/9c9e77b25faadb56dff570646e078dbf.php +1 -0
- vendor/lucatume/function-mocker/cache/ac2614677e1a12cb15d55208407c065d.php +1 -0
- vendor/lucatume/function-mocker/cache/c0ea46e7b4ef468cd221f627938ffc8a.php +1 -0
- vendor/lucatume/function-mocker/cache/c346f2492ecd70e9b3820fc0acea1c22.php +768 -0
- vendor/lucatume/function-mocker/cache/d046cd1f76aeed79b57fe7d207f9c445.php +86 -0
.phpcs.cache
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"config":{"phpVersion":70033,"phpExtensions":"25b54755e960a66bca8abdd593feffae","tabWidth":4,"encoding":"utf-8","recordErrors":true,"annotations":true,"configData":{"installed_paths":"vendor\/phpcompatibility\/php-compatibility,vendor\/phpcompatibility\/phpcompatibility-paragonie,vendor\/phpcompatibility\/phpcompatibility-wp,vendor\/wp-coding-standards\/wpcs","testVersion":"5.6-","minimum_supported_wp_version":"5.1"},"codeHash":"65dd9046d872e9e232515bf57a1dc55c","rulesetHash":"74009a863ae4785386cc97164a8ffd49"},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/cyr-to-lat.php":{"hash":"16d0d38fb5f962d9e84c5eb82528374b33188","errors":{"19":{"4":[{"message":"Expected \"Squiz Pty Ltd <products@squiz.net>\" for author tag","source":"Squiz.Commenting.FileComment.IncorrectAuthor","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":true},{"message":"The tag in position 2 should be the @subpackage tag","source":"Squiz.Commenting.FileComment.SubpackageTagOrder","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"20":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"28":{"1":[{"message":"There must be no blank line following an inline comment","source":"Squiz.Commenting.InlineComment.SpacingAfter","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":true}]},"34":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"39":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"44":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"49":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"54":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"59":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"64":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"69":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"74":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"79":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":3}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":10}},"Multiple statements on same line":{"values":{"no":16}},"Control structure defined inline":{"values":{"no":3}},"Space before operator":{"values":{"1":2}},"Space after operator":{"values":{"1":4}},"Constant name case":{"values":{"upper":9}},"Spacing before string concat":{"values":{"1":1}},"Spacing after string concat":{"values":{"1":1}},"Assigning new by reference":{"values":{"no":2}},"Object instantiation with parenthesis":{"values":{"yes":2}},"Space between classname and parenthesis":{"values":[2]},"Spacing before object operator":{"values":[1]},"Spacing after object operator":{"values":[1]}},"errorCount":23,"warningCount":1,"fixableCount":12,"numTokens":430},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-admin-notices.php":{"hash":"f010bb07a24c170ab8b886793516c4d433188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"92":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"22":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"29":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"28":{"38":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"38":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"39":{"12":[{"message":"Type hint \"string\" missing for $message","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $class","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $options","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"73":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"45":{"5":[{"message":"Expected \/\/end add_notice()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"40":{"28":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"49":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"66":{"5":[{"message":"Expected \/\/end show_notices()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"73":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"75":{"15":[{"message":"Type hint \"array\" missing for $notice","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"91":{"5":[{"message":"Expected \/\/end is_page_allowed()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"13":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":67}},"PHP short open tag used":{"values":{"no":13}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":25}},"Multiple statements on same line":{"values":{"no":13}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Space after operator":{"values":{"1":14}},"Short array syntax used":{"values":{"yes":4}},"Function has doc comment":{"values":{"yes":4}},"Function opening brace placement":{"values":{"same line":4}},"Single line array - comma after last item":{"values":{"no":1}},"Spacing before object operator":{"values":[4]},"Spacing after object operator":{"values":[4]},"Multi-line array - comma after last item":{"values":{"yes":1}},"Control structure defined inline":{"values":{"no":5}},"Space before operator":{"values":{"1":6}},"PHP constant case":{"values":{"lower":4}},"Spacing after cast statement":{"values":{"1":1}},"PHP type case":{"values":{"lower":1}}},"errorCount":17,"warningCount":2,"fixableCount":10,"numTokens":543},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-acf.php":{"hash":"b7dbc11af2c4260cba1d51160b87cf3d33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"58":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"27":{"12":[{"message":"Type hint \"Settings\" missing for $settings","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"31":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"35":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"38":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"37":{"62":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"42":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"57":{"5":[{"message":"Expected \/\/end enqueue_script()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"49":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"54":{"19":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":36}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":9}},"Multiple statements on same line":{"values":{"no":9}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":3}},"Function opening brace placement":{"values":{"same line":3}},"Spacing before object operator":{"values":[4]},"Spacing after object operator":{"values":[4]},"Space after operator":{"values":{"1":4}},"Single line array - comma after last item":{"values":{"no":2}},"Short array syntax used":{"values":{"yes":3}},"Spacing before string concat":{"values":{"1":1}},"Spacing after string concat":{"values":{"1":1}},"PHP constant case":{"values":{"lower":1}}},"errorCount":11,"warningCount":1,"fixableCount":7,"numTokens":293},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/background-processes\/class-conversion-process.php":{"hash":"fe09f83c1ee9bef2995729c06240b88c33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"103":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"36":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"41":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"52":{"5":[{"message":"Expected \/\/end task()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"56":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"61":{"5":[{"message":"Expected \/\/end complete()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"66":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"77":{"5":[{"message":"Expected \/\/end is_process_completed()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"85":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"88":{"5":[{"message":"Expected \/\/end is_process_running()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"95":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"96":{"15":[{"message":"Type hint \"string\" missing for $message","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"102":{"5":[{"message":"Expected \/\/end log()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":75}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":27}},"Multiple statements on same line":{"values":{"no":15}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":6}},"Function opening brace placement":{"values":{"same line":6}},"Spacing before object operator":{"values":[8]},"Spacing after object operator":{"values":[8]},"Space after operator":{"values":{"1":3}},"Adjacent assignments aligned":{"values":{"yes":1}},"PHP constant case":{"values":{"lower":3}},"Spacing before string concat":{"values":{"1":4}},"Spacing after string concat":{"values":{"1":4}},"Control structure defined inline":{"values":{"no":2}},"Space before operator":{"values":{"1":1}}},"errorCount":14,"warningCount":1,"fixableCount":7,"numTokens":527},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-wp-cli.php":{"hash":"b27299a55796b193f3c13af19b4ba84733188","errors":{"7":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false},{"message":"Missing @author tag in file comment","source":"Squiz.Commenting.FileComment.MissingAuthorTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"6":{"4":[{"message":"The tag in position 2 should be the @subpackage tag","source":"Squiz.Commenting.FileComment.SubpackageTagOrder","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"89":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"38":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"50":{"8":[{"message":"Parameter tags must be defined first in a doc comment","source":"Generic.Commenting.DocComment.ParamNotFirst","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":false}]},"52":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"53":{"12":[{"message":"Type hint \"array\" missing for $args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $assoc_args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"41":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}],"59":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"79":{"5":[{"message":"Expected \/\/end regenerate()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"55":{"9":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"62":{"19":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"88":{"5":[{"message":"Expected \/\/end make_progress_bar()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"19":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":57}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":20}},"Multiple statements on same line":{"values":{"no":19}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":3}},"Function opening brace placement":{"values":{"same line":3}},"Spacing before object operator":{"values":[8]},"Spacing after object operator":{"values":[8]},"Space after operator":{"values":{"1":9}},"Short array syntax used":{"values":{"yes":3}},"Control structure defined inline":{"values":{"no":2}},"Space before operator":{"values":{"1":2}},"Adjacent assignments aligned":{"values":{"yes":2}}},"errorCount":16,"warningCount":2,"fixableCount":8,"numTokens":572},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/background-processes\/class-term-conversion-process.php":{"hash":"30c280f4ec14fa14a58a76fc2fc2e6cc33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"110":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"43":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"48":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"57":{"15":[{"message":"Type hint \"stdClass\" missing for $term","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"75":{"5":[{"message":"Expected \/\/end task()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"63":{"31":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"65":{"34":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"69":{"42":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}],"94":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"79":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"84":{"5":[{"message":"Expected \/\/end complete()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"109":{"5":[{"message":"Expected \/\/end filter_term_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"92":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"105":{"81":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":75}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":25}},"Multiple statements on same line":{"values":{"no":25}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":4}},"Function opening brace placement":{"values":{"same line":4}},"Spacing before object operator":{"values":[21]},"Spacing after object operator":{"values":[21]},"Space after operator":{"values":{"1":16,"newline":1}},"Adjacent assignments aligned":{"values":{"yes":2}},"Single line array - comma after last item":{"values":{"no":4}},"Short array syntax used":{"values":{"yes":6}},"Control structure defined inline":{"values":{"no":2}},"Space before operator":{"values":{"1":4}},"Spacing before string concat":{"values":{"1":4}},"Spacing after string concat":{"values":{"1":4}},"PHP constant case":{"values":{"lower":3}},"Multi-line array - comma after last item":{"values":{"yes":1}}},"errorCount":15,"warningCount":1,"fixableCount":11,"numTokens":709},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/background-processes\/class-post-conversion-process.php":{"hash":"575cb31b50d78aa140067bebbeec931433188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"210":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"43":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"48":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"57":{"15":[{"message":"Type hint \"stdClass\" missing for $post","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"82":{"5":[{"message":"Expected \/\/end task()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"63":{"31":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"65":{"34":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"70":{"42":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}],"99":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"88":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"89":{"15":[{"message":"Type hint \"int\" missing for $post_id","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"87":{"8":[{"message":"Expected \"integer\" but found \"int\" for parameter type","source":"Squiz.Commenting.FunctionComment.IncorrectParamVarName","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"108":{"5":[{"message":"Expected \/\/end rename_attachment()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"114":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"115":{"15":[{"message":"Type hint \"int\" missing for $post_id","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"113":{"8":[{"message":"Expected \"integer\" but found \"int\" for parameter type","source":"Squiz.Commenting.FunctionComment.IncorrectParamVarName","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"131":{"5":[{"message":"Expected \/\/end rename_thumbnails()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"137":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"138":{"15":[{"message":"Type hint \"int\" missing for $attachment_id","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"136":{"8":[{"message":"Expected \"integer\" but found \"int\" for parameter type","source":"Squiz.Commenting.FunctionComment.IncorrectParamVarName","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"152":{"5":[{"message":"Expected \/\/end update_attachment_metadata()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"161":{"15":[{"message":"Type hint \"string\" missing for $file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"166":{"5":[{"message":"Expected \/\/end get_transliterated_file()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"175":{"8":[{"message":"Expected \"boolean|null\" but found \"bool|null\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"177":{"15":[{"message":"Type hint \"string\" missing for $file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $new_file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"189":{"5":[{"message":"Expected \/\/end rename_file()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"193":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"198":{"5":[{"message":"Expected \/\/end complete()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"209":{"5":[{"message":"Expected \/\/end filter_post_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":160}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":51}},"Multiple statements on same line":{"values":{"no":53}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":9}},"Function opening brace placement":{"values":{"same line":9}},"Spacing before object operator":{"values":[38]},"Spacing after object operator":{"values":[38]},"Space after operator":{"values":{"1":34}},"Adjacent assignments aligned":{"values":{"yes":7}},"Single line array - comma after last item":{"values":{"no":4}},"Short array syntax used":{"values":{"yes":4}},"Control structure defined inline":{"values":{"no":12}},"Space before operator":{"values":{"1":6}},"Spacing before string concat":{"values":{"1":21}},"Spacing after string concat":{"values":{"1":21}},"PHP constant case":{"values":{"lower":5}}},"errorCount":31,"warningCount":1,"fixableCount":18,"numTokens":1604},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-converter.php":{"hash":"c9557a1c97fbbde50d578055cda47a3033188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"287":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"83":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Settings\" missing for $settings","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Post_Conversion_Process\" missing for $process_all_posts","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Term_Conversion_Process\" missing for $process_all_terms","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Admin_Notices\" missing for $admin_notices","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"92":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"96":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"100":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"98":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"99":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"104":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"140":{"5":[{"message":"Expected \/\/end conversion_notices()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"110":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"144":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"151":{"5":[{"message":"Expected \/\/end start_conversion()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"155":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"166":{"5":[{"message":"Expected \/\/end process_handler()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"172":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"173":{"12":[{"message":"Type hint \"array\" missing for $args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"53":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"176":{"5":[{"message":"Expected \/\/end convert_existing_slugs()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"182":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"183":{"15":[{"message":"Type hint \"array\" missing for $args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"61":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"234":{"5":[{"message":"Expected \/\/end convert_existing_post_slugs()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"186":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"188":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"190":{"21":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"192":{"30":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"205":{"16":[{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false},{"message":"Variable \"$regexp\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false},{"message":"Variable \"$all_posts_sql\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false}]},"238":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"273":{"5":[{"message":"Expected \/\/end convert_existing_term_slugs()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"245":{"17":[{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false},{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false}]},"279":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"280":{"15":[{"message":"Type hint \"string\" missing for $message","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"286":{"5":[{"message":"Expected \/\/end log()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"13":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":226}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":59}},"Multiple statements on same line":{"values":{"no":59}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Constant name case":{"values":{"upper":2}},"Space after operator":{"values":{"1":36,"newline":1}},"Function has doc comment":{"values":{"yes":9}},"Function opening brace placement":{"values":{"same line":9}},"Spacing before object operator":{"values":[61]},"Spacing after object operator":{"values":[61]},"Adjacent assignments aligned":{"values":{"yes":3}},"Single line array - comma after last item":{"values":{"no":6}},"Short array syntax used":{"values":{"yes":9}},"Control structure defined inline":{"values":{"no":15}},"Space before operator":{"values":{"1":11}},"Spacing before string concat":{"values":{"1":11}},"Spacing after string concat":{"values":{"1":10,"newline":1}},"PHP constant case":{"values":{"lower":1}},"Multi-line array - comma after last item":{"values":{"yes":1}},"Spacing after cast statement":{"values":{"1":2}},"PHP type case":{"values":{"lower":2}}},"errorCount":41,"warningCount":2,"fixableCount":19,"numTokens":1811},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-requirements.php":{"hash":"0aac6da5549aea3fe4f18ccfad6437d533188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"235":{"5":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"46":{"16":[{"message":"Type hint \"Admin_Notices\" missing for $admin_notices","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"WP_Filesystem_Direct\" missing for $wp_filesystem","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"68":{"9":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"52":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"56":{"17":[{"message":"File is being conditionally included; use \"include_once\" instead","source":"PEAR.Files.IncludingFile.UseIncludeOnce","listener":"PHP_CodeSniffer\\Standards\\PEAR\\Sniffs\\Files\\IncludingFileSniff","severity":0,"fixable":true}]},"58":{"13":[{"message":"There must be no blank line following an inline comment","source":"Squiz.Commenting.InlineComment.SpacingAfter","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":true}]},"73":{"12":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"84":{"9":[{"message":"Expected \/\/end are_requirements_met()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"80":{"43":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"88":{"10":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"103":{"9":[{"message":"Expected \/\/end deactivate_plugin()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"108":{"12":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"121":{"9":[{"message":"Expected \/\/end is_php_version_required()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"112":{"17":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"126":{"12":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"169":{"9":[{"message":"Expected \/\/end is_max_input_vars_required()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"150":{"21":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"154":{"21":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"157":{"21":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"173":{"10":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"209":{"9":[{"message":"Expected \/\/end try_to_fix_max_input_vars()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"202":{"18":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"203":{"32":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"218":{"9":[{"message":"Expected \/\/end get_user_ini_filename()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"222":{"10":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"234":{"9":[{"message":"Expected \/\/end ask_to_increase_max_input_vars()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"232":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":186}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":58}},"Multiple statements on same line":{"values":{"no":58}},"Control structure defined inline":{"values":{"no":18}},"Space before operator":{"values":{"1":15}},"Space after operator":{"values":{"1":46}},"Spacing before string concat":{"values":{"1":5}},"Spacing after string concat":{"values":{"1":5}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":8}},"Function opening brace placement":{"values":{"same line":8}},"PHP constant case":{"values":{"lower":9}},"Spacing before object operator":{"values":[36]},"Spacing after object operator":{"values":[36]},"Assigning new by reference":{"values":{"no":2}},"Object instantiation with parenthesis":{"values":{"yes":2}},"Space between classname and parenthesis":{"values":[2]},"Single line array - comma after last item":{"values":{"no":4}},"Short array syntax used":{"values":{"yes":5}},"Adjacent assignments aligned":{"values":{"yes":6}},"Closure opening brace placement":{"values":{"same line":2}},"Spacing after cast statement":{"values":{"1":1}},"PHP type case":{"values":{"lower":1}}},"errorCount":29,"warningCount":1,"fixableCount":23,"numTokens":1711},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-main.php":{"hash":"0a502575997c4ba7233236ee1ca2ce4733188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"401":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"91":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"95":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"111":{"5":[{"message":"Expected \/\/end init()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"99":{"17":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"115":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"120":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"117":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"118":{"43":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"119":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"131":{"12":[{"message":"Type hint \"string\" missing for $title","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $raw_title","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $context","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"172":{"5":[{"message":"Expected \/\/end sanitize_title()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"162":{"60":[{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false}]},"179":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"181":{"15":[{"message":"Type hint \"string\" missing for $title","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"195":{"5":[{"message":"Expected \/\/end is_wc_attribute_taxonomy()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"205":{"12":[{"message":"Type hint \"string\" missing for $filename","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $filename_raw","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"217":{"5":[{"message":"Expected \/\/end sanitize_filename()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"226":{"13":[{"message":"Type hint \"string\" missing for $string","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"238":{"5":[{"message":"Expected \/\/end fix_mac_string()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"230":{"16":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"248":{"15":[{"message":"Type hint \"string\" missing for $string","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $table","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"265":{"5":[{"message":"Expected \/\/end split_chinese_string()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"274":{"5":[{"message":"Expected \/\/end get_filtered_table()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"283":{"12":[{"message":"Type hint \"string\" missing for $string","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"296":{"5":[{"message":"Expected \/\/end transliterate()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"303":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"313":{"5":[{"message":"Expected \/\/end is_classic_editor_plugin_active()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"310":{"9":[{"message":"There must be no blank line following an inline comment","source":"Squiz.Commenting.InlineComment.SpacingAfter","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":true}]},"321":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"343":{"5":[{"message":"Expected \/\/end is_gutenberg_editor_active()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"337":{"36":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"353":{"12":[{"message":"Type hint \"array\" missing for $data","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $postarr","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"59":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"373":{"5":[{"message":"Expected \/\/end sanitize_post_name()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"367":{"47":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"378":{"12":[{"message":"Tag value for @see tag indented incorrectly; expected 4 spaces but found 1","source":"Generic.Commenting.DocComment.TagValueIndent","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":true}]},"381":{"8":[{"message":"Parameter tags must be defined first in a doc comment","source":"Generic.Commenting.DocComment.ParamNotFirst","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":false},{"message":"Parameter comment must start with a capital letter","source":"Squiz.Commenting.FunctionComment.ParamCommentNotCapital","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"386":{"12":[{"message":"Type hint \"string\" missing for $format","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"382":{"8":[{"message":"Parameter comment must start with a capital letter","source":"Squiz.Commenting.FunctionComment.ParamCommentNotCapital","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"400":{"5":[{"message":"Expected \/\/end prepare_in()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":323}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":113}},"Multiple statements on same line":{"values":{"no":88}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":14}},"Function opening brace placement":{"values":{"same line":14}},"Spacing before object operator":{"values":[37]},"Spacing after object operator":{"values":[37]},"Space after operator":{"values":{"1":78,"newline":1}},"Adjacent assignments aligned":{"values":{"yes":9}},"Assigning new by reference":{"values":{"no":7}},"Object instantiation with parenthesis":{"values":{"yes":7}},"Space between classname and parenthesis":{"values":[7]},"Control structure defined inline":{"values":{"no":29}},"Space before operator":{"values":{"1":33,"newline":2}},"Single line array - comma after last item":{"values":{"no":5}},"Short array syntax used":{"values":{"yes":7}},"PHP constant case":{"values":{"lower":14}},"Spacing before string concat":{"values":{"1":3}},"Spacing after string concat":{"values":{"1":3}},"Spacing after cast statement":{"values":{"1":2}},"PHP type case":{"values":{"lower":2}}},"errorCount":49,"warningCount":1,"fixableCount":28,"numTokens":2697},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-settings.php":{"hash":"4d578d7810bfbad6cb1818d057503fb333188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"768":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"73":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"80":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"79":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"84":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"90":{"5":[{"message":"Expected \/\/end init()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"94":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"110":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"98":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"103":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"104":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"105":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"107":{"63":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"109":{"46":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"125":{"12":[{"message":"Type hint \"array\" missing for $actions","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $plugin_file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $plugin_data","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $context","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"134":{"5":[{"message":"Expected \/\/end add_settings_link()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"126":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"138":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"182":{"5":[{"message":"Expected \/\/end init_locales()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"144":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"145":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"148":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"151":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"154":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"157":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"160":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"163":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"166":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"169":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"172":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"175":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"178":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"193":{"5":[{"message":"Expected \/\/end get_current_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"197":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"218":{"5":[{"message":"Expected \/\/end init_form_fields()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"203":{"30":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"208":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"226":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"238":{"5":[{"message":"Expected \/\/end init_settings()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"251":{"5":[{"message":"Expected \/\/end get_form_fields()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"250":{"27":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"260":{"15":[{"message":"Type hint \"array\" missing for $field","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"266":{"5":[{"message":"Expected \/\/end set_defaults()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"270":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"279":{"5":[{"message":"Expected \/\/end add_settings_page()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"277":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"283":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"342":{"5":[{"message":"Expected \/\/end settings_page()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"346":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"360":{"5":[{"message":"Expected \/\/end setup_sections()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"356":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"366":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"367":{"12":[{"message":"Type hint \"array\" missing for $arguments","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"372":{"5":[{"message":"Expected \/\/end section_callback()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"376":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"399":{"5":[{"message":"Expected \/\/end setup_fields()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"393":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"405":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"406":{"12":[{"message":"Type hint \"array\" missing for $arguments","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"582":{"5":[{"message":"Expected \/\/end field_callback()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"439":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"462":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"463":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"464":{"46":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"466":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"467":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"468":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"469":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"470":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"471":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"473":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"496":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"497":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"498":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"499":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"529":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"530":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"531":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"532":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"592":{"12":[{"message":"Type hint \"string\" missing for $key","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"608":{"5":[{"message":"Expected \/\/end get_option()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"617":{"15":[{"message":"Type hint \"array\" missing for $field","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"619":{"5":[{"message":"Expected \/\/end get_field_default()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"626":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"627":{"12":[{"message":"Type hint \"string\" missing for $key","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"634":{"5":[{"message":"Expected \/\/end set_option()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"645":{"12":[{"message":"Type hint \"string\" missing for $option","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"669":{"5":[{"message":"Expected \/\/end pre_update_option_filter()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"673":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"693":{"5":[{"message":"Expected \/\/end admin_enqueue_scripts()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"682":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"690":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"697":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"704":{"5":[{"message":"Expected \/\/end load_plugin_textdomain()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"720":{"5":[{"message":"Expected \/\/end get_table()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"725":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"731":{"5":[{"message":"Expected \/\/end is_chinese_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"728":{"28":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"742":{"15":[{"message":"Type hint \"array\" missing for $table","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"756":{"5":[{"message":"Expected \/\/end transpose_chinese_table()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"747":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"761":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"767":{"5":[{"message":"Expected \/\/end is_options_screen()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"15":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":671}},"PHP short open tag used":{"values":{"no":53}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":196}},"Multiple statements on same line":{"values":{"no":139}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Constant name case":{"values":{"upper":4}},"Space after operator":{"values":{"1":156,"newline":1}},"Short array syntax used":{"values":{"yes":51}},"Function has doc comment":{"values":{"yes":26}},"Function opening brace placement":{"values":{"same line":26}},"Single line array - comma after last item":{"values":{"no":13}},"Spacing before object operator":{"values":[72]},"Spacing after object operator":{"values":[72]},"Spacing before string concat":{"values":{"1":18}},"Spacing after string concat":{"values":{"1":16,"newline":2}},"Multi-line array - comma after last item":{"values":{"yes":22}},"Control structure defined inline":{"values":{"no":40}},"Space before operator":{"values":{"1":43}},"PHP constant case":{"values":{"lower":10}},"Adjacent assignments aligned":{"values":{"yes":5}}},"errorCount":107,"warningCount":2,"fixableCount":80,"numTokens":5301},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-conversion-tables.php":{"hash":"789faca9a24f86a4633a1899259a582b33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"1226":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"24":{"8":[{"message":"Parameter tags must be defined first in a doc comment","source":"Generic.Commenting.DocComment.ParamNotFirst","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":false}]},"28":{"19":[{"message":"Type hint \"string\" missing for $locale","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"1198":{"5":[{"message":"Expected \/\/end get()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"32":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"101":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"172":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"248":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"315":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"381":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"436":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"520":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"563":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"667":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"714":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"1119":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"1225":{"5":[{"message":"Expected \/\/end get_fix_table_for_mac()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"1207":{"9":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"1219":{"16":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"15":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":1204}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":42}},"Multiple statements on same line":{"values":{"no":27}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":2}},"Function opening brace placement":{"values":{"same line":2}},"Control structure defined inline":{"values":{"no":4}},"Space after operator":{"values":{"1":1112}},"Multi-line array - comma after last item":{"values":{"yes":13}},"Short array syntax used":{"values":{"yes":13}},"Space before operator":{"values":{"1":3}},"Spacing before object operator":{"values":[3]},"Spacing after object operator":{"values":[3]}},"errorCount":21,"warningCount":2,"fixableCount":17,"numTokens":9463}}
|
cyr-to-lat.php
CHANGED
@@ -8,9 +8,9 @@
|
|
8 |
* Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
|
9 |
* Author URI: https://profiles.wordpress.org/sergeybiryukov/
|
10 |
* Requires at least: 5.1
|
11 |
-
* Tested up to: 5.
|
12 |
-
* Version: 4.5.
|
13 |
-
* Stable tag: 4.5.
|
14 |
*
|
15 |
* Text Domain: cyr2lat
|
16 |
* Domain Path: /languages/
|
@@ -34,7 +34,7 @@ if ( defined( 'CYR_TO_LAT_VERSION' ) ) {
|
|
34 |
/**
|
35 |
* Plugin version.
|
36 |
*/
|
37 |
-
define( 'CYR_TO_LAT_VERSION', '4.5.
|
38 |
|
39 |
/**
|
40 |
* Path to the plugin dir.
|
8 |
* Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
|
9 |
* Author URI: https://profiles.wordpress.org/sergeybiryukov/
|
10 |
* Requires at least: 5.1
|
11 |
+
* Tested up to: 5.6
|
12 |
+
* Version: 4.5.1
|
13 |
+
* Stable tag: 4.5.1
|
14 |
*
|
15 |
* Text Domain: cyr2lat
|
16 |
* Domain Path: /languages/
|
34 |
/**
|
35 |
* Plugin version.
|
36 |
*/
|
37 |
+
define( 'CYR_TO_LAT_VERSION', '4.5.1' );
|
38 |
|
39 |
/**
|
40 |
* Path to the plugin dir.
|
dist/js/settings/app.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){n(1),e.exports=n(2)},function(e,t){!function(e){"use strict";if(!e.fetch){var t="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),i="FormData"in e,s="ArrayBuffer"in e;if(s)var o=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=function(e){return e&&DataView.prototype.isPrototypeOf(e)},u=ArrayBuffer.isView||function(e){return e&&o.indexOf(Object.prototype.toString.call(e))>-1};p.prototype.append=function(e,t){e=d(e),t=h(t);var n=this.map[e];this.map[e]=n?n+","+t:t},p.prototype.delete=function(e){delete this.map[d(e)]},p.prototype.get=function(e){return e=d(e),this.has(e)?this.map[e]:null},p.prototype.has=function(e){return this.map.hasOwnProperty(d(e))},p.prototype.set=function(e,t){this.map[d(e)]=h(t)},p.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},p.prototype.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),f(e)},p.prototype.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),f(e)},p.prototype.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),f(e)},n&&(p.prototype[Symbol.iterator]=p.prototype.entries);var l=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];T.prototype.clone=function(){return new T(this,{body:this._bodyInit})},L.call(T.prototype),L.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var c=[301,302,303,307,308];E.redirect=function(e,t){if(-1===c.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},e.Headers=p,e.Request=T,e.Response=E,e.fetch=function(e,t){return new Promise((function(n,i){var s=new T(e,t),o=new XMLHttpRequest;o.onload=function(){var e,t,r={status:o.status,statusText:o.statusText,headers:(e=o.getAllResponseHeaders()||"",t=new p,e.split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();t.append(r,i)}})),t)};r.url="responseURL"in o?o.responseURL:r.headers.get("X-Request-URL");var i="response"in o?o.response:o.responseText;n(new E(i,r))},o.onerror=function(){i(new TypeError("Network request failed"))},o.ontimeout=function(){i(new TypeError("Network request failed"))},o.open(s.method,s.url,!0),"include"===s.credentials&&(o.withCredentials=!0),"responseType"in o&&r&&(o.responseType="blob"),s.headers.forEach((function(e,t){o.setRequestHeader(t,e)})),o.send(void 0===s._bodyInit?null:s._bodyInit)}))},e.fetch.polyfill=!0}function d(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function h(e){return"string"!=typeof e&&(e=String(e)),e}function f(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function y(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function b(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function v(e){var t=new FileReader,n=b(t);return t.readAsArrayBuffer(e),n}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function L(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,e)if("string"==typeof e)this._bodyText=e;else if(r&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(i&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(t&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString();else if(s&&r&&a(e))this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!s||!ArrayBuffer.prototype.isPrototypeOf(e)&&!u(e))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=m(e)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):t&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=y(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?y(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(v)}),this.text=function(){var e,t,n,r=y(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=b(t),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t.length;r++)n[r]=String.fromCharCode(t[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},i&&(this.formData=function(){return this.text().then(S)}),this.json=function(){return this.text().then(JSON.parse)},this}function T(e,t){var n,r,i=(t=t||{}).body;if(e instanceof T){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new p(e.headers)),this.method=e.method,this.mode=e.mode,i||null==e._bodyInit||(i=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new p(t.headers)),this.method=(n=t.method||this.method||"GET",r=n.toUpperCase(),l.indexOf(r)>-1?r:n),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function S(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}})),t}function E(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}}("undefined"!=typeof self?self:this)},function(e,t,n){"use strict";var r,i=n(3),s=(r=i)&&r.__esModule?r:{default:r};document.addEventListener("DOMContentLoaded",(function(){new s.default}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.OPTIONS_FORM_SELECTOR="#ctl-options",this.HEADER_SELECTOR=this.OPTIONS_FORM_SELECTOR+" h2",this.TABLE_SELECTOR=this.OPTIONS_FORM_SELECTOR+" table",this.SUBMIT_SELECTOR=this.OPTIONS_FORM_SELECTOR+" #submit",this.CURRENT_STUB_ID="ctl-current",this.CURRENT_NAV_TAB_CLASS="nav-tab-current",this.ACTIVE_NAV_TAB_CLASS="nav-tab-active",this.ACTIVE_TABLE_CLASS="active",this.EDIT_LABEL_ID="ctl-edit-label",this.EDIT_LABEL_ERROR_CLASS="ctl-edit-label-error",this.plusButton='<button type="button" aria-haspopup="true" aria-expanded="false" class="components-button block-editor-inserter__toggle has-icon" aria-label="Добавить блок"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 24 24" role="img" aria-hidden="true" focusable="false"><path d="M10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6zM10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6z"></path></svg></button>',this.PLUS_CLASS="ctl-plus",this.optionsForm=document.querySelector(this.OPTIONS_FORM_SELECTOR),this.tablesData=this.getTablesData(),this.submitButton=document.querySelector(this.SUBMIT_SELECTOR),this.addWrapper(),this.addMessageLines(),this.addEditLabelInput(),this.hideTables(),this.bindEvents(),this.setSubmitStatus()}return r(e,[{key:"getHeaders",value:function(){return[].concat(i(document.querySelectorAll(this.HEADER_SELECTOR)))}},{key:"getActiveHeader",value:function(){return document.querySelector(this.HEADER_SELECTOR+"."+this.ACTIVE_NAV_TAB_CLASS)}},{key:"getActiveIndex",value:function(){return this.getActiveHeader().dataset.index}},{key:"getTables",value:function(){return[].concat(i(document.querySelectorAll(this.TABLE_SELECTOR)))}},{key:"getActiveTable",value:function(){return document.querySelector(this.TABLE_SELECTOR+"."+this.ACTIVE_TABLE_CLASS)}},{key:"getInputs",value:function(){return[].concat(i(document.querySelectorAll(this.OPTIONS_FORM_SELECTOR+" input")))}},{key:"getLabels",value:function(){return[].concat(i(document.querySelectorAll(this.OPTIONS_FORM_SELECTOR+" label")))}},{key:"getPlusButtons",value:function(){return[].concat(i(document.querySelectorAll(this.OPTIONS_FORM_SELECTOR+" ."+this.PLUS_CLASS)))}},{key:"isActiveTableChanged",value:function(){var e=this.getActiveIndex();return JSON.stringify(this.getActiveTableData())!==JSON.stringify(this.tablesData[e])}},{key:"setSubmitStatus",value:function(){this.submitButton.disabled=!this.isActiveTableChanged()}},{key:"saveActiveTable",value:function(){var e=this;if(this.isActiveTableChanged()){var t=this.getActiveTable(),n=document.createElement("form");return n.action=this.optionsForm.getAttribute("action"),n.method=this.optionsForm.method,n.appendChild(t.cloneNode(!0)),[].concat(i(t.querySelectorAll("input"))).map((function(e){n.querySelector("#"+e.id).value=e.value})),[].concat(i(this.optionsForm.querySelectorAll('input[type="hidden"]'))).map((function(e){n.appendChild(e.cloneNode(!0))})),document.body.appendChild(n),fetch(this.optionsForm.getAttribute("action"),{method:n.method,body:new URLSearchParams([].concat(i(new FormData(n))))}).then((function(t){return t.ok?(e.showMessage(e.successMessage,"Options saved."),e.tablesData=e.getTablesData()):e.showMessage(e.errorMessage,"Error saving options."),t.json()})).finally((function(){n.remove(),e.setSubmitStatus()}))}}},{key:"getTableData",value:function(e){var t=this,n=[].concat(i(e.querySelectorAll("input"))),r={};return n.forEach((function(e){var n=document.querySelector(t.OPTIONS_FORM_SELECTOR+' label[for="'+e.id+'"]');r[n.innerHTML]=e.value})),r}},{key:"getTablesData",value:function(){var e=this;return this.getTables().map((function(t){return e.getTableData(t)}))}},{key:"getActiveTableData",value:function(){return this.getTableData(this.getActiveTable())}},{key:"addWrapper",value:function(){this.wrapper=document.createElement("ul"),this.wrapper.classList.add("nav-tab-wrapper"),this.optionsForm.prepend(this.wrapper)}},{key:"addMessageLine",value:function(e){var t=document.createElement("div");return t.id=e,this.optionsForm.prepend(t),t}},{key:"addMessageLines",value:function(){this.successMessage=this.addMessageLine("ctl-success"),this.errorMessage=this.addMessageLine("ctl-error")}},{key:"addEditLabelInput",value:function(){this.editLabelInput=document.createElement("input"),this.editLabelInput.id=this.EDIT_LABEL_ID,this.editLabelInput.style.display="none",document.body.appendChild(this.editLabelInput)}},{key:"hideEditLabelInput",value:function(){this.editLabelInput.style.display="none",this.editLabelInput.classList.remove(this.EDIT_LABEL_ERROR_CLASS),document.body.appendChild(this.editLabelInput)}},{key:"getLastCell",value:function(){return document.querySelector(this.OPTIONS_FORM_SELECTOR+" ."+this.ACTIVE_TABLE_CLASS+" ."+this.PLUS_CLASS).previousElementSibling}},{key:"addCell",value:function(){var e=this.getLastCell();e.parentElement.insertBefore(e.cloneNode(!0),e.nextElementSibling);var t=(e=this.getLastCell()).querySelector("label"),n=e.querySelector("input"),r=n.id.split("-"),i=r[0]+"-"+(parseInt(r[1])+1);t.htmlFor=i,t.innerHTML="",n.id=i,n.value="",n.setAttribute("value",""),this.replaceName(n,""),this.bindEvents(),this.editLabel(t)}},{key:"hideTables",value:function(){var e=this,t=0;this.getTables().map((function(n,r){n.classList.add("ctl-table"),e.CURRENT_STUB_ID===n.previousElementSibling.id&&(t=r,n.classList.add(e.ACTIVE_TABLE_CLASS));var i=document.createElement("div");i.classList.add(e.PLUS_CLASS),i.innerHTML=e.plusButton,n.querySelector("td").appendChild(i)})),this.getHeaders().map((function(n,r){n.classList.add("nav-tab"),n.dataset.index=r,e.wrapper.appendChild(n),r===t&&n.classList.add(e.CURRENT_NAV_TAB_CLASS,e.ACTIVE_NAV_TAB_CLASS)}))}},{key:"bindEvents",value:function(){var e=this;this.getHeaders().map((function(t,n,r){t.onclick=function(t){t.preventDefault();var n=t.target.dataset.index;if(n===e.getActiveIndex())return!1;e.saveActiveTable(),r.map((function(t){t.classList.remove(e.ACTIVE_NAV_TAB_CLASS)})),r[n].classList.add(e.ACTIVE_NAV_TAB_CLASS);var i=e.getTables();return i.map((function(t){t.classList.remove(e.ACTIVE_TABLE_CLASS)})),i[n].classList.add(e.ACTIVE_TABLE_CLASS),e.setSubmitStatus(),!1}})),this.getInputs().map((function(t){t.oninput=function(){e.setSubmitStatus()}})),this.getLabels().map((function(t){t.onclick=function(t){return t.preventDefault(),e.editLabel(t.target),!1}})),this.editLabelInput.onblur=function(){e.saveLabel()},this.editLabelInput.onkeyup=function(t){"Escape"===t.key&&e.saveLabel(!0),"Enter"===t.key&&e.saveLabel()},this.getPlusButtons().map((function(t){t.onclick=function(t){return t.preventDefault(),e.addCell(t.target),!1}})),document.querySelector(this.SUBMIT_SELECTOR).onclick=function(t){return t.preventDefault(),e.saveActiveTable(),!1}}},{key:"editLabel",value:function(e){e.parentNode.appendChild(this.editLabelInput),this.editLabelInput.value=e.innerHTML,this.editLabelInput.classList.remove(this.EDIT_LABEL_ERROR_CLASS),this.editLabelInput.style.display="block",this.editLabelInput.focus()}},{key:"isUniqueLabel",value:function(e){return[].concat(i(this.getActiveTable().querySelectorAll("label"))).reduce((function(t,n){return t&&n.innerHTML!==e}),!0)}},{key:"saveLabel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("none"!==this.editLabelInput.style.display){var t=this.editLabelInput.value.trim(),n=this.editLabelInput.parentNode.querySelector("label"),r=this.editLabelInput.parentNode.querySelector("input");if(""===t){var i=document.getElementById(this.EDIT_LABEL_ID).parentElement;return this.hideEditLabelInput(),i.remove(),void this.setSubmitStatus()}e||t===n.innerHTML?this.hideEditLabelInput():this.isUniqueLabel(t)?(this.hideEditLabelInput(),n.innerHTML=t,this.replaceName(r,t),this.setSubmitStatus()):this.editLabelInput.classList.add(this.EDIT_LABEL_ERROR_CLASS)}}},{key:"replaceName",value:function(e,t){e.name=e.name.replace(/(.+\[.+])\[.*]/g,"$1["+t+"]")}},{key:"clearMessage",value:function(e){e.innerHTML="",e.classList.remove("active")}},{key:"clearMessages",value:function(){this.clearMessage(this.successMessage),this.clearMessage(this.errorMessage),clearTimeout(this.msgTimer)}},{key:"showMessage",value:function(e,t){var n=this;e.innerHTML=t,e.classList.add("active"),this.msgTimer=setTimeout((function(){n.clearMessages()}),5e3)}}]),e}();t.default=s}]);
|
|
languages/cyr2lat-ru_RU.mo
CHANGED
Binary file
|
languages/cyr2lat-ru_RU.po
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Cyr To Lat\n"
|
4 |
-
"POT-Creation-Date: 2020-
|
5 |
-
"PO-Revision-Date: 2020-
|
6 |
"Last-Translator: KAGG Design <info@kagg.eu>\n"
|
7 |
"Language-Team: KAGG Design\n"
|
8 |
"Language: ru_RU\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 2.3\n"
|
13 |
"X-Poedit-Basepath: ..\n"
|
14 |
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
|
@@ -32,7 +32,23 @@ msgstr ""
|
|
32 |
msgid "Post slug converted:"
|
33 |
msgstr "Ярлык поста сконвертирован:"
|
34 |
|
35 |
-
#: classes/background-processes/class-post-conversion-process.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
msgid "Post slugs conversion completed."
|
37 |
msgstr "Конвертация ярлыков постов завершена."
|
38 |
|
@@ -44,47 +60,47 @@ msgstr "Ярлык термина сконвертирован:"
|
|
44 |
msgid "Term slugs conversion completed."
|
45 |
msgstr "Конвертация ярлыков терминов завершена."
|
46 |
|
47 |
-
#: classes/class-converter.php:
|
48 |
msgid "Cyr To Lat converts existing post slugs in the background process."
|
49 |
msgstr "Cyr To Lat конвертирует существующие ярлыки постов в фоновом процессе."
|
50 |
|
51 |
-
#: classes/class-converter.php:
|
52 |
msgid "Cyr To Lat converts existing term slugs in the background process."
|
53 |
msgstr ""
|
54 |
"Cyr To Lat конвертирует существующие ярлыки терминов в фоновом процессе."
|
55 |
|
56 |
-
#: classes/class-converter.php:
|
57 |
msgid "Cyr To Lat completed conversion of existing post slugs."
|
58 |
msgstr "Cyr To Lat завершил конвертацию существующих ярлыков постов."
|
59 |
|
60 |
-
#: classes/class-converter.php:
|
61 |
msgid "Cyr To Lat completed conversion of existing term slugs."
|
62 |
msgstr "Cyr To Lat завершил конвертацию существующих ярлыков терминов."
|
63 |
|
64 |
-
#: classes/class-converter.php:
|
|
|
|
|
|
|
|
|
65 |
msgid "Post slugs conversion started."
|
66 |
msgstr "Начата конвертация ярлыков постов."
|
67 |
|
68 |
-
#: classes/class-converter.php:
|
69 |
msgid "Cyr To Lat started conversion of existing post slugs."
|
70 |
msgstr "Cyr To Lat начал конвертацию существующих ярлыков постов."
|
71 |
|
72 |
-
#: classes/class-converter.php:
|
73 |
-
msgid "Cyr To Lat has not found existing
|
74 |
-
msgstr "Cyr To Lat не нашёл существующих ярлыков
|
75 |
|
76 |
-
#: classes/class-converter.php:
|
77 |
msgid "Term slugs conversion started."
|
78 |
msgstr "Начата конвертация ярлыков терминов."
|
79 |
|
80 |
-
#: classes/class-converter.php:
|
81 |
msgid "Cyr To Lat started conversion of existing term slugs."
|
82 |
msgstr "Cyr To Lat начал конвертацию существующих ярлыков терминов."
|
83 |
|
84 |
-
#: classes/class-converter.php:234
|
85 |
-
msgid "Cyr To Lat has not found existing term slugs for conversion."
|
86 |
-
msgstr "Cyr To Lat не нашёл существующих ярлыков терминов для конвертации."
|
87 |
-
|
88 |
#: classes/class-requirements.php:99
|
89 |
msgid "Cyr To Lat plugin has been deactivated."
|
90 |
msgstr "Плагин Cyr To Lat был деактивирован."
|
@@ -137,87 +153,95 @@ msgstr ""
|
|
137 |
"См.: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
|
138 |
"target=\"_blank\">Увеличение лимита max input vars.</a>"
|
139 |
|
140 |
-
#: classes/class-settings.php:
|
141 |
msgid "View Cyr To Lat settings"
|
142 |
msgstr "Посмотреть настройки Cyr To Lat"
|
143 |
|
144 |
-
#: classes/class-settings.php:
|
145 |
msgid "Settings"
|
146 |
msgstr "Настройки"
|
147 |
|
148 |
-
#: classes/class-settings.php:
|
149 |
msgid "ISO9 Table"
|
150 |
msgstr "Таблица ISO9"
|
151 |
|
152 |
-
#: classes/class-settings.php:
|
153 |
msgid "bel Table"
|
154 |
msgstr "Таблица bel"
|
155 |
|
156 |
-
#: classes/class-settings.php:
|
157 |
msgid "uk Table"
|
158 |
msgstr "Таблица uk"
|
159 |
|
160 |
-
#: classes/class-settings.php:
|
161 |
msgid "bg_BG Table"
|
162 |
msgstr "Таблица bg_BG"
|
163 |
|
164 |
-
#: classes/class-settings.php:
|
165 |
msgid "mk_MK Table"
|
166 |
msgstr "Таблица mk_MK"
|
167 |
|
168 |
-
#: classes/class-settings.php:
|
169 |
msgid "sr_RS Table"
|
170 |
msgstr "Таблица sr_RS"
|
171 |
|
172 |
-
#: classes/class-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
msgid "ka_GE Table"
|
174 |
msgstr "Таблица ka_GE"
|
175 |
|
176 |
-
#: classes/class-settings.php:
|
177 |
msgid "kk Table"
|
178 |
msgstr "Таблица kk"
|
179 |
|
180 |
-
#: classes/class-settings.php:
|
181 |
msgid "he_IL Table"
|
182 |
msgstr "Таблица he_IL"
|
183 |
|
184 |
-
#: classes/class-settings.php:
|
185 |
msgid "zh_CN Table"
|
186 |
msgstr "Таблица zh_CN"
|
187 |
|
188 |
-
#: classes/class-settings.php:
|
|
|
|
|
|
|
|
|
189 |
msgid "Cyr To Lat"
|
190 |
msgstr "Cyr To Lat"
|
191 |
|
192 |
#. Admin panel title.
|
193 |
-
#: classes/class-settings.php:
|
194 |
msgid "Cyr To Lat Plugin Options"
|
195 |
msgstr "Опции плагина Cyr To Lat"
|
196 |
|
197 |
-
#: classes/class-settings.php:
|
198 |
msgid "Convert Existing Slugs"
|
199 |
msgstr "Конвертировать существующие ярлыки"
|
200 |
|
201 |
-
#: classes/class-settings.php:
|
202 |
msgid "Donate"
|
203 |
msgstr "Пожертвовать"
|
204 |
|
205 |
-
#: classes/class-settings.php:
|
206 |
msgid "Would you like to support the advancement of this plugin?"
|
207 |
msgstr "Хотите поддержать развитие этого плагина?"
|
208 |
|
209 |
-
#: classes/class-settings.php:
|
210 |
msgid "Your appreciation"
|
211 |
msgstr "Ваша оценка"
|
212 |
|
213 |
-
#: classes/class-settings.php:
|
214 |
msgid "Leave a ★★★★★ plugin review on WordPress.org"
|
215 |
msgstr "Оставьте ★★★★★ обзор плагина на WordPress.org"
|
216 |
|
217 |
-
#: classes/class-settings.php:363
|
218 |
-
msgid "(current)"
|
219 |
-
msgstr "(текущая)"
|
220 |
-
|
221 |
#. translators: %d: cron interval
|
222 |
#: lib/wp-background-processing/class-wp-background-process.php:399
|
223 |
#, php-format
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Cyr To Lat\n"
|
4 |
+
"POT-Creation-Date: 2020-05-19 22:53+0300\n"
|
5 |
+
"PO-Revision-Date: 2020-05-19 22:55+0300\n"
|
6 |
"Last-Translator: KAGG Design <info@kagg.eu>\n"
|
7 |
"Language-Team: KAGG Design\n"
|
8 |
"Language: ru_RU\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.3.1\n"
|
13 |
"X-Poedit-Basepath: ..\n"
|
14 |
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
|
32 |
msgid "Post slug converted:"
|
33 |
msgstr "Ярлык поста сконвертирован:"
|
34 |
|
35 |
+
#: classes/background-processes/class-post-conversion-process.php:101
|
36 |
+
msgid "Attachment file converted:"
|
37 |
+
msgstr "Файл вложения сконвертирован:"
|
38 |
+
|
39 |
+
#: classes/background-processes/class-post-conversion-process.php:107
|
40 |
+
msgid "Cannot convert attachment file for attachment id:"
|
41 |
+
msgstr "Невозможно сконвертировать файл вложения для вложения с id:"
|
42 |
+
|
43 |
+
#: classes/background-processes/class-post-conversion-process.php:125
|
44 |
+
msgid "Thumbnail file renamed:"
|
45 |
+
msgstr "Файл миниатюры переименован:"
|
46 |
+
|
47 |
+
#: classes/background-processes/class-post-conversion-process.php:128
|
48 |
+
msgid "Cannot rename thumbnail file:"
|
49 |
+
msgstr "Невозможно переименовать файл миниатюры:"
|
50 |
+
|
51 |
+
#: classes/background-processes/class-post-conversion-process.php:197
|
52 |
msgid "Post slugs conversion completed."
|
53 |
msgstr "Конвертация ярлыков постов завершена."
|
54 |
|
60 |
msgid "Term slugs conversion completed."
|
61 |
msgstr "Конвертация ярлыков терминов завершена."
|
62 |
|
63 |
+
#: classes/class-converter.php:115
|
64 |
msgid "Cyr To Lat converts existing post slugs in the background process."
|
65 |
msgstr "Cyr To Lat конвертирует существующие ярлыки постов в фоновом процессе."
|
66 |
|
67 |
+
#: classes/class-converter.php:122
|
68 |
msgid "Cyr To Lat converts existing term slugs in the background process."
|
69 |
msgstr ""
|
70 |
"Cyr To Lat конвертирует существующие ярлыки терминов в фоновом процессе."
|
71 |
|
72 |
+
#: classes/class-converter.php:129
|
73 |
msgid "Cyr To Lat completed conversion of existing post slugs."
|
74 |
msgstr "Cyr To Lat завершил конвертацию существующих ярлыков постов."
|
75 |
|
76 |
+
#: classes/class-converter.php:136
|
77 |
msgid "Cyr To Lat completed conversion of existing term slugs."
|
78 |
msgstr "Cyr To Lat завершил конвертацию существующих ярлыков терминов."
|
79 |
|
80 |
+
#: classes/class-converter.php:214
|
81 |
+
msgid "Cyr To Lat has not found existing post slugs for conversion."
|
82 |
+
msgstr "Cyr To Lat не нашёл существующих ярлыков постов для конвертации."
|
83 |
+
|
84 |
+
#: classes/class-converter.php:226
|
85 |
msgid "Post slugs conversion started."
|
86 |
msgstr "Начата конвертация ярлыков постов."
|
87 |
|
88 |
+
#: classes/class-converter.php:228
|
89 |
msgid "Cyr To Lat started conversion of existing post slugs."
|
90 |
msgstr "Cyr To Lat начал конвертацию существующих ярлыков постов."
|
91 |
|
92 |
+
#: classes/class-converter.php:253
|
93 |
+
msgid "Cyr To Lat has not found existing term slugs for conversion."
|
94 |
+
msgstr "Cyr To Lat не нашёл существующих ярлыков терминов для конвертации."
|
95 |
|
96 |
+
#: classes/class-converter.php:265
|
97 |
msgid "Term slugs conversion started."
|
98 |
msgstr "Начата конвертация ярлыков терминов."
|
99 |
|
100 |
+
#: classes/class-converter.php:267
|
101 |
msgid "Cyr To Lat started conversion of existing term slugs."
|
102 |
msgstr "Cyr To Lat начал конвертацию существующих ярлыков терминов."
|
103 |
|
|
|
|
|
|
|
|
|
104 |
#: classes/class-requirements.php:99
|
105 |
msgid "Cyr To Lat plugin has been deactivated."
|
106 |
msgstr "Плагин Cyr To Lat был деактивирован."
|
153 |
"См.: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
|
154 |
"target=\"_blank\">Увеличение лимита max input vars.</a>"
|
155 |
|
156 |
+
#: classes/class-settings.php:129
|
157 |
msgid "View Cyr To Lat settings"
|
158 |
msgstr "Посмотреть настройки Cyr To Lat"
|
159 |
|
160 |
+
#: classes/class-settings.php:130
|
161 |
msgid "Settings"
|
162 |
msgstr "Настройки"
|
163 |
|
164 |
+
#: classes/class-settings.php:146
|
165 |
msgid "ISO9 Table"
|
166 |
msgstr "Таблица ISO9"
|
167 |
|
168 |
+
#: classes/class-settings.php:149
|
169 |
msgid "bel Table"
|
170 |
msgstr "Таблица bel"
|
171 |
|
172 |
+
#: classes/class-settings.php:152
|
173 |
msgid "uk Table"
|
174 |
msgstr "Таблица uk"
|
175 |
|
176 |
+
#: classes/class-settings.php:155
|
177 |
msgid "bg_BG Table"
|
178 |
msgstr "Таблица bg_BG"
|
179 |
|
180 |
+
#: classes/class-settings.php:158
|
181 |
msgid "mk_MK Table"
|
182 |
msgstr "Таблица mk_MK"
|
183 |
|
184 |
+
#: classes/class-settings.php:161
|
185 |
msgid "sr_RS Table"
|
186 |
msgstr "Таблица sr_RS"
|
187 |
|
188 |
+
#: classes/class-settings.php:164
|
189 |
+
msgid "el Table"
|
190 |
+
msgstr "Таблица el"
|
191 |
+
|
192 |
+
#: classes/class-settings.php:167
|
193 |
+
msgid "hy Table"
|
194 |
+
msgstr "Таблица hy"
|
195 |
+
|
196 |
+
#: classes/class-settings.php:170
|
197 |
msgid "ka_GE Table"
|
198 |
msgstr "Таблица ka_GE"
|
199 |
|
200 |
+
#: classes/class-settings.php:173
|
201 |
msgid "kk Table"
|
202 |
msgstr "Таблица kk"
|
203 |
|
204 |
+
#: classes/class-settings.php:176
|
205 |
msgid "he_IL Table"
|
206 |
msgstr "Таблица he_IL"
|
207 |
|
208 |
+
#: classes/class-settings.php:179
|
209 |
msgid "zh_CN Table"
|
210 |
msgstr "Таблица zh_CN"
|
211 |
|
212 |
+
#: classes/class-settings.php:206
|
213 |
+
msgid "(current)"
|
214 |
+
msgstr "(текущая)"
|
215 |
+
|
216 |
+
#: classes/class-settings.php:273 classes/class-settings.php:274
|
217 |
msgid "Cyr To Lat"
|
218 |
msgstr "Cyr To Lat"
|
219 |
|
220 |
#. Admin panel title.
|
221 |
+
#: classes/class-settings.php:294
|
222 |
msgid "Cyr To Lat Plugin Options"
|
223 |
msgstr "Опции плагина Cyr To Lat"
|
224 |
|
225 |
+
#: classes/class-settings.php:309
|
226 |
msgid "Convert Existing Slugs"
|
227 |
msgstr "Конвертировать существующие ярлыки"
|
228 |
|
229 |
+
#: classes/class-settings.php:315
|
230 |
msgid "Donate"
|
231 |
msgstr "Пожертвовать"
|
232 |
|
233 |
+
#: classes/class-settings.php:318
|
234 |
msgid "Would you like to support the advancement of this plugin?"
|
235 |
msgstr "Хотите поддержать развитие этого плагина?"
|
236 |
|
237 |
+
#: classes/class-settings.php:332
|
238 |
msgid "Your appreciation"
|
239 |
msgstr "Ваша оценка"
|
240 |
|
241 |
+
#: classes/class-settings.php:337
|
242 |
msgid "Leave a ★★★★★ plugin review on WordPress.org"
|
243 |
msgstr "Оставьте ★★★★★ обзор плагина на WordPress.org"
|
244 |
|
|
|
|
|
|
|
|
|
245 |
#. translators: %d: cron interval
|
246 |
#: lib/wp-background-processing/class-wp-background-process.php:399
|
247 |
#, php-format
|
languages/cyr2lat-sv.mo
CHANGED
Binary file
|
languages/cyr2lat-uk.mo
CHANGED
Binary file
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: SergeyBiryukov, mihdan, karevn, webvitaly, kaggdesign
|
3 |
Tags: cyrillic, belorussian, ukrainian, bulgarian, macedonian, georgian, kazakh, latin, l10n, russian, cyr-to-lat, cyr2lat, rustolat, slugs, translations, transliteration
|
4 |
Requires at least: 5.1
|
5 |
-
Tested up to: 5.
|
6 |
-
Stable tag: 4.5.
|
7 |
Requires PHP: 5.6.20
|
8 |
|
9 |
Converts Cyrillic characters in post, page and term slugs to Latin characters.
|
@@ -99,6 +99,10 @@ Yes you can!
|
|
99 |
|
100 |
== Changelog ==
|
101 |
|
|
|
|
|
|
|
|
|
102 |
= 4.5.0 (18.05.2020) =
|
103 |
* Added Greek and Armenian languages
|
104 |
* Added background conversion of attachments and thumbnails
|
2 |
Contributors: SergeyBiryukov, mihdan, karevn, webvitaly, kaggdesign
|
3 |
Tags: cyrillic, belorussian, ukrainian, bulgarian, macedonian, georgian, kazakh, latin, l10n, russian, cyr-to-lat, cyr2lat, rustolat, slugs, translations, transliteration
|
4 |
Requires at least: 5.1
|
5 |
+
Tested up to: 5.6
|
6 |
+
Stable tag: 4.5.1
|
7 |
Requires PHP: 5.6.20
|
8 |
|
9 |
Converts Cyrillic characters in post, page and term slugs to Latin characters.
|
99 |
|
100 |
== Changelog ==
|
101 |
|
102 |
+
= 4.5.1 (07.12.2020) =
|
103 |
+
* Tested up to WordPress 5.6
|
104 |
+
* Tested on PHP 5.6 - 8.0
|
105 |
+
|
106 |
= 4.5.0 (18.05.2020) =
|
107 |
* Added Greek and Armenian languages
|
108 |
* Added background conversion of attachments and thumbnails
|
vendor/10up/wp_mock/.gitmodules
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
|
vendor/10up/wp_mock/CONTRIBUTING.md
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Contributing
|
2 |
+
|
3 |
+
Contributions are **welcome** and will be fully **credited**.
|
4 |
+
|
5 |
+
We accept contributions via Pull Requests on [Github](https://github.com/10up/wp_mock)
|
6 |
+
|
7 |
+
## Branches
|
8 |
+
|
9 |
+
* We try to follow [SemVer](http://semver.org/) in WP Mock
|
10 |
+
* The current minor version lives on the **master** branch. Until a new minor (or major) version is released, the master branch will be aliased to appear as the dev package of the current minor version in Packagist (e.g. if the current minor version is `1.0`, master will be aliased to `1.0.x-dev`).
|
11 |
+
* The development release lives on the **dev** branch. Until it is officially released, the dev branch will be aliased to appear as the dev package of the next minor version in Packagist (e.g. if the next minor version is `1.2`, the dev branch will be aliased to `1.2.x-dev`).
|
12 |
+
* Old minor versions will live in their own version branch (e.g. if the current minor version is `1.2`, the `1.1` major version will live in a `1.1` branch
|
13 |
+
|
14 |
+
## Pull Requests
|
15 |
+
|
16 |
+
* New features must be submitted against the **dev** branch
|
17 |
+
* Bug fixes should be submitted against the branch in which the bug exists. If the bug exists in multiple releases, please submit the Pull Request against the most recent branch and make a note of which other major versions need the fix (e.g. if the bug exists in all versions, submit against dev; if it no longer exists in dev, submit against master). Please do not open multiple pull requests for the same fix against different branches.
|
18 |
+
* If you're not sure whether a feature idea would be something we'd be interested in, please open an issue before you start working on it. We'd be happy to discuss your idea with you.
|
19 |
+
|
20 |
+
## Tests
|
21 |
+
|
22 |
+
We know. We're kind of working on it. Want to start writing them for us? :D
|
23 |
+
|
24 |
+
## Thanks
|
25 |
+
|
26 |
+
**You're awesome** - Thanks for being interested in contributing your time and code to this project!
|
vendor/10up/wp_mock/LICENSE.md
ADDED
@@ -0,0 +1,368 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
WP_Mock - WordPress API Mocking Framework
|
2 |
+
|
3 |
+
Copyright 2013-2017 by the contributors
|
4 |
+
|
5 |
+
This program is free software; you can redistribute it and/or modify
|
6 |
+
it under the terms of the GNU General Public License as published by
|
7 |
+
the Free Software Foundation; either version 2 of the License, or
|
8 |
+
(at your option) any later version.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
GNU General Public License for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the GNU General Public License
|
16 |
+
along with this program; if not, write to the Free Software
|
17 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
18 |
+
|
19 |
+
This program incorporates work covered by the following copyright and
|
20 |
+
permission notices:
|
21 |
+
|
22 |
+
WordPress - Web publishing software
|
23 |
+
|
24 |
+
Copyright 2003-2017 by the contributors
|
25 |
+
|
26 |
+
WordPress is released under the GPL
|
27 |
+
|
28 |
+
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
29 |
+
|
30 |
+
GNU GENERAL PUBLIC LICENSE
|
31 |
+
Version 2, June 1991
|
32 |
+
|
33 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
34 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
35 |
+
Everyone is permitted to copy and distribute verbatim copies
|
36 |
+
of this license document, but changing it is not allowed.
|
37 |
+
|
38 |
+
Preamble
|
39 |
+
|
40 |
+
The licenses for most software are designed to take away your
|
41 |
+
freedom to share and change it. By contrast, the GNU General Public
|
42 |
+
License is intended to guarantee your freedom to share and change free
|
43 |
+
software--to make sure the software is free for all its users. This
|
44 |
+
General Public License applies to most of the Free Software
|
45 |
+
Foundation's software and to any other program whose authors commit to
|
46 |
+
using it. (Some other Free Software Foundation software is covered by
|
47 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
48 |
+
your programs, too.
|
49 |
+
|
50 |
+
When we speak of free software, we are referring to freedom, not
|
51 |
+
price. Our General Public Licenses are designed to make sure that you
|
52 |
+
have the freedom to distribute copies of free software (and charge for
|
53 |
+
this service if you wish), that you receive source code or can get it
|
54 |
+
if you want it, that you can change the software or use pieces of it
|
55 |
+
in new free programs; and that you know you can do these things.
|
56 |
+
|
57 |
+
To protect your rights, we need to make restrictions that forbid
|
58 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
59 |
+
These restrictions translate to certain responsibilities for you if you
|
60 |
+
distribute copies of the software, or if you modify it.
|
61 |
+
|
62 |
+
For example, if you distribute copies of such a program, whether
|
63 |
+
gratis or for a fee, you must give the recipients all the rights that
|
64 |
+
you have. You must make sure that they, too, receive or can get the
|
65 |
+
source code. And you must show them these terms so they know their
|
66 |
+
rights.
|
67 |
+
|
68 |
+
We protect your rights with two steps: (1) copyright the software, and
|
69 |
+
(2) offer you this license which gives you legal permission to copy,
|
70 |
+
distribute and/or modify the software.
|
71 |
+
|
72 |
+
Also, for each author's protection and ours, we want to make certain
|
73 |
+
that everyone understands that there is no warranty for this free
|
74 |
+
software. If the software is modified by someone else and passed on, we
|
75 |
+
want its recipients to know that what they have is not the original, so
|
76 |
+
that any problems introduced by others will not reflect on the original
|
77 |
+
authors' reputations.
|
78 |
+
|
79 |
+
Finally, any free program is threatened constantly by software
|
80 |
+
patents. We wish to avoid the danger that redistributors of a free
|
81 |
+
program will individually obtain patent licenses, in effect making the
|
82 |
+
program proprietary. To prevent this, we have made it clear that any
|
83 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
84 |
+
|
85 |
+
The precise terms and conditions for copying, distribution and
|
86 |
+
modification follow.
|
87 |
+
|
88 |
+
GNU GENERAL PUBLIC LICENSE
|
89 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
90 |
+
|
91 |
+
0. This License applies to any program or other work which contains
|
92 |
+
a notice placed by the copyright holder saying it may be distributed
|
93 |
+
under the terms of this General Public License. The "Program", below,
|
94 |
+
refers to any such program or work, and a "work based on the Program"
|
95 |
+
means either the Program or any derivative work under copyright law:
|
96 |
+
that is to say, a work containing the Program or a portion of it,
|
97 |
+
either verbatim or with modifications and/or translated into another
|
98 |
+
language. (Hereinafter, translation is included without limitation in
|
99 |
+
the term "modification".) Each licensee is addressed as "you".
|
100 |
+
|
101 |
+
Activities other than copying, distribution and modification are not
|
102 |
+
covered by this License; they are outside its scope. The act of
|
103 |
+
running the Program is not restricted, and the output from the Program
|
104 |
+
is covered only if its contents constitute a work based on the
|
105 |
+
Program (independent of having been made by running the Program).
|
106 |
+
Whether that is true depends on what the Program does.
|
107 |
+
|
108 |
+
1. You may copy and distribute verbatim copies of the Program's
|
109 |
+
source code as you receive it, in any medium, provided that you
|
110 |
+
conspicuously and appropriately publish on each copy an appropriate
|
111 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
112 |
+
notices that refer to this License and to the absence of any warranty;
|
113 |
+
and give any other recipients of the Program a copy of this License
|
114 |
+
along with the Program.
|
115 |
+
|
116 |
+
You may charge a fee for the physical act of transferring a copy, and
|
117 |
+
you may at your option offer warranty protection in exchange for a fee.
|
118 |
+
|
119 |
+
2. You may modify your copy or copies of the Program or any portion
|
120 |
+
of it, thus forming a work based on the Program, and copy and
|
121 |
+
distribute such modifications or work under the terms of Section 1
|
122 |
+
above, provided that you also meet all of these conditions:
|
123 |
+
|
124 |
+
a) You must cause the modified files to carry prominent notices
|
125 |
+
stating that you changed the files and the date of any change.
|
126 |
+
|
127 |
+
b) You must cause any work that you distribute or publish, that in
|
128 |
+
whole or in part contains or is derived from the Program or any
|
129 |
+
part thereof, to be licensed as a whole at no charge to all third
|
130 |
+
parties under the terms of this License.
|
131 |
+
|
132 |
+
c) If the modified program normally reads commands interactively
|
133 |
+
when run, you must cause it, when started running for such
|
134 |
+
interactive use in the most ordinary way, to print or display an
|
135 |
+
announcement including an appropriate copyright notice and a
|
136 |
+
notice that there is no warranty (or else, saying that you provide
|
137 |
+
a warranty) and that users may redistribute the program under
|
138 |
+
these conditions, and telling the user how to view a copy of this
|
139 |
+
License. (Exception: if the Program itself is interactive but
|
140 |
+
does not normally print such an announcement, your work based on
|
141 |
+
the Program is not required to print an announcement.)
|
142 |
+
|
143 |
+
These requirements apply to the modified work as a whole. If
|
144 |
+
identifiable sections of that work are not derived from the Program,
|
145 |
+
and can be reasonably considered independent and separate works in
|
146 |
+
themselves, then this License, and its terms, do not apply to those
|
147 |
+
sections when you distribute them as separate works. But when you
|
148 |
+
distribute the same sections as part of a whole which is a work based
|
149 |
+
on the Program, the distribution of the whole must be on the terms of
|
150 |
+
this License, whose permissions for other licensees extend to the
|
151 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
152 |
+
|
153 |
+
Thus, it is not the intent of this section to claim rights or contest
|
154 |
+
your rights to work written entirely by you; rather, the intent is to
|
155 |
+
exercise the right to control the distribution of derivative or
|
156 |
+
collective works based on the Program.
|
157 |
+
|
158 |
+
In addition, mere aggregation of another work not based on the Program
|
159 |
+
with the Program (or with a work based on the Program) on a volume of
|
160 |
+
a storage or distribution medium does not bring the other work under
|
161 |
+
the scope of this License.
|
162 |
+
|
163 |
+
3. You may copy and distribute the Program (or a work based on it,
|
164 |
+
under Section 2) in object code or executable form under the terms of
|
165 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
166 |
+
|
167 |
+
a) Accompany it with the complete corresponding machine-readable
|
168 |
+
source code, which must be distributed under the terms of Sections
|
169 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
170 |
+
|
171 |
+
b) Accompany it with a written offer, valid for at least three
|
172 |
+
years, to give any third party, for a charge no more than your
|
173 |
+
cost of physically performing source distribution, a complete
|
174 |
+
machine-readable copy of the corresponding source code, to be
|
175 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
176 |
+
customarily used for software interchange; or,
|
177 |
+
|
178 |
+
c) Accompany it with the information you received as to the offer
|
179 |
+
to distribute corresponding source code. (This alternative is
|
180 |
+
allowed only for noncommercial distribution and only if you
|
181 |
+
received the program in object code or executable form with such
|
182 |
+
an offer, in accord with Subsection b above.)
|
183 |
+
|
184 |
+
The source code for a work means the preferred form of the work for
|
185 |
+
making modifications to it. For an executable work, complete source
|
186 |
+
code means all the source code for all modules it contains, plus any
|
187 |
+
associated interface definition files, plus the scripts used to
|
188 |
+
control compilation and installation of the executable. However, as a
|
189 |
+
special exception, the source code distributed need not include
|
190 |
+
anything that is normally distributed (in either source or binary
|
191 |
+
form) with the major components (compiler, kernel, and so on) of the
|
192 |
+
operating system on which the executable runs, unless that component
|
193 |
+
itself accompanies the executable.
|
194 |
+
|
195 |
+
If distribution of executable or object code is made by offering
|
196 |
+
access to copy from a designated place, then offering equivalent
|
197 |
+
access to copy the source code from the same place counts as
|
198 |
+
distribution of the source code, even though third parties are not
|
199 |
+
compelled to copy the source along with the object code.
|
200 |
+
|
201 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
202 |
+
except as expressly provided under this License. Any attempt
|
203 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
204 |
+
void, and will automatically terminate your rights under this License.
|
205 |
+
However, parties who have received copies, or rights, from you under
|
206 |
+
this License will not have their licenses terminated so long as such
|
207 |
+
parties remain in full compliance.
|
208 |
+
|
209 |
+
5. You are not required to accept this License, since you have not
|
210 |
+
signed it. However, nothing else grants you permission to modify or
|
211 |
+
distribute the Program or its derivative works. These actions are
|
212 |
+
prohibited by law if you do not accept this License. Therefore, by
|
213 |
+
modifying or distributing the Program (or any work based on the
|
214 |
+
Program), you indicate your acceptance of this License to do so, and
|
215 |
+
all its terms and conditions for copying, distributing or modifying
|
216 |
+
the Program or works based on it.
|
217 |
+
|
218 |
+
6. Each time you redistribute the Program (or any work based on the
|
219 |
+
Program), the recipient automatically receives a license from the
|
220 |
+
original licensor to copy, distribute or modify the Program subject to
|
221 |
+
these terms and conditions. You may not impose any further
|
222 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
223 |
+
You are not responsible for enforcing compliance by third parties to
|
224 |
+
this License.
|
225 |
+
|
226 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
227 |
+
infringement or for any other reason (not limited to patent issues),
|
228 |
+
conditions are imposed on you (whether by court order, agreement or
|
229 |
+
otherwise) that contradict the conditions of this License, they do not
|
230 |
+
excuse you from the conditions of this License. If you cannot
|
231 |
+
distribute so as to satisfy simultaneously your obligations under this
|
232 |
+
License and any other pertinent obligations, then as a consequence you
|
233 |
+
may not distribute the Program at all. For example, if a patent
|
234 |
+
license would not permit royalty-free redistribution of the Program by
|
235 |
+
all those who receive copies directly or indirectly through you, then
|
236 |
+
the only way you could satisfy both it and this License would be to
|
237 |
+
refrain entirely from distribution of the Program.
|
238 |
+
|
239 |
+
If any portion of this section is held invalid or unenforceable under
|
240 |
+
any particular circumstance, the balance of the section is intended to
|
241 |
+
apply and the section as a whole is intended to apply in other
|
242 |
+
circumstances.
|
243 |
+
|
244 |
+
It is not the purpose of this section to induce you to infringe any
|
245 |
+
patents or other property right claims or to contest validity of any
|
246 |
+
such claims; this section has the sole purpose of protecting the
|
247 |
+
integrity of the free software distribution system, which is
|
248 |
+
implemented by public license practices. Many people have made
|
249 |
+
generous contributions to the wide range of software distributed
|
250 |
+
through that system in reliance on consistent application of that
|
251 |
+
system; it is up to the author/donor to decide if he or she is willing
|
252 |
+
to distribute software through any other system and a licensee cannot
|
253 |
+
impose that choice.
|
254 |
+
|
255 |
+
This section is intended to make thoroughly clear what is believed to
|
256 |
+
be a consequence of the rest of this License.
|
257 |
+
|
258 |
+
8. If the distribution and/or use of the Program is restricted in
|
259 |
+
certain countries either by patents or by copyrighted interfaces, the
|
260 |
+
original copyright holder who places the Program under this License
|
261 |
+
may add an explicit geographical distribution limitation excluding
|
262 |
+
those countries, so that distribution is permitted only in or among
|
263 |
+
countries not thus excluded. In such case, this License incorporates
|
264 |
+
the limitation as if written in the body of this License.
|
265 |
+
|
266 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
267 |
+
of the General Public License from time to time. Such new versions will
|
268 |
+
be similar in spirit to the present version, but may differ in detail to
|
269 |
+
address new problems or concerns.
|
270 |
+
|
271 |
+
Each version is given a distinguishing version number. If the Program
|
272 |
+
specifies a version number of this License which applies to it and "any
|
273 |
+
later version", you have the option of following the terms and conditions
|
274 |
+
either of that version or of any later version published by the Free
|
275 |
+
Software Foundation. If the Program does not specify a version number of
|
276 |
+
this License, you may choose any version ever published by the Free Software
|
277 |
+
Foundation.
|
278 |
+
|
279 |
+
10. If you wish to incorporate parts of the Program into other free
|
280 |
+
programs whose distribution conditions are different, write to the author
|
281 |
+
to ask for permission. For software which is copyrighted by the Free
|
282 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
283 |
+
make exceptions for this. Our decision will be guided by the two goals
|
284 |
+
of preserving the free status of all derivatives of our free software and
|
285 |
+
of promoting the sharing and reuse of software generally.
|
286 |
+
|
287 |
+
NO WARRANTY
|
288 |
+
|
289 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
290 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
291 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
292 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
293 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
294 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
295 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
296 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
297 |
+
REPAIR OR CORRECTION.
|
298 |
+
|
299 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
300 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
301 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
302 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
303 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
304 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
305 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
306 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
307 |
+
POSSIBILITY OF SUCH DAMAGES.
|
308 |
+
|
309 |
+
END OF TERMS AND CONDITIONS
|
310 |
+
|
311 |
+
How to Apply These Terms to Your New Programs
|
312 |
+
|
313 |
+
If you develop a new program, and you want it to be of the greatest
|
314 |
+
possible use to the public, the best way to achieve this is to make it
|
315 |
+
free software which everyone can redistribute and change under these terms.
|
316 |
+
|
317 |
+
To do so, attach the following notices to the program. It is safest
|
318 |
+
to attach them to the start of each source file to most effectively
|
319 |
+
convey the exclusion of warranty; and each file should have at least
|
320 |
+
the "copyright" line and a pointer to where the full notice is found.
|
321 |
+
|
322 |
+
<one line to give the program's name and a brief idea of what it does.>
|
323 |
+
Copyright (C) <year> <name of author>
|
324 |
+
|
325 |
+
This program is free software; you can redistribute it and/or modify
|
326 |
+
it under the terms of the GNU General Public License as published by
|
327 |
+
the Free Software Foundation; either version 2 of the License, or
|
328 |
+
(at your option) any later version.
|
329 |
+
|
330 |
+
This program is distributed in the hope that it will be useful,
|
331 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
332 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
333 |
+
GNU General Public License for more details.
|
334 |
+
|
335 |
+
You should have received a copy of the GNU General Public License along
|
336 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
337 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
338 |
+
|
339 |
+
Also add information on how to contact you by electronic and paper mail.
|
340 |
+
|
341 |
+
If the program is interactive, make it output a short notice like this
|
342 |
+
when it starts in an interactive mode:
|
343 |
+
|
344 |
+
Gnomovision version 69, Copyright (C) year name of author
|
345 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
346 |
+
This is free software, and you are welcome to redistribute it
|
347 |
+
under certain conditions; type `show c' for details.
|
348 |
+
|
349 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
350 |
+
parts of the General Public License. Of course, the commands you use may
|
351 |
+
be called something other than `show w' and `show c'; they could even be
|
352 |
+
mouse-clicks or menu items--whatever suits your program.
|
353 |
+
|
354 |
+
You should also get your employer (if you work as a programmer) or your
|
355 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
356 |
+
necessary. Here is a sample; alter the names:
|
357 |
+
|
358 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
359 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
360 |
+
|
361 |
+
<signature of Ty Coon>, 1 April 1989
|
362 |
+
Ty Coon, President of Vice
|
363 |
+
|
364 |
+
This General Public License does not permit incorporating your program into
|
365 |
+
proprietary programs. If your program is a subroutine library, you may
|
366 |
+
consider it more useful to permit linking proprietary applications with the
|
367 |
+
library. If this is what you want to do, use the GNU Lesser General
|
368 |
+
Public License instead of this License.
|
vendor/10up/wp_mock/behat.yml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
default:
|
2 |
+
suites:
|
3 |
+
default:
|
4 |
+
contexts:
|
5 |
+
- FeatureContext
|
6 |
+
- HooksContext
|
7 |
+
- FunctionsContext
|
8 |
+
formatters:
|
9 |
+
progress: true
|
vendor/10up/wp_mock/bootstrap.php.dist
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__ . '/vendor/autoload.php';
|
4 |
+
|
5 |
+
WP_Mock::setUsePatchwork( false );
|
vendor/10up/wp_mock/features/bootstrap/FeatureContext.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use Behat\Behat\Context\Context;
|
4 |
+
use Behat\Behat\Context\SnippetAcceptingContext;
|
5 |
+
use Behat\Behat\Hook\Scope\AfterScenarioScope;
|
6 |
+
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Defines application features from the specific context.
|
10 |
+
*/
|
11 |
+
class FeatureContext implements Context, SnippetAcceptingContext {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Initializes context.
|
15 |
+
*
|
16 |
+
* Every scenario gets its own context instance.
|
17 |
+
* You can also pass arbitrary arguments to the
|
18 |
+
* context constructor through behat.yml.
|
19 |
+
*/
|
20 |
+
public function __construct() {
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @BeforeScenario
|
25 |
+
*/
|
26 |
+
public function setUpWpMock( BeforeScenarioScope $scope ) {
|
27 |
+
WP_Mock::setUp();
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @AfterScenario
|
32 |
+
*/
|
33 |
+
public function tearDownWpMock( AfterScenarioScope $scope ) {
|
34 |
+
WP_Mock::tearDown();
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @BeforeScenario @strictmode
|
39 |
+
*/
|
40 |
+
public function ensureStrictModeOn() {
|
41 |
+
self::forceStrictModeOn();
|
42 |
+
}
|
43 |
+
|
44 |
+
public static function forceStrictModeOn() {
|
45 |
+
$property = new ReflectionProperty( 'WP_Mock', '__strict_mode' );
|
46 |
+
$property->setAccessible( true );
|
47 |
+
$property->setValue( true );
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @AfterScenario @strictmode
|
52 |
+
*/
|
53 |
+
public function ensureStrictModeOff() {
|
54 |
+
self::forceStrictModeOff();
|
55 |
+
}
|
56 |
+
|
57 |
+
public static function forceStrictModeOff() {
|
58 |
+
$property = new ReflectionProperty( 'WP_Mock', '__strict_mode' );
|
59 |
+
$property->setAccessible( true );
|
60 |
+
$property->setValue( false );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @Then tearDown should not fail
|
65 |
+
*/
|
66 |
+
public function teardownShouldNotFail() {
|
67 |
+
WP_Mock::tearDown();
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @When I do nothing
|
72 |
+
*/
|
73 |
+
public function iDoNothing() {
|
74 |
+
// Move along...
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* @Then tearDown should fail
|
79 |
+
*/
|
80 |
+
public function teardownShouldFail() {
|
81 |
+
try {
|
82 |
+
$this->teardownShouldNotFail();
|
83 |
+
throw new \PHPUnit\Framework\ExpectationFailedException( 'WP_Mock Teardown should have failed!' );
|
84 |
+
} catch ( \Mockery\Exception\InvalidCountException $e ) {
|
85 |
+
// Move along
|
86 |
+
}
|
87 |
+
}
|
88 |
+
}
|
vendor/10up/wp_mock/features/bootstrap/FunctionsContext.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use Behat\Behat\Context\Context;
|
4 |
+
use Behat\Gherkin\Node\TableNode;
|
5 |
+
use Mockery\Exception\NoMatchingExpectationException;
|
6 |
+
|
7 |
+
class FunctionsContext implements Context {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @Given function :function does not exist
|
11 |
+
*/
|
12 |
+
public function functionDoesNotExist( $function ) {
|
13 |
+
\PHPUnit\Framework\Assert::assertFalse( function_exists( $function ) );
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @Given I mock passthru function :function with args:
|
18 |
+
*/
|
19 |
+
public function iMockPassthruFunctionWithArgs( $function, TableNode $args ) {
|
20 |
+
WP_Mock::passthruFunction( $function, array(
|
21 |
+
'args' => $args->getRow( 0 ),
|
22 |
+
) );
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @Given I mock function :function to return :value
|
27 |
+
*/
|
28 |
+
public function iMockFunctionToReturn( $function, $value ) {
|
29 |
+
WP_Mock::userFunction( $function, array( 'return' => $value ) );
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @Given I alias :alias to :function
|
34 |
+
*/
|
35 |
+
public function iAliasTo( $alias, $function ) {
|
36 |
+
WP_Mock::alias( $alias, $function );
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @Given I mock function :function to echo input
|
41 |
+
*/
|
42 |
+
public function iMockFunctionWpMockTestToEcho( $function ) {
|
43 |
+
WP_Mock::echoFunction( $function );
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @Given strict mode is on
|
48 |
+
*/
|
49 |
+
public function strictModeIsOn() {
|
50 |
+
FeatureContext::forceStrictModeOn();
|
51 |
+
\PHPUnit\Framework\Assert::assertTrue( WP_Mock::strictMode() );
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @Given strict mode is off
|
56 |
+
*/
|
57 |
+
public function strictModeIsOff() {
|
58 |
+
FeatureContext::forceStrictModeOff();
|
59 |
+
\PHPUnit\Framework\Assert::assertFalse( WP_Mock::strictMode() );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @When I mock function :function
|
64 |
+
*/
|
65 |
+
public function iMockFunction( $function ) {
|
66 |
+
WP_Mock::userFunction( $function );
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* @When I tear down the test
|
71 |
+
*/
|
72 |
+
public function iTearDownTheTest() {
|
73 |
+
WP_Mock::tearDown();
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @Then function :function should exist
|
78 |
+
*/
|
79 |
+
public function functionShouldExist( $function ) {
|
80 |
+
\PHPUnit\Framework\Assert::assertTrue( function_exists( $function ) );
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @Then I expect :return when I run :function with args:
|
85 |
+
*/
|
86 |
+
public function iExpectWhenIRunWithArgs( $return, $function, TableNode $args ) {
|
87 |
+
\PHPUnit\Framework\Assert::assertEquals( $return, call_user_func_array( $function, $args->getRow( 0 ) ) );
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* @Then I expect :return when I run :function
|
92 |
+
*/
|
93 |
+
public function iExcpectWhenIRun( $return, $function ) {
|
94 |
+
$this->iExpectWhenIRunWithArgs( $return, $function, new TableNode( array( array() ) ) );
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* @Then I expect an error when I run :function with args:
|
99 |
+
*/
|
100 |
+
public function iExpectAnErrorWhenIRunWithArgs( $function, TableNode $args ) {
|
101 |
+
try {
|
102 |
+
$this->iExpectWhenIRunWithArgs( null, $function, $args );
|
103 |
+
} catch ( NoMatchingExpectationException $e ) {
|
104 |
+
// Move along...
|
105 |
+
} catch ( \PHPUnit\Framework\ExpectationFailedException $e ) {
|
106 |
+
// Move along...
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* @Then I expect function :function to echo :input
|
112 |
+
*/
|
113 |
+
public function iExpectFunctionToEcho( $function, $input ) {
|
114 |
+
ob_start();
|
115 |
+
$function( $input );
|
116 |
+
$output = trim( ob_get_clean() );
|
117 |
+
\PHPUnit\Framework\Assert::assertEquals( trim( $input ), $output );
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* @Then Nothing happens when I run function :function
|
122 |
+
*/
|
123 |
+
public function iRunFunction( $function ) {
|
124 |
+
$function();
|
125 |
+
}
|
126 |
+
|
127 |
+
}
|
vendor/10up/wp_mock/features/bootstrap/HooksContext.php
ADDED
@@ -0,0 +1,235 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use Behat\Behat\Context\Context;
|
4 |
+
use Behat\Behat\Hook\Scope\AfterScenarioScope;
|
5 |
+
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
|
6 |
+
use Behat\Gherkin\Node\TableNode;
|
7 |
+
|
8 |
+
class HooksContext implements Context {
|
9 |
+
|
10 |
+
private $filterResults = array();
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @BeforeScenario
|
14 |
+
*/
|
15 |
+
public function setUpWpMock( BeforeScenarioScope $scope ) {
|
16 |
+
$this->filterResults = array();
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @AfterScenario
|
21 |
+
*/
|
22 |
+
public function tearDownWpMock( AfterScenarioScope $scope ) {
|
23 |
+
$this->filterResults = array();
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* @Given I expect the following actions added:
|
28 |
+
*/
|
29 |
+
public function iExpectTheFollowingActionsAdded( TableNode $table ) {
|
30 |
+
foreach ( $this->getActionsWithDefaults( $table ) as $action ) {
|
31 |
+
WP_Mock::expectActionAdded(
|
32 |
+
$action['action'],
|
33 |
+
$action['callback'],
|
34 |
+
$action['priority'],
|
35 |
+
$action['arguments']
|
36 |
+
);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @Given I expect the following actions not to be added:
|
42 |
+
*/
|
43 |
+
public function iExpectTheFollowingActionsNotToBeAdded( TableNode $table ) {
|
44 |
+
foreach ( $this->getActionsWithDefaults( $table ) as $action ) {
|
45 |
+
WP_Mock::expectActionNotAdded( $action['action'], $action['callback'] );
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @Given I expect the :action action
|
51 |
+
*/
|
52 |
+
public function iExpectTheAction( $action ) {
|
53 |
+
$this->iExpectTheActionWith( $action, new TableNode( array() ) );
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @When I expect the :action action with:
|
58 |
+
*/
|
59 |
+
public function iExpectTheActionWith( $action, TableNode $table ) {
|
60 |
+
$args = array( $action );
|
61 |
+
$rows = $table->getRows();
|
62 |
+
if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
|
63 |
+
$args = array_merge( $args, $rows[0] );
|
64 |
+
}
|
65 |
+
call_user_func_array( array( 'WP_Mock', 'expectAction' ), $args );
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* @Given I expect the :filter filter with :value
|
70 |
+
*/
|
71 |
+
public function iExpectTheFilterWith( $filter, $value ) {
|
72 |
+
$this->iExpectTheFilterWithValues( $filter, new TableNode( array( array( $value ) ) ) );
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @When I expect the :filter filter with:
|
77 |
+
*/
|
78 |
+
public function iExpectTheFilterWithValues( $filter, TableNode $table ) {
|
79 |
+
$args = array( $filter );
|
80 |
+
$rows = $table->getRows();
|
81 |
+
if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
|
82 |
+
$args = array_merge( $args, $rows[0] );
|
83 |
+
}
|
84 |
+
call_user_func_array( array( 'WP_Mock', 'expectFilter' ), $args );
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @When I add the following actions:
|
89 |
+
*/
|
90 |
+
public function iAddTheFollowingActions( TableNode $table ) {
|
91 |
+
foreach ( $this->getActionsWithDefaults( $table ) as $action ) {
|
92 |
+
add_action(
|
93 |
+
$action['action'],
|
94 |
+
$action['callback'],
|
95 |
+
$action['priority'],
|
96 |
+
$action['arguments']
|
97 |
+
);
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* @When I do the :action action
|
103 |
+
*/
|
104 |
+
public function iDoTheAction( $action ) {
|
105 |
+
$this->iDoTheActionWith( $action, new TableNode( array() ) );
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* @When I do the :action action with:
|
110 |
+
*/
|
111 |
+
public function iDoTheActionWith( $action, TableNode $table ) {
|
112 |
+
$args = array( $action );
|
113 |
+
$rows = $table->getRows();
|
114 |
+
if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
|
115 |
+
$args = array_merge( $args, $rows[0] );
|
116 |
+
}
|
117 |
+
call_user_func_array( 'do_action', $args );
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* @Given I expect the following filters added:
|
122 |
+
*/
|
123 |
+
public function iExpectTheFollowingFiltersAdded( TableNode $table ) {
|
124 |
+
$filters = $table->getHash();
|
125 |
+
$defaults = array(
|
126 |
+
'filter' => '',
|
127 |
+
'callback' => '',
|
128 |
+
'priority' => 10,
|
129 |
+
'arguments' => 1,
|
130 |
+
);
|
131 |
+
foreach ( $filters as $filter ) {
|
132 |
+
$filter += $defaults;
|
133 |
+
WP_Mock::expectFilterAdded(
|
134 |
+
$filter['filter'],
|
135 |
+
$filter['callback'],
|
136 |
+
$filter['priority'],
|
137 |
+
$filter['arguments']
|
138 |
+
);
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* @Given I expect the following filters not to be added:
|
144 |
+
*/
|
145 |
+
public function iExpectTheFollowingFiltersNotToBeAdded( TableNode $table ) {
|
146 |
+
foreach ( $this->getFiltersWithDefaults( $table ) as $filter ) {
|
147 |
+
WP_Mock::expectFilterNotAdded( $filter['filter'], $filter['callback'] );
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* @When I add the following filters:
|
153 |
+
*/
|
154 |
+
public function iAddTheFollowingFilters( TableNode $table ) {
|
155 |
+
foreach ( $this->getFiltersWithDefaults( $table ) as $filter ) {
|
156 |
+
add_filter(
|
157 |
+
$filter['filter'],
|
158 |
+
$filter['callback'],
|
159 |
+
$filter['priority'],
|
160 |
+
$filter['arguments']
|
161 |
+
);
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* @Given I expect filter :filter to respond to :thing with :response
|
167 |
+
*/
|
168 |
+
public function iExpectFilterToRespondToWith( $filter, $thing, $response ) {
|
169 |
+
WP_Mock::onFilter( $filter )->with( $thing )->reply( $response );
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* @Given I expect filter :filter to respond with :response
|
174 |
+
*/
|
175 |
+
public function iExpectFilterToRespondWith( $filter, $response ) {
|
176 |
+
$this->iExpectFilterToRespondToWith( $filter, null, $response );
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* @When I apply the filter :filter with :with
|
181 |
+
*/
|
182 |
+
public function iApplyFilterWith( $filter, $with ) {
|
183 |
+
$this->iApplyFilterWithData( $filter, new TableNode( array( array( $with ) ) ) );
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* @When I apply the filter :filter with:
|
188 |
+
*/
|
189 |
+
public function iApplyFilterWithData( $filter, TableNode $table ) {
|
190 |
+
$row = $table->getRow( 0 );
|
191 |
+
array_unshift( $row, $filter );
|
192 |
+
$this->filterResults[ $filter ] = call_user_func_array( 'apply_filters', $row );
|
193 |
+
}
|
194 |
+
|
195 |
+
/**
|
196 |
+
* @Then The filter :filter should return :value
|
197 |
+
*/
|
198 |
+
public function theFilterShouldReturn( $filter, $value ) {
|
199 |
+
\PHPUnit\Framework\Assert::assertArrayHasKey( $filter, $this->filterResults );
|
200 |
+
\PHPUnit\Framework\Assert::assertEquals( $this->filterResults[ $filter ], $value );
|
201 |
+
}
|
202 |
+
|
203 |
+
private function getActionsWithDefaults( TableNode $table ) {
|
204 |
+
$actions = $table->getHash();
|
205 |
+
$defaults = array(
|
206 |
+
'action' => '',
|
207 |
+
'callback' => '',
|
208 |
+
'priority' => 10,
|
209 |
+
'arguments' => 1,
|
210 |
+
);
|
211 |
+
foreach ( $actions as &$action ) {
|
212 |
+
$action += $defaults;
|
213 |
+
}
|
214 |
+
unset( $action );
|
215 |
+
|
216 |
+
return $actions;
|
217 |
+
}
|
218 |
+
|
219 |
+
private function getFiltersWithDefaults( TableNode $table ) {
|
220 |
+
$filters = $table->getHash();
|
221 |
+
$defaults = array(
|
222 |
+
'filter' => '',
|
223 |
+
'callback' => '',
|
224 |
+
'priority' => 10,
|
225 |
+
'arguments' => 1,
|
226 |
+
);
|
227 |
+
foreach ( $filters as &$filter ) {
|
228 |
+
$filter += $defaults;
|
229 |
+
}
|
230 |
+
unset( $filter );
|
231 |
+
|
232 |
+
return $filters;
|
233 |
+
}
|
234 |
+
|
235 |
+
}
|
vendor/10up/wp_mock/features/function-mocks.feature
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Feature: Function mocking
|
2 |
+
In order to simulate the WordPress functional API
|
3 |
+
As a developer
|
4 |
+
I need to be able to mock WordPress core functions
|
5 |
+
|
6 |
+
Scenario: userFunction creates functions that don't exist
|
7 |
+
Given function wpMockTest does not exist
|
8 |
+
When I mock function wpMockTest
|
9 |
+
Then function wpMockTest should exist
|
10 |
+
|
11 |
+
Scenario: Passthru function returns first argument
|
12 |
+
Given I mock passthru function wpMockPassthruTest with args:
|
13 |
+
| foobar | bazbat |
|
14 |
+
Then I expect foobar when I run wpMockPassthruTest with args:
|
15 |
+
| foobar | bazbat |
|
16 |
+
|
17 |
+
Scenario: return value works correctly
|
18 |
+
Given I mock function wpMockTest to return "test value"
|
19 |
+
Then I expect "test value" when I run wpMockTest
|
20 |
+
|
21 |
+
Scenario: expectations cause error on unexpected use
|
22 |
+
Given I mock passthru function wpMockTest with args:
|
23 |
+
| bazbat | foobar |
|
24 |
+
Then I expect an error when I run wpMockTest with args:
|
25 |
+
| bimbam | bobeep |
|
26 |
+
|
27 |
+
Scenario: alias uses the provided callback when called
|
28 |
+
Given I mock function wpMockTest to return "alias test"
|
29 |
+
And I alias wpAliasTest to wpMockTest
|
30 |
+
Then I expect "alias test" when I run wpAliasTest
|
31 |
+
|
32 |
+
Scenario: echoFunction echoes the correct output
|
33 |
+
Given I mock function wpMockTest to echo input
|
34 |
+
Then I expect function wpMockTest to echo "echo test"
|
35 |
+
|
36 |
+
Scenario: Previously defined functions do not cause failure when called without being expected
|
37 |
+
Given strict mode is off
|
38 |
+
And I mock function wpMockStrictTest
|
39 |
+
And I tear down the test
|
40 |
+
Then Nothing happens when I run function wpMockStrictTest
|
41 |
+
|
42 |
+
@strictmode
|
43 |
+
Scenario: Strict mode causes unexpected but previously defined functions to fail
|
44 |
+
Given strict mode is on
|
45 |
+
And I mock function wpMockTest
|
46 |
+
When I tear down the test
|
47 |
+
Then I expect an error when I run wpMockTest with args:
|
48 |
+
| |
|
vendor/10up/wp_mock/features/hooks.feature
ADDED
@@ -0,0 +1,228 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Feature: Hook mocking
|
2 |
+
In order to test common WordPress functionality
|
3 |
+
As a developer
|
4 |
+
I need to be able to mock actions and filters
|
5 |
+
|
6 |
+
Scenario: expectActionAdded sets up expectation
|
7 |
+
Given I expect the following actions added:
|
8 |
+
| action | callback | priority | arguments |
|
9 |
+
| foobar | bazbat | 10 | 2 |
|
10 |
+
When I add the following actions:
|
11 |
+
| action | callback | priority | arguments |
|
12 |
+
| foobar | bazbat | 10 | 2 |
|
13 |
+
Then tearDown should not fail
|
14 |
+
|
15 |
+
Scenario: expectActionAdded fails when not met
|
16 |
+
Given I expect the following actions added:
|
17 |
+
| action | callback |
|
18 |
+
| foobar | bazbat |
|
19 |
+
When I do nothing
|
20 |
+
Then tearDown should fail
|
21 |
+
|
22 |
+
Scenario: expectActionAdded fails when argument count is different
|
23 |
+
Given I expect the following actions added:
|
24 |
+
| action | callback | priority | arguments |
|
25 |
+
| foobar | bazbat | 10 | 2 |
|
26 |
+
When I add the following actions:
|
27 |
+
| action | callback | priority | arguments |
|
28 |
+
| foobar | bazbat | 10 | 3 |
|
29 |
+
Then tearDown should fail
|
30 |
+
|
31 |
+
Scenario: expectActionAdded fails when priority is different
|
32 |
+
Given I expect the following actions added:
|
33 |
+
| action | callback | priority |
|
34 |
+
| foobar | bazbat | 10 |
|
35 |
+
When I add the following actions:
|
36 |
+
| action | callback | priority |
|
37 |
+
| foobar | bazbat | 11 |
|
38 |
+
Then tearDown should fail
|
39 |
+
|
40 |
+
Scenario: expectActionNotAdded fails when action added
|
41 |
+
Given I expect the following actions not to be added:
|
42 |
+
| action | callback |
|
43 |
+
| foobar | bazbat |
|
44 |
+
When I add the following actions:
|
45 |
+
| action | callback |
|
46 |
+
| foobar | bazbat |
|
47 |
+
Then tearDown should fail
|
48 |
+
|
49 |
+
Scenario: expectActionNotAdded passes when action not added
|
50 |
+
Given I expect the following actions not to be added:
|
51 |
+
| action | callback |
|
52 |
+
| foobar | bazbat |
|
53 |
+
When I do nothing
|
54 |
+
Then tearDown should not fail
|
55 |
+
|
56 |
+
Scenario: expectFilterAdded sets up expectation
|
57 |
+
Given I expect the following filters added:
|
58 |
+
| filter | callback | priority | arguments |
|
59 |
+
| foobar | bazbat | 10 | 2 |
|
60 |
+
When I add the following filters:
|
61 |
+
| filter | callback | priority | arguments |
|
62 |
+
| foobar | bazbat | 10 | 2 |
|
63 |
+
Then tearDown should not fail
|
64 |
+
|
65 |
+
Scenario: expectFilterAdded fails when not met
|
66 |
+
Given I expect the following filters added:
|
67 |
+
| filter | callback |
|
68 |
+
| foobar | bazbat |
|
69 |
+
When I do nothing
|
70 |
+
Then tearDown should fail
|
71 |
+
|
72 |
+
Scenario: expectFilterAdded fails when argument count is different
|
73 |
+
Given I expect the following filters added:
|
74 |
+
| filter | callback | priority | arguments |
|
75 |
+
| foobar | bazbat | 10 | 2 |
|
76 |
+
When I add the following filters:
|
77 |
+
| filter | callback | priority | arguments |
|
78 |
+
| foobar | bazbat | 10 | 3 |
|
79 |
+
Then tearDown should fail
|
80 |
+
|
81 |
+
Scenario: expectFilterAdded fails when priority is different
|
82 |
+
Given I expect the following filters added:
|
83 |
+
| filter | callback | priority |
|
84 |
+
| foobar | bazbat | 10 |
|
85 |
+
When I add the following filters:
|
86 |
+
| filter | callback | priority |
|
87 |
+
| foobar | bazbat | 11 |
|
88 |
+
Then tearDown should fail
|
89 |
+
|
90 |
+
Scenario: expectAction sets up expectation
|
91 |
+
Given I expect the "foobar" action
|
92 |
+
When I do the "foobar" action
|
93 |
+
Then tearDown should not fail
|
94 |
+
|
95 |
+
Scenario: expectAction fails when unmet
|
96 |
+
Given I expect the "foobar" action
|
97 |
+
When I do nothing
|
98 |
+
Then tearDown should fail
|
99 |
+
|
100 |
+
Scenario: expectAction with extra arguments
|
101 |
+
Given I expect the "foobar" action with:
|
102 |
+
| some | extra | data |
|
103 |
+
When I do the "foobar" action with:
|
104 |
+
| some | extra | data |
|
105 |
+
Then tearDown should not fail
|
106 |
+
|
107 |
+
Scenario: action with the wrong arguments fails
|
108 |
+
Given I expect the "bazbat" action with:
|
109 |
+
| the correct data |
|
110 |
+
When I do the "bazbat" action with:
|
111 |
+
| Invalid information |
|
112 |
+
Then tearDown should fail
|
113 |
+
|
114 |
+
Scenario: action with extra arguments fails
|
115 |
+
Given I expect the "bazbat" action with:
|
116 |
+
| data |
|
117 |
+
When I do the "bazbat" action with:
|
118 |
+
| data | plus |
|
119 |
+
Then tearDown should fail
|
120 |
+
|
121 |
+
Scenario: expectFilter sets up expectation
|
122 |
+
Given I expect the "foobar" filter with "bazbat"
|
123 |
+
When I apply the filter "foobar" with "bazbat"
|
124 |
+
Then tearDown should not fail
|
125 |
+
|
126 |
+
Scenario: expectFilter fails when unmet
|
127 |
+
Given I expect the "foobar" filter with "bazbat"
|
128 |
+
When I do nothing
|
129 |
+
Then tearDown should fail
|
130 |
+
|
131 |
+
Scenario: expectFilter with extra arguments
|
132 |
+
Given I expect the "foobar" filter with:
|
133 |
+
| some | extra | data |
|
134 |
+
When I apply the filter "foobar" with:
|
135 |
+
| some | extra | data |
|
136 |
+
Then tearDown should not fail
|
137 |
+
|
138 |
+
Scenario: filter with the wrong arguments fails
|
139 |
+
Given I expect the "bazbat" filter with:
|
140 |
+
| the correct data |
|
141 |
+
When I apply the filter "bazbat" with:
|
142 |
+
| Invalid information |
|
143 |
+
Then tearDown should fail
|
144 |
+
|
145 |
+
Scenario: expectFilter fails when called with wrong argument
|
146 |
+
Given I expect the "foobar" filter with "bazbat"
|
147 |
+
When I apply the filter "foobar" with "bimbam"
|
148 |
+
Then tearDown should fail
|
149 |
+
|
150 |
+
Scenario: filter with extra arguments fails
|
151 |
+
Given I expect the "bazbat" filter with:
|
152 |
+
| data |
|
153 |
+
When I apply the filter "bazbat" with:
|
154 |
+
| data | plus |
|
155 |
+
Then tearDown should fail
|
156 |
+
|
157 |
+
@strictmode
|
158 |
+
Scenario: Unexpected action fails in strict mode
|
159 |
+
Given strict mode is on
|
160 |
+
When I do nothing
|
161 |
+
Then I expect an error when I run do_action with args:
|
162 |
+
| bimbam | bazbat |
|
163 |
+
|
164 |
+
Scenario: unexpected action does not fail tests
|
165 |
+
Given I do nothing
|
166 |
+
When I add the following actions:
|
167 |
+
| action | callback |
|
168 |
+
| foobar | bazbat |
|
169 |
+
Then tearDown should not fail
|
170 |
+
|
171 |
+
@strictmode
|
172 |
+
Scenario: Unexpected filter fails in strict mode
|
173 |
+
Given strict mode is on
|
174 |
+
When I do nothing
|
175 |
+
Then I expect an error when I run apply_filters with args:
|
176 |
+
| foobar | bazbat |
|
177 |
+
|
178 |
+
Scenario: unexpected filter does not fail tests
|
179 |
+
Given I do nothing
|
180 |
+
When I add the following filters:
|
181 |
+
| filter | callback |
|
182 |
+
| foobar | bazbat |
|
183 |
+
Then tearDown should not fail
|
184 |
+
|
185 |
+
@strictmode
|
186 |
+
Scenario: unexpected action fails in strict mode
|
187 |
+
Given strict mode is on
|
188 |
+
When I do nothing
|
189 |
+
Then I expect an error when I run add_action with args:
|
190 |
+
| foobar | bazbat |
|
191 |
+
|
192 |
+
@strictmode
|
193 |
+
Scenario: unexpected action fails in strict mode
|
194 |
+
Given strict mode is on
|
195 |
+
When I do nothing
|
196 |
+
Then I expect an error when I run add_filter with args:
|
197 |
+
| foobar | bazbat |
|
198 |
+
|
199 |
+
Scenario: filter responder works
|
200 |
+
Given I expect filter "the_content" to respond to "Test content" with "Responder works"
|
201 |
+
When I apply the filter "the_content" with "Test content"
|
202 |
+
Then The filter "the_content" should return "Responder works"
|
203 |
+
|
204 |
+
Scenario: filter returns default value when no filter defined
|
205 |
+
Given I do nothing
|
206 |
+
When I apply the filter "the_content" with "Apple"
|
207 |
+
Then The filter "the_content" should return "Apple"
|
208 |
+
|
209 |
+
Scenario: filter returns default value when unexpected value used
|
210 |
+
Given I expect filter "the_content" to respond to "Windows" with "OS X"
|
211 |
+
When I apply the filter "the_content" with "Linux"
|
212 |
+
Then The filter "the_content" should return "Linux"
|
213 |
+
|
214 |
+
Scenario: expectFilterNotAdded fails when filter added
|
215 |
+
Given I expect the following filters not to be added:
|
216 |
+
| filter | callback |
|
217 |
+
| foobar | bazbat |
|
218 |
+
When I add the following filters:
|
219 |
+
| filter | callback |
|
220 |
+
| foobar | bazbat |
|
221 |
+
Then tearDown should fail
|
222 |
+
|
223 |
+
Scenario: expectFilterNotAdded passes when filter not added
|
224 |
+
Given I expect the following filters not to be added:
|
225 |
+
| filter | callback |
|
226 |
+
| foobar | bazbat |
|
227 |
+
When I do nothing
|
228 |
+
Then tearDown should not fail
|
vendor/10up/wp_mock/php/WP_Mock.php
ADDED
@@ -0,0 +1,543 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WP_Mock
|
4 |
+
*
|
5 |
+
* LICENSE
|
6 |
+
*
|
7 |
+
* Copyright 2013 10up and other contributors
|
8 |
+
* http://10up.com
|
9 |
+
*
|
10 |
+
* Permission is hereby granted, free of charge, to any person obtaining
|
11 |
+
* a copy of this software and associated documentation files (the
|
12 |
+
* "Software"), to deal in the Software without restriction, including
|
13 |
+
* without limitation the rights to use, copy, modify, merge, publish,
|
14 |
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
15 |
+
* permit persons to whom the Software is furnished to do so, subject to
|
16 |
+
* the following conditions:
|
17 |
+
*
|
18 |
+
* The above copyright notice and this permission notice shall be
|
19 |
+
* included in all copies or substantial portions of the Software.
|
20 |
+
*
|
21 |
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
22 |
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
23 |
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
24 |
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
25 |
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
26 |
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
27 |
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
28 |
+
*
|
29 |
+
* @package WP_Mock
|
30 |
+
* @copyright Copyright (c) 2013 10up (http://10up.com)
|
31 |
+
* @license MIT License
|
32 |
+
*/
|
33 |
+
|
34 |
+
use WP_Mock\Matcher\FuzzyObject;
|
35 |
+
|
36 |
+
class WP_Mock {
|
37 |
+
/**
|
38 |
+
* @var \WP_Mock\EventManager
|
39 |
+
*/
|
40 |
+
protected static $event_manager;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var \WP_Mock\Functions
|
44 |
+
*/
|
45 |
+
protected static $function_manager;
|
46 |
+
|
47 |
+
protected static $__bootstrapped = false;
|
48 |
+
|
49 |
+
protected static $__use_patchwork = false;
|
50 |
+
|
51 |
+
protected static $__strict_mode = false;
|
52 |
+
|
53 |
+
protected static $deprecated_listener;
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @param boolean $use_patchwork
|
57 |
+
*/
|
58 |
+
public static function setUsePatchwork( $use_patchwork ) {
|
59 |
+
if ( ! self::$__bootstrapped ) {
|
60 |
+
self::$__use_patchwork = (bool) $use_patchwork;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
public static function usingPatchwork() {
|
65 |
+
return (bool) self::$__use_patchwork;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Check whether strict mode is turned on
|
70 |
+
*
|
71 |
+
* @return bool
|
72 |
+
*/
|
73 |
+
public static function strictMode() {
|
74 |
+
return (bool) self::$__strict_mode;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Turns on strict mode
|
79 |
+
*/
|
80 |
+
public static function activateStrictMode() {
|
81 |
+
if ( ! self::$__bootstrapped ) {
|
82 |
+
self::$__strict_mode = true;
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Bootstrap WP_Mock
|
88 |
+
*/
|
89 |
+
public static function bootstrap() {
|
90 |
+
if ( ! self::$__bootstrapped ) {
|
91 |
+
self::$__bootstrapped = true;
|
92 |
+
static::$deprecated_listener = new \WP_Mock\DeprecatedListener();
|
93 |
+
require_once __DIR__ . '/WP_Mock/API/function-mocks.php';
|
94 |
+
require_once __DIR__ . '/WP_Mock/API/constant-mocks.php';
|
95 |
+
if ( self::usingPatchwork() ) {
|
96 |
+
$possible_locations = array(
|
97 |
+
'vendor',
|
98 |
+
'../..',
|
99 |
+
);
|
100 |
+
$patchwork_path = 'antecedent/patchwork/Patchwork.php';
|
101 |
+
foreach ( $possible_locations as $loc ) {
|
102 |
+
$path = __DIR__ . "/../$loc/$patchwork_path";
|
103 |
+
if ( file_exists( $path ) ) {
|
104 |
+
break;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
// Will cause a fatal error if patchwork can't be found
|
108 |
+
require_once( $path );
|
109 |
+
}
|
110 |
+
self::setUp();
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Make sure Mockery doesn't have anything set up already.
|
116 |
+
*/
|
117 |
+
public static function setUp() {
|
118 |
+
if ( self::$__bootstrapped ) {
|
119 |
+
\Mockery::close();
|
120 |
+
|
121 |
+
self::$event_manager = new \WP_Mock\EventManager();
|
122 |
+
self::$function_manager = new \WP_Mock\Functions();
|
123 |
+
} else {
|
124 |
+
self::bootstrap();
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Tear down anything built up inside Mockery when we're ready to do so.
|
130 |
+
*/
|
131 |
+
public static function tearDown() {
|
132 |
+
self::$event_manager->flush();
|
133 |
+
self::$function_manager->flush();
|
134 |
+
|
135 |
+
\Mockery::close();
|
136 |
+
\WP_Mock\Handler::cleanup();
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Fire a specific (mocked) callback when an apply_filters() call is used.
|
141 |
+
*
|
142 |
+
* @param string $filter
|
143 |
+
*
|
144 |
+
* @return \WP_Mock\Filter
|
145 |
+
*/
|
146 |
+
public static function onFilter( $filter ) {
|
147 |
+
return self::$event_manager->filter( $filter );
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Fire a specific (mocked) callback when a do_action() call is used.
|
152 |
+
*
|
153 |
+
* @param string $action
|
154 |
+
*
|
155 |
+
* @return \WP_Mock\Action
|
156 |
+
*/
|
157 |
+
public static function onAction( $action ) {
|
158 |
+
return self::$event_manager->action( $action );
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Get a filter or action added callback object
|
163 |
+
*
|
164 |
+
* @param string $hook
|
165 |
+
* @param string $type
|
166 |
+
*
|
167 |
+
* @return \WP_Mock\HookedCallback
|
168 |
+
*/
|
169 |
+
public static function onHookAdded( $hook, $type = 'filter' ) {
|
170 |
+
return self::$event_manager->callback( $hook, $type );
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Get a filter added callback object
|
175 |
+
*
|
176 |
+
* @param string $hook
|
177 |
+
*
|
178 |
+
* @return \WP_Mock\HookedCallback
|
179 |
+
*/
|
180 |
+
public static function onFilterAdded( $hook ) {
|
181 |
+
return self::onHookAdded( $hook, 'filter' );
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Get an action added callback object
|
186 |
+
*
|
187 |
+
* @param string $hook
|
188 |
+
*
|
189 |
+
* @return \WP_Mock\HookedCallback
|
190 |
+
*/
|
191 |
+
public static function onActionAdded( $hook ) {
|
192 |
+
return self::onHookAdded( $hook, 'action' );
|
193 |
+
}
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Alert the Event Manager that an action has been invoked.
|
197 |
+
*
|
198 |
+
* @param string $action
|
199 |
+
*/
|
200 |
+
public static function invokeAction( $action ) {
|
201 |
+
self::$event_manager->called( $action );
|
202 |
+
}
|
203 |
+
|
204 |
+
public static function addFilter( $hook ) {
|
205 |
+
self::addHook( $hook, 'filter' );
|
206 |
+
}
|
207 |
+
|
208 |
+
public static function addAction( $hook ) {
|
209 |
+
self::addHook( $hook, 'action' );
|
210 |
+
}
|
211 |
+
|
212 |
+
public static function addHook( $hook, $type = 'filter' ) {
|
213 |
+
$type_name = "$type::$hook";
|
214 |
+
self::$event_manager->called( $type_name, 'callback' );
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* Set up the expectation that an action will be called during the test.
|
219 |
+
*
|
220 |
+
* Mock a WordPress action, regardless of the parameters used. This call merely
|
221 |
+
* verifies that the action is invoked by the tested method.
|
222 |
+
*
|
223 |
+
* @param string $action Action we expect the method to call
|
224 |
+
*/
|
225 |
+
public static function expectAction( $action ) {
|
226 |
+
$intercept = \Mockery::mock( 'intercept' );
|
227 |
+
$intercept->shouldReceive( 'intercepted' )->atLeast()->once();
|
228 |
+
$args = func_get_args();
|
229 |
+
$args = count( $args ) > 1 ? array_slice( $args, 1 ) : array( null );
|
230 |
+
|
231 |
+
$mocked_action = self::onAction( $action );
|
232 |
+
$responder = call_user_func_array( array( $mocked_action, 'with' ), $args );
|
233 |
+
$responder->perform( array( $intercept, 'intercepted' ) );
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Set up the expectation that a filter will be applied during the test.
|
238 |
+
*
|
239 |
+
* Mock a WordPress filter with specific arguments. You need all arguments that you expect
|
240 |
+
* in order to fulfill the expectation.
|
241 |
+
*
|
242 |
+
* @param string $filter
|
243 |
+
*/
|
244 |
+
public static function expectFilter( $filter ) {
|
245 |
+
$intercept = \Mockery::mock( 'intercept' );
|
246 |
+
$intercept->shouldReceive( 'intercepted' )->atLeast()->once()->andReturnUsing( function( $value ) {
|
247 |
+
return $value;
|
248 |
+
} );
|
249 |
+
$args = func_num_args() > 1 ? array_slice( func_get_args(), 1 ) : array( null );
|
250 |
+
|
251 |
+
$mocked_filter = self::onFilter( $filter );
|
252 |
+
$responder = call_user_func_array( array( $mocked_filter, 'with' ), $args );
|
253 |
+
$responder->reply( new \WP_Mock\InvokedFilterValue( array( $intercept, 'intercepted' ) ) );
|
254 |
+
}
|
255 |
+
|
256 |
+
public static function assertActionsCalled() {
|
257 |
+
if ( ! self::$event_manager->allActionsCalled() ) {
|
258 |
+
$failed = implode( ', ', self::$event_manager->expectedActions() );
|
259 |
+
throw new \PHPUnit\Framework\ExpectationFailedException( 'Method failed to invoke actions: ' . $failed, null );
|
260 |
+
}
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Add an expectation that an action should be added
|
265 |
+
*
|
266 |
+
* Really just a wrapper function for expectHookAdded()
|
267 |
+
*
|
268 |
+
* @param string $action The action name
|
269 |
+
* @param callable $callback The callback that should be registered
|
270 |
+
* @param int $priority The priority it should be registered at
|
271 |
+
* @param int $args The number of arguments that should be allowed
|
272 |
+
*/
|
273 |
+
public static function expectActionAdded( $action, $callback, $priority = 10, $args = 1 ) {
|
274 |
+
self::expectHookAdded( 'action', $action, $callback, $priority, $args );
|
275 |
+
}
|
276 |
+
|
277 |
+
/**
|
278 |
+
* Add an expection that an action should not be added. A wrapper
|
279 |
+
* around the expectHookNotAdded function.
|
280 |
+
*
|
281 |
+
* @param string $action The action hook name
|
282 |
+
* @param callable $callback The action callback
|
283 |
+
*/
|
284 |
+
public static function expectActionNotAdded( $action, $callback ) {
|
285 |
+
self::expectHookNotAdded( 'action', $action, $callback );
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Add an expectation that a filter should be added
|
290 |
+
*
|
291 |
+
* Really just a wrapper function for expectHookAdded()
|
292 |
+
*
|
293 |
+
* @param string $filter The action name
|
294 |
+
* @param callable $callback The callback that should be registered
|
295 |
+
* @param int $priority The priority it should be registered at
|
296 |
+
* @param int $args The number of arguments that should be allowed
|
297 |
+
*/
|
298 |
+
public static function expectFilterAdded( $filter, $callback, $priority = 10, $args = 1 ) {
|
299 |
+
self::expectHookAdded( 'filter', $filter, $callback, $priority, $args );
|
300 |
+
}
|
301 |
+
|
302 |
+
/**
|
303 |
+
* Adds an expectation that a filter will not be added. A wrapper
|
304 |
+
* around the expectHookNotAdded function.
|
305 |
+
*
|
306 |
+
* @param string $filter The filter hook name
|
307 |
+
* @param callable $callback The filter callback
|
308 |
+
*/
|
309 |
+
public static function expectFilterNotAdded( $filter, $callback ) {
|
310 |
+
self::expectHookNotAdded( 'filter', $filter, $callback );
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Add an expectation that a hook should be added
|
315 |
+
*
|
316 |
+
* @param string $type The type of hook being added
|
317 |
+
* @param string $action The action name
|
318 |
+
* @param callable $callback The callback that should be registered
|
319 |
+
* @param int $priority The priority it should be registered at
|
320 |
+
* @param int $args The number of arguments that should be allowed
|
321 |
+
*/
|
322 |
+
public static function expectHookAdded( $type, $action, $callback, $priority = 10, $args = 1 ) {
|
323 |
+
$intercept = \Mockery::mock( 'intercept' );
|
324 |
+
$intercept->shouldReceive( 'intercepted' )->atLeast()->once();
|
325 |
+
|
326 |
+
/** @var WP_Mock\HookedCallbackResponder $responder */
|
327 |
+
$responder = self::onHookAdded( $action, $type )
|
328 |
+
->with( $callback, $priority, $args );
|
329 |
+
$responder->perform( array( $intercept, 'intercepted' ) );
|
330 |
+
}
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Adds an expectation that a hook should not be added. Based on the
|
334 |
+
* shouldNotReceive API of Mocker.
|
335 |
+
*
|
336 |
+
* @param string $type The hook type, 'action' or 'filter'
|
337 |
+
* @param string $action The name of the hook
|
338 |
+
* @param callable $callback The hooks callback handler.
|
339 |
+
*/
|
340 |
+
public static function expectHookNotAdded( $type, $action, $callback ) {
|
341 |
+
$intercept = \Mockery::mock( 'intercept' );
|
342 |
+
$intercept->shouldNotReceive( 'intercepted' );
|
343 |
+
|
344 |
+
/** @var WP_Mock\HookedCallbackResponder $responder */
|
345 |
+
$responder = self::onHookAdded( $action, $type )
|
346 |
+
->with( $callback, 10, 1 );
|
347 |
+
$responder->perform( array( $intercept, 'intercepted' ) );
|
348 |
+
}
|
349 |
+
|
350 |
+
public static function assertHooksAdded() {
|
351 |
+
if ( ! self:: $event_manager->allHooksAdded() ) {
|
352 |
+
$failed = implode( ', ', self::$event_manager->expectedHooks() );
|
353 |
+
throw new \PHPUnit\Framework\ExpectationFailedException( 'Method failed to add hooks: ' . $failed, null );
|
354 |
+
}
|
355 |
+
}
|
356 |
+
|
357 |
+
/**
|
358 |
+
* Mock a WordPress API function
|
359 |
+
*
|
360 |
+
* This function registers a mock object for a WordPress function and, if
|
361 |
+
* necessary, dynamically defines the function. Pass the function name as
|
362 |
+
* the first argument (e.g. wp_remote_get) and pass in details about the
|
363 |
+
* expectations in the $arguments array. The arguments array has a few
|
364 |
+
* options for defining expectations about how the WordPress function should
|
365 |
+
* be used during a test. Currently, it accepts the following settings:
|
366 |
+
*
|
367 |
+
* - times: Defines expectations for the number of times a function should
|
368 |
+
* be called. The default is 0 or more times. To expect the function to be
|
369 |
+
* called an exact amount of times, set times to a non-negative numeric
|
370 |
+
* value. To specify that the function should be called a minimum number
|
371 |
+
* of times, use a string with the minimum followed by '+' (e.g. '3+'
|
372 |
+
* means 3 or more times). Append a '-' to indicate a maximum number of
|
373 |
+
* times a function should be called (e.g. '3-' means no more than 3 times)
|
374 |
+
* To indicate a range, use '-' between two numbers (e.g. '2-5' means at
|
375 |
+
* least 2 times and no more than 5 times)
|
376 |
+
* - return: Defines the value (if any) that the function should return. If
|
377 |
+
* you pass a Closure as the return value, the function will return
|
378 |
+
* whatever the Closure's return value.
|
379 |
+
* - return_in_order: Use this if your function will be called multiple
|
380 |
+
* times in the test but needs to have different return values. Set this to
|
381 |
+
* an array of return values. Each time the function is called, it will
|
382 |
+
* return the next value in the sequence until it reaches the last value,
|
383 |
+
* which will become the return value for all subsequent calls. For
|
384 |
+
* example, if I am mocking is_single(), I can set return_in_order to
|
385 |
+
* array( false, true ). The first time is_single() is called it will
|
386 |
+
* return false. The second and all subsequent times it will return true.
|
387 |
+
* Setting this value overrides return, so if you set both, return will be
|
388 |
+
* ignored.
|
389 |
+
* - return_arg: Use this to specify that the function should return one of
|
390 |
+
* its arguments. return_arg should be the position of the argument in the
|
391 |
+
* arguments array, so 0 for the first argument, 1 for the second, etc.
|
392 |
+
* You can also set this to true, which is equivalent to 0. This will
|
393 |
+
* override both return and return_in_order.
|
394 |
+
* - args: Use this to set expectations about what the arguments passed to
|
395 |
+
* the function should be. This value should always be an array with the
|
396 |
+
* arguments in order. Like with return, if you use a Closure, its return
|
397 |
+
* value will be used to validate the argument expectations. WP_Mock has
|
398 |
+
* several helper functions to make this feature more flexible. The are
|
399 |
+
* static methods on the \WP_Mock\Functions class. They are:
|
400 |
+
* - Functions::type( $type ) Expects an argument of a certain type. This
|
401 |
+
* can be any core PHP data type (string, int, resource, callable, etc.)
|
402 |
+
* or any class or interface name.
|
403 |
+
* - Functions::anyOf( $values ) Expects the argument to be any value in
|
404 |
+
* the $values array
|
405 |
+
* In addition to these helper functions, you can indicate that the
|
406 |
+
* argument can be any value of any type by using '*'. So, for example, if
|
407 |
+
* I am expecting get_post_meta to be called, the args array might look
|
408 |
+
* something like this:
|
409 |
+
* array( $post->ID, 'some_meta_key', true )
|
410 |
+
*
|
411 |
+
* Returns the Mockery\Expectation object with the function expectations
|
412 |
+
* added. It is possible to use Mockery methods to add expectations to the
|
413 |
+
* object returned, which will then be combined with any expectations that
|
414 |
+
* may have been passed as arguments.
|
415 |
+
*
|
416 |
+
* @param string $function_name
|
417 |
+
* @param array $arguments
|
418 |
+
*
|
419 |
+
* @return Mockery\Expectation
|
420 |
+
*/
|
421 |
+
public static function userFunction( $function_name, $arguments = array() ) {
|
422 |
+
return self::$function_manager->register( $function_name, $arguments );
|
423 |
+
}
|
424 |
+
|
425 |
+
/**
|
426 |
+
* Alias for userFunction
|
427 |
+
*
|
428 |
+
* @deprecated since 1.0
|
429 |
+
*
|
430 |
+
* @param string $function_name
|
431 |
+
* @param array $arguments
|
432 |
+
*
|
433 |
+
* @return Mockery\Expectation
|
434 |
+
*/
|
435 |
+
public static function wpFunction( $function_name, $arguments = array() ) {
|
436 |
+
static::getDeprecatedListener()->logDeprecatedCall( __METHOD__, array( $function_name, $arguments ) );
|
437 |
+
return self::userFunction( $function_name, $arguments );
|
438 |
+
}
|
439 |
+
|
440 |
+
/**
|
441 |
+
* A wrapper for userFunction that will simply set/override the return to be
|
442 |
+
* a function that echoes the value that its passed. For example, esc_attr_e
|
443 |
+
* may need to be mocked, and it must echo some value. echoFunction will set
|
444 |
+
* esc_attr_e to echo the value its passed.
|
445 |
+
*
|
446 |
+
* \WP_Mock::echoFunction( 'esc_attr_e' );
|
447 |
+
* esc_attr_e( 'some_value' ); // echoes (translated) "some_value"
|
448 |
+
*
|
449 |
+
* @param string $function_name Function name.
|
450 |
+
* @param array $arguments Optional. Arguments. Defaults to array().
|
451 |
+
*
|
452 |
+
* @return Mockery\Expectation
|
453 |
+
*/
|
454 |
+
public static function echoFunction( $function_name, $arguments = array() ) {
|
455 |
+
$arguments = (array) $arguments;
|
456 |
+
$arguments['return'] = function ( $param ) {
|
457 |
+
echo $param;
|
458 |
+
};
|
459 |
+
return self::$function_manager->register( $function_name, $arguments );
|
460 |
+
}
|
461 |
+
|
462 |
+
/**
|
463 |
+
* A wrapper for userFunction that will simply set/override the return to be
|
464 |
+
* a function that returns the value that its passed. For example, esc_attr
|
465 |
+
* may need to be mocked, and it must return some value. passthruFunction
|
466 |
+
* will set esc_attr to return the value its passed.
|
467 |
+
*
|
468 |
+
* \WP_Mock::passthruFunction( 'esc_attr' );
|
469 |
+
* echo esc_attr( 'some_value' ); // echoes "some_value"
|
470 |
+
*
|
471 |
+
* @param string $function_name
|
472 |
+
* @param array $arguments
|
473 |
+
*
|
474 |
+
* @return Mockery\Expectation
|
475 |
+
*/
|
476 |
+
public static function passthruFunction( $function_name, $arguments = array() ) {
|
477 |
+
$arguments = (array) $arguments;
|
478 |
+
$arguments['return'] = function ( $param ) {
|
479 |
+
return $param;
|
480 |
+
};
|
481 |
+
return self::$function_manager->register( $function_name, $arguments );
|
482 |
+
}
|
483 |
+
|
484 |
+
/**
|
485 |
+
* Alias for passthruFunction
|
486 |
+
*
|
487 |
+
* @deprecated since 1.0
|
488 |
+
*
|
489 |
+
* @param string $function_name
|
490 |
+
* @param array $arguments
|
491 |
+
*
|
492 |
+
* @return Mockery\Expectation
|
493 |
+
*/
|
494 |
+
public static function wpPassthruFunction( $function_name, $arguments = array() ) {
|
495 |
+
static::getDeprecatedListener()->logDeprecatedCall( __METHOD__, array( $function_name, $arguments ) );
|
496 |
+
return self::passthruFunction( $function_name, $arguments );
|
497 |
+
}
|
498 |
+
|
499 |
+
/**
|
500 |
+
* Add a function mock that aliases another callable.
|
501 |
+
*
|
502 |
+
* e.g.: WP_Mock::alias( 'wp_hash', 'md5' );
|
503 |
+
*
|
504 |
+
* @param string $function_name
|
505 |
+
* @param callable $alias
|
506 |
+
* @param array $arguments
|
507 |
+
*
|
508 |
+
* @return Mockery\Expectation
|
509 |
+
*/
|
510 |
+
public static function alias( $function_name, $alias, $arguments = array() ) {
|
511 |
+
$arguments = (array) $arguments;
|
512 |
+
if ( is_callable( $alias ) ) {
|
513 |
+
$arguments['return'] = function () use ( $alias ) {
|
514 |
+
return call_user_func_array( $alias, func_get_args() );
|
515 |
+
};
|
516 |
+
}
|
517 |
+
return self::$function_manager->register( $function_name, $arguments );
|
518 |
+
}
|
519 |
+
|
520 |
+
/**
|
521 |
+
* Generate a fuzzy object match expectation
|
522 |
+
*
|
523 |
+
* This will let you fuzzy match objects based on their properties without
|
524 |
+
* needing to use the identical (===) operator. This is helpful when the
|
525 |
+
* object being passed to a function is constructed inside the scope of the
|
526 |
+
* function being tested but where you want to make assertions on more than
|
527 |
+
* just the type of the object.
|
528 |
+
*
|
529 |
+
* @param $thing
|
530 |
+
*
|
531 |
+
* @return FuzzyObject
|
532 |
+
*/
|
533 |
+
public static function fuzzyObject( $thing ) {
|
534 |
+
return new FuzzyObject( $thing );
|
535 |
+
}
|
536 |
+
|
537 |
+
/**
|
538 |
+
* @return \WP_Mock\DeprecatedListener
|
539 |
+
*/
|
540 |
+
public static function getDeprecatedListener() {
|
541 |
+
return static::$deprecated_listener;
|
542 |
+
}
|
543 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/API/constant-mocks.php
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Certain constants need to be mocked otherwise various WordPress functions will attempt
|
4 |
+
* to include files that just don't exist.
|
5 |
+
*
|
6 |
+
* For example, nearly all uses of the WP_Http API require first including:
|
7 |
+
* ABSPATH . WPINC . '/class-http.php'
|
8 |
+
*
|
9 |
+
* If these constants are not set, and files do not exist at the location they specify,
|
10 |
+
* functions referencing them will fatally err.
|
11 |
+
*
|
12 |
+
* The `! defined` check is used here so that individual test environments can override
|
13 |
+
* the normal default by setting constants in a bootstrap configuration file.
|
14 |
+
*/
|
15 |
+
|
16 |
+
if ( ! defined( 'WP_CONTENT_DIR' ) ) {
|
17 |
+
define( 'WP_CONTENT_DIR', __DIR__ . '/dummy-files' );
|
18 |
+
}
|
19 |
+
|
20 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
21 |
+
define( 'ABSPATH', '' );
|
22 |
+
}
|
23 |
+
|
24 |
+
if ( ! defined( 'WPINC' ) ) {
|
25 |
+
define( 'WPINC', __DIR__ . '/dummy-files/wp-includes' );
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @since 0.71
|
30 |
+
*/
|
31 |
+
if ( ! defined( 'EZSQL_VERSION' ) ) {
|
32 |
+
define( 'EZSQL_VERSION', 'WP1.25' );
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* HHVM does not support case-insensitive constants.
|
37 |
+
*
|
38 |
+
* @since 0.71
|
39 |
+
* @see http://hhvm.com/blog/3095/getting-wordpress-running-on-hhvm
|
40 |
+
*/
|
41 |
+
if ( ! defined( 'OBJECT' ) ) {
|
42 |
+
define( 'OBJECT', 'OBJECT' );
|
43 |
+
}
|
44 |
+
|
45 |
+
if ( ! defined( 'Object' ) ) {
|
46 |
+
define( 'Object', 'OBJECT' );
|
47 |
+
}
|
48 |
+
|
49 |
+
if ( ! defined( 'object' ) ) {
|
50 |
+
define( 'object', 'OBJECT' );
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @since 2.5.0
|
55 |
+
*/
|
56 |
+
if ( ! defined( 'OBJECT_K' ) ) {
|
57 |
+
define( 'OBJECT_K', 'OBJECT_K' );
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @since 0.71
|
62 |
+
*/
|
63 |
+
if ( ! defined( 'ARRAY_A' ) ) {
|
64 |
+
define( 'ARRAY_A', 'ARRAY_A' );
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @since 0.71
|
69 |
+
*/
|
70 |
+
if ( ! defined( 'ARRAY_N' ) ) {
|
71 |
+
define( 'ARRAY_N', 'ARRAY_N' );
|
72 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/themes/vip/plugins/vip-init.php
ADDED
File without changes
|
vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/wp-includes/class-http.php
ADDED
File without changes
|
vendor/10up/wp_mock/php/WP_Mock/API/function-mocks.php
ADDED
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! function_exists( 'add_action' ) ) {
|
4 |
+
/**
|
5 |
+
* Hooks a function on to a specific action.
|
6 |
+
*
|
7 |
+
* Actions are the hooks that the WordPress core launches at specific points
|
8 |
+
* during execution, or when specific events occur. Plugins can specify that
|
9 |
+
* one or more of its PHP functions are executed at these points, using the
|
10 |
+
* Action API.
|
11 |
+
*
|
12 |
+
* @param string $tag The name of the action to which the $function_to_add is hooked.
|
13 |
+
* @param callback $function_to_add The name of the function you wish to be called.
|
14 |
+
* @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
|
15 |
+
* @param int $accepted_args optional. The number of arguments the function accept (default 1).
|
16 |
+
*/
|
17 |
+
function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
|
18 |
+
\WP_Mock::onActionAdded( $tag )->react( $function_to_add, (int) $priority, (int) $accepted_args );
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
if ( ! function_exists( 'do_action' ) ) {
|
23 |
+
/**
|
24 |
+
* Execute functions hooked on a specific action hook.
|
25 |
+
*
|
26 |
+
* @param string $tag The name of the action to be executed.
|
27 |
+
* @param mixed $arg,... Optional additional arguments which are passed on to the functions hooked to the action.
|
28 |
+
*
|
29 |
+
* @return null Will return null if $tag does not exist in $wp_filter array
|
30 |
+
*/
|
31 |
+
function do_action( $tag, $arg = '' ) {
|
32 |
+
$args = func_get_args();
|
33 |
+
$args = array_slice( $args, 1 );
|
34 |
+
|
35 |
+
return \WP_Mock::onAction( $tag )->react( $args );
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
if ( ! function_exists( 'add_filter' ) ) {
|
40 |
+
/**
|
41 |
+
* Dummy method to prevent filter hooks in constructor from failing.
|
42 |
+
*/
|
43 |
+
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
|
44 |
+
\WP_Mock::onFilterAdded( $tag )->react( $function_to_add, (int) $priority, (int) $accepted_args );
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
if ( ! function_exists( 'apply_filters' ) ) {
|
49 |
+
/**
|
50 |
+
* Call the functions added to a filter hook.
|
51 |
+
*
|
52 |
+
* @param string $tag The name of the filter hook.
|
53 |
+
* @param mixed $value The value on which the filters hooked to <tt>$tag</tt> are applied on.
|
54 |
+
* @param mixed $var,... Additional variables passed to the functions hooked to <tt>$tag</tt>.
|
55 |
+
*
|
56 |
+
* @return mixed The filtered value after all hooked functions are applied to it.
|
57 |
+
*/
|
58 |
+
function apply_filters( $tag, $value ) {
|
59 |
+
$args = func_get_args();
|
60 |
+
$args = array_slice( $args, 1 );
|
61 |
+
$args[0] = $value;
|
62 |
+
|
63 |
+
return \WP_Mock::onFilter( $tag )->apply( $args );
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
if ( ! function_exists( 'esc_html' ) ) {
|
68 |
+
function esc_html() {
|
69 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
if ( ! function_exists( 'esc_attr' ) ) {
|
74 |
+
function esc_attr() {
|
75 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
if ( ! function_exists( 'esc_url' ) ) {
|
80 |
+
function esc_url() {
|
81 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
if ( ! function_exists( 'esc_url_raw' ) ) {
|
86 |
+
function esc_url_raw() {
|
87 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
if ( ! function_exists( 'esc_js' ) ) {
|
92 |
+
function esc_js() {
|
93 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
if ( ! function_exists( 'esc_textarea' ) ) {
|
98 |
+
function esc_textarea() {
|
99 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
if ( ! function_exists( '__' ) ) {
|
104 |
+
function __() {
|
105 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
if ( ! function_exists( '_e' ) ) {
|
110 |
+
function _e() {
|
111 |
+
\WP_Mock\Handler::predefined_echo_function_helper( __FUNCTION__, func_get_args() );
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
if ( ! function_exists( '_x' ) ) {
|
116 |
+
function _x() {
|
117 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
if ( ! function_exists( 'esc_html__' ) ) {
|
122 |
+
function esc_html__() {
|
123 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
if ( ! function_exists( 'esc_html_e' ) ) {
|
128 |
+
function esc_html_e() {
|
129 |
+
\WP_Mock\Handler::predefined_echo_function_helper( __FUNCTION__, func_get_args() );
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
if ( ! function_exists( 'esc_html_x' ) ) {
|
134 |
+
function esc_html_x() {
|
135 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
if ( ! function_exists( 'esc_attr__' ) ) {
|
140 |
+
function esc_attr__() {
|
141 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( ! function_exists( 'esc_attr_e' ) ) {
|
146 |
+
function esc_attr_e() {
|
147 |
+
\WP_Mock\Handler::predefined_echo_function_helper( __FUNCTION__, func_get_args() );
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
if ( ! function_exists( 'esc_attr_x' ) ) {
|
152 |
+
function esc_attr_x() {
|
153 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
154 |
+
}
|
155 |
+
}
|
156 |
+
|
157 |
+
if ( ! function_exists( '_n' ) ) {
|
158 |
+
function _n() {
|
159 |
+
return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
|
160 |
+
}
|
161 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Action.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Mock WordPress actions by substituting each action with an advanced object
|
4 |
+
* capable of intercepting calls and returning predictable behavior.
|
5 |
+
*
|
6 |
+
* @package WP_Mock
|
7 |
+
* @subpackage Hooks
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WP_Mock;
|
11 |
+
|
12 |
+
|
13 |
+
class Action extends Hook {
|
14 |
+
public function react( $args ) {
|
15 |
+
\WP_Mock::invokeAction( $this->name );
|
16 |
+
|
17 |
+
$arg_num = count( $args );
|
18 |
+
|
19 |
+
if ( 0 === $arg_num ) {
|
20 |
+
if ( ! isset( $this->processors['argsnull'] ) ) {
|
21 |
+
$this->strict_check();
|
22 |
+
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
|
26 |
+
$this->processors['argsnull']->react();
|
27 |
+
} else {
|
28 |
+
$processors = $this->processors;
|
29 |
+
for ( $i = 0; $i < $arg_num - 1; $i ++ ) {
|
30 |
+
$arg = $this->safe_offset( $args[ $i ] );
|
31 |
+
|
32 |
+
if ( ! isset( $processors[ $arg ] ) ) {
|
33 |
+
$this->strict_check();
|
34 |
+
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
$processors = $processors[ $arg ];
|
39 |
+
}
|
40 |
+
|
41 |
+
$arg = $this->safe_offset( $args[ $arg_num - 1 ] );
|
42 |
+
if ( ! is_array( $processors ) || ! isset( $processors[ $arg ] ) ) {
|
43 |
+
$this->strict_check();
|
44 |
+
|
45 |
+
return;
|
46 |
+
}
|
47 |
+
|
48 |
+
$processors[ $arg ]->react();
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
protected function new_responder() {
|
53 |
+
return new Action_Responder();
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @return string
|
58 |
+
*/
|
59 |
+
protected function get_strict_mode_message() {
|
60 |
+
return sprintf( 'Unexpected use of do_action for action %s', $this->name );
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
class Action_Responder {
|
65 |
+
/**
|
66 |
+
* @var mixed
|
67 |
+
*/
|
68 |
+
protected $callable;
|
69 |
+
|
70 |
+
public function perform( $callable ) {
|
71 |
+
$this->callable = $callable;
|
72 |
+
}
|
73 |
+
|
74 |
+
public function react() {
|
75 |
+
call_user_func( $this->callable );
|
76 |
+
}
|
77 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/DeprecatedListener.php
ADDED
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock;
|
4 |
+
|
5 |
+
use \PHPUnit\Framework\TestCase;
|
6 |
+
|
7 |
+
class DeprecatedListener {
|
8 |
+
|
9 |
+
protected $calls = array();
|
10 |
+
|
11 |
+
/** @var \PHPUnit\Framework\TestCase */
|
12 |
+
protected $testResult;
|
13 |
+
|
14 |
+
protected $testName;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @var \PHPUnit\Framework\TestCase
|
18 |
+
*/
|
19 |
+
protected $testCase;
|
20 |
+
|
21 |
+
public function logDeprecatedCall( $method, array $args = array() ) {
|
22 |
+
$this->calls[] = array( $method, $args );
|
23 |
+
}
|
24 |
+
|
25 |
+
public function reset() {
|
26 |
+
$this->calls = array();
|
27 |
+
}
|
28 |
+
|
29 |
+
public function checkCalls() {
|
30 |
+
if ( empty( $this->calls ) ) {
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
$e = new \PHPUnit\Framework\RiskyTestError( $this->getMessage() );
|
34 |
+
$this->testResult->addFailure( $this->testCase, $e, 0 );
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @param \PHPUnit\Framework\TestResult $testResult
|
39 |
+
*/
|
40 |
+
public function setTestResult( $testResult ) {
|
41 |
+
$this->testResult = $testResult;
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param mixed $testName
|
46 |
+
*/
|
47 |
+
public function setTestName( $testName ) {
|
48 |
+
$this->testName = $testName;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function setTestCase( \PHPUnit\Framework\TestCase $testCase ) {
|
52 |
+
$this->testCase = $testCase;
|
53 |
+
}
|
54 |
+
|
55 |
+
protected function getMessage() {
|
56 |
+
$maxLength = array_reduce( $this->getDeprecatedMethods(), function ( $carry, $item ) {
|
57 |
+
return max( $carry, strlen( $item ) );
|
58 |
+
}, 0 ) + 1;
|
59 |
+
$message = 'Deprecated WP Mock calls inside ' . $this->testName . ":";
|
60 |
+
foreach ( $this->getDeprecatedMethodsWithArgs() as $method => $args ) {
|
61 |
+
$firstRun = true;
|
62 |
+
$extra = $maxLength - strlen( $method );
|
63 |
+
foreach ( $args as $arg ) {
|
64 |
+
$message .= "\n ";
|
65 |
+
if ( $firstRun ) {
|
66 |
+
$message .= $method . str_repeat( ' ', $extra );
|
67 |
+
$firstRun = false;
|
68 |
+
$extra = $maxLength;
|
69 |
+
} else {
|
70 |
+
$message .= str_repeat( ' ', $extra );
|
71 |
+
}
|
72 |
+
$message .= $arg;
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
return $message;
|
77 |
+
}
|
78 |
+
|
79 |
+
protected function getDeprecatedMethods() {
|
80 |
+
$methods = array();
|
81 |
+
foreach ( $this->calls as $call ) {
|
82 |
+
$methods[] = $call[0];
|
83 |
+
}
|
84 |
+
|
85 |
+
return array_unique( $methods );
|
86 |
+
}
|
87 |
+
|
88 |
+
protected function getDeprecatedMethodsWithArgs() {
|
89 |
+
$collection = array();
|
90 |
+
foreach ( $this->calls as $call ) {
|
91 |
+
$method = $call[0];
|
92 |
+
$args = json_encode( array_map( array( $this, 'scalarizeArg' ), $call[1] ) );
|
93 |
+
if ( empty( $collection[ $method ] ) ) {
|
94 |
+
$collection[ $method ] = array();
|
95 |
+
}
|
96 |
+
$collection[ $method ][] = $args;
|
97 |
+
}
|
98 |
+
|
99 |
+
return array_map( 'array_unique', $collection );
|
100 |
+
}
|
101 |
+
|
102 |
+
protected function scalarizeArg( $value ) {
|
103 |
+
if ( is_scalar( $value ) ) {
|
104 |
+
return $value;
|
105 |
+
} elseif ( is_object( $value ) ) {
|
106 |
+
return '<' . get_class( $value ) . ':' . spl_object_hash( $value ) . '>';
|
107 |
+
} elseif ( is_array( $value ) ) {
|
108 |
+
if ( is_callable( $value ) ) {
|
109 |
+
return '[' . implode( ',', array_map( array( $this, 'scalarizeArg' ), $value ) ) . ']';
|
110 |
+
} else {
|
111 |
+
return 'Array([' . count( $value ) . '] ...)';
|
112 |
+
}
|
113 |
+
} elseif ( is_resource( $value ) ) {
|
114 |
+
return 'Resource';
|
115 |
+
} else {
|
116 |
+
return 'Unknown Value';
|
117 |
+
}
|
118 |
+
}
|
119 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/EventManager.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock;
|
4 |
+
|
5 |
+
class EventManager {
|
6 |
+
/**
|
7 |
+
* @var array
|
8 |
+
*/
|
9 |
+
protected $filters;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @var array
|
13 |
+
*/
|
14 |
+
protected $actions;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @var array
|
18 |
+
*/
|
19 |
+
protected $expected;
|
20 |
+
|
21 |
+
protected $callbacks;
|
22 |
+
|
23 |
+
public function __construct() {
|
24 |
+
$this->flush();
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Clear internal storage.
|
29 |
+
*/
|
30 |
+
public function flush() {
|
31 |
+
$this->filters = array();
|
32 |
+
$this->actions = array();
|
33 |
+
$this->expected = array();
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @param string $name Action handler to retrieve
|
38 |
+
*
|
39 |
+
* @return Action
|
40 |
+
*/
|
41 |
+
public function action( $name ) {
|
42 |
+
if ( ! isset( $this->actions[ $name ] ) ) {
|
43 |
+
$this->actions[ $name ] = new Action( $name );
|
44 |
+
$this->expected[] = 'action::' . $name;
|
45 |
+
}
|
46 |
+
|
47 |
+
return $this->actions[ $name ];
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @param string $name Filter handler to retrieve
|
52 |
+
*
|
53 |
+
* @return Filter
|
54 |
+
*/
|
55 |
+
public function filter( $name ) {
|
56 |
+
if ( ! isset( $this->filters[ $name ] ) ) {
|
57 |
+
$this->filters[ $name ] = new Filter( $name );
|
58 |
+
$this->expected[] = 'filter::' . $name;
|
59 |
+
}
|
60 |
+
|
61 |
+
return $this->filters[ $name ];
|
62 |
+
}
|
63 |
+
|
64 |
+
public function callback( $name, $type = 'filter' ) {
|
65 |
+
$type_name = "$type::$name";
|
66 |
+
if ( ! isset( $this->callbacks[ $type_name ] ) ) {
|
67 |
+
$hookedCallback = new HookedCallback( $name );
|
68 |
+
$hookedCallback->setType( $type );
|
69 |
+
$this->callbacks[ $type_name ] = $hookedCallback;
|
70 |
+
$this->expected[] = "callback::$type_name";
|
71 |
+
}
|
72 |
+
|
73 |
+
return $this->callbacks[ $type_name ];
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Remember that a particular hook has been invoked during operation.
|
78 |
+
*
|
79 |
+
* @param string $hook
|
80 |
+
* @param string $type
|
81 |
+
*/
|
82 |
+
public function called( $hook, $type = 'action' ) {
|
83 |
+
$position = array_search( $type . '::' . $hook, $this->expected );
|
84 |
+
array_splice( $this->expected, $position, 1 );
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Return a list of all the actions we're expecting a test to invoke.
|
89 |
+
*
|
90 |
+
* @return array
|
91 |
+
*/
|
92 |
+
public function expectedActions() {
|
93 |
+
return array_keys( $this->actions );
|
94 |
+
}
|
95 |
+
|
96 |
+
public function expectedHooks() {
|
97 |
+
return array_keys( $this->callbacks );
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Check whether or not all actions have been invoked at least once.
|
102 |
+
*
|
103 |
+
* @return bool
|
104 |
+
*/
|
105 |
+
public function allActionsCalled() {
|
106 |
+
foreach( $this->expected as $hook ) {
|
107 |
+
if ( 0 === strpos( $hook, 'action::' ) ) {
|
108 |
+
return false;
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
return true;
|
113 |
+
}
|
114 |
+
|
115 |
+
public function allHooksAdded() {
|
116 |
+
foreach( $this->expected as $hook ) {
|
117 |
+
if ( 0 === strpos( $hook, 'callback::' ) ) {
|
118 |
+
return false;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
return true;
|
123 |
+
}
|
124 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Filter.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Mock WordPress filters by substituting each filter with an advanced object
|
4 |
+
* capable of intercepting calls and returning predictable data.
|
5 |
+
*
|
6 |
+
* @package WP_Mock
|
7 |
+
* @subpackage Hooks
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WP_Mock;
|
11 |
+
|
12 |
+
|
13 |
+
class Filter extends Hook {
|
14 |
+
/**
|
15 |
+
* Apply the stored filter.
|
16 |
+
*
|
17 |
+
* @param array $args Arguments passed to apply_filters()
|
18 |
+
*
|
19 |
+
* @return mixed
|
20 |
+
*/
|
21 |
+
public function apply( $args ) {
|
22 |
+
if ( $args[0] === null && count( $args ) === 1 ) {
|
23 |
+
if ( isset( $this->processors['argsnull'] ) ) {
|
24 |
+
return $this->processors['argsnull']->send();
|
25 |
+
}
|
26 |
+
$this->strict_check();
|
27 |
+
|
28 |
+
return null;
|
29 |
+
}
|
30 |
+
|
31 |
+
$processors = $this->processors;
|
32 |
+
foreach ( $args as $arg ) {
|
33 |
+
$key = $this->safe_offset( $arg );
|
34 |
+
if ( ! is_array( $processors ) || ! isset( $processors[ $key ] ) ) {
|
35 |
+
$this->strict_check();
|
36 |
+
|
37 |
+
return $arg;
|
38 |
+
}
|
39 |
+
|
40 |
+
$processors = $processors[ $key ];
|
41 |
+
}
|
42 |
+
|
43 |
+
return call_user_func_array( array($processors, 'send'), $args );
|
44 |
+
}
|
45 |
+
|
46 |
+
protected function new_responder() {
|
47 |
+
return new Filter_Responder();
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
protected function get_strict_mode_message() {
|
54 |
+
return sprintf( 'Unexpected use of apply_filters for filter %s', $this->name );
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
class Filter_Responder {
|
59 |
+
/**
|
60 |
+
* @var mixed
|
61 |
+
*/
|
62 |
+
protected $value;
|
63 |
+
|
64 |
+
public function reply( $value ) {
|
65 |
+
$this->value = $value;
|
66 |
+
}
|
67 |
+
|
68 |
+
public function send() {
|
69 |
+
if ( $this->value instanceof InvokedFilterValue ) {
|
70 |
+
return call_user_func_array( $this->value, func_get_args() );
|
71 |
+
}
|
72 |
+
|
73 |
+
return $this->value;
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
vendor/10up/wp_mock/php/WP_Mock/Functions.php
ADDED
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock;
|
4 |
+
|
5 |
+
use Mockery;
|
6 |
+
|
7 |
+
class Functions {
|
8 |
+
|
9 |
+
private $mocked_functions = array();
|
10 |
+
|
11 |
+
private $internal_functions = array();
|
12 |
+
|
13 |
+
private static $wp_mocked_functions = array();
|
14 |
+
|
15 |
+
private $patchwork_functions = array();
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Constructor for the Functions object
|
19 |
+
*/
|
20 |
+
public function __construct() {
|
21 |
+
Handler::cleanup();
|
22 |
+
$this->flush();
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Emptys the mocked_functions array
|
27 |
+
*/
|
28 |
+
public function flush() {
|
29 |
+
$this->mocked_functions = array();
|
30 |
+
Handler::cleanup();
|
31 |
+
$this->patchwork_functions = array();
|
32 |
+
if ( function_exists( 'Patchwork\undoAll' ) ) {
|
33 |
+
\Patchwork\restoreAll();
|
34 |
+
}
|
35 |
+
if ( empty( self::$wp_mocked_functions ) ) {
|
36 |
+
self::$wp_mocked_functions = array(
|
37 |
+
'add_action',
|
38 |
+
'do_action',
|
39 |
+
'add_filter',
|
40 |
+
'apply_filters',
|
41 |
+
'esc_attr',
|
42 |
+
'esc_html',
|
43 |
+
'esc_js',
|
44 |
+
'esc_textarea',
|
45 |
+
'esc_url',
|
46 |
+
'esc_url_raw',
|
47 |
+
'__',
|
48 |
+
'_e',
|
49 |
+
'_x',
|
50 |
+
'esc_attr__',
|
51 |
+
'esc_attr_e',
|
52 |
+
'esc_attr_x',
|
53 |
+
'esc_html__',
|
54 |
+
'esc_html_e',
|
55 |
+
'esc_html_x',
|
56 |
+
'_n',
|
57 |
+
);
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Registers the function to be mocked and sets up its expectations
|
63 |
+
*
|
64 |
+
* @param string $function
|
65 |
+
* @param array $arguments
|
66 |
+
*
|
67 |
+
* @throws \Exception If the function name is invalid
|
68 |
+
*
|
69 |
+
* @return Mockery\Expectation
|
70 |
+
*/
|
71 |
+
public function register( $function, $arguments ) {
|
72 |
+
$expectation = null;
|
73 |
+
try {
|
74 |
+
$this->generate_function( $function );
|
75 |
+
if ( empty( $this->mocked_functions[$function] ) ) {
|
76 |
+
$this->mocked_functions[$function] = Mockery::mock( 'wp_api' );
|
77 |
+
}
|
78 |
+
$mock = $this->mocked_functions[$function];
|
79 |
+
|
80 |
+
$method = preg_replace( '/\\\\+/', '_', $function );
|
81 |
+
$expectation = $this->set_up_mock( $mock, $method, $arguments );
|
82 |
+
Handler::register_handler( $function, array( $mock, $method ) );
|
83 |
+
} catch ( \Exception $e ) {
|
84 |
+
throw $e;
|
85 |
+
}
|
86 |
+
return $expectation;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Sets up an argument placeholder that allows it to be any of an enumerated
|
91 |
+
* list of possibilities
|
92 |
+
*
|
93 |
+
* @return \Mockery\Matcher\anyOf
|
94 |
+
*/
|
95 |
+
public static function anyOf() {
|
96 |
+
return call_user_func_array( array( '\\Mockery', 'anyOf' ), func_get_args() );
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Sets up an argument placeholder that requires the argument to be of a
|
101 |
+
* certain type
|
102 |
+
*
|
103 |
+
* This may be any type for which there is a "is_*" function, or any class or
|
104 |
+
* interface.
|
105 |
+
*
|
106 |
+
* @param string $expected
|
107 |
+
*
|
108 |
+
* @return Mockery\Matcher\Type
|
109 |
+
*/
|
110 |
+
public static function type( $expected ) {
|
111 |
+
return Mockery::type( $expected );
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Set up the mock object with an expectation for this test.
|
116 |
+
*
|
117 |
+
* @param \Mockery\Mock $mock
|
118 |
+
* @param string $function
|
119 |
+
* @param array $arguments
|
120 |
+
*
|
121 |
+
* @return Mockery\Expectation
|
122 |
+
*/
|
123 |
+
protected function set_up_mock( $mock, $function, $arguments ) {
|
124 |
+
$expectation = $mock->shouldReceive( $function );
|
125 |
+
|
126 |
+
if ( isset( $arguments['times'] ) ) {
|
127 |
+
$times = $arguments['times'];
|
128 |
+
if ( is_int( $times ) || preg_match( '/^\d+$/', $times ) ) {
|
129 |
+
$expectation->times( (int) $times );
|
130 |
+
} elseif ( preg_match( '/^(\d+)([\-+])$/', $times, $matches ) ) {
|
131 |
+
$method = '+' === $matches[2] ? 'atLeast' : 'atMost';
|
132 |
+
$expectation->$method()->times( (int) $matches[1] );
|
133 |
+
} elseif ( preg_match( '/^(\d+)-(\d+)$/', $times, $matches ) ) {
|
134 |
+
$num1 = (int) $matches[1];
|
135 |
+
$num2 = (int) $matches[2];
|
136 |
+
if ( $num1 === $num2 ) {
|
137 |
+
$expectation->times( $num1 );
|
138 |
+
} else {
|
139 |
+
$expectation->between( min( $num1, $num2 ), max( $num1, $num2 ) );
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
if ( isset( $arguments['args'] ) ) {
|
144 |
+
$arguments['args'] = array_map( function ( $argument ) {
|
145 |
+
if ( $argument instanceof \Closure ) {
|
146 |
+
return Mockery::on( $argument );
|
147 |
+
}
|
148 |
+
if ( $argument === '*' ) {
|
149 |
+
return Mockery::any();
|
150 |
+
}
|
151 |
+
return $argument;
|
152 |
+
}, (array) $arguments['args'] );
|
153 |
+
call_user_func_array( array( $expectation, 'with' ), $arguments['args'] );
|
154 |
+
}
|
155 |
+
if ( isset( $arguments['return_arg'] ) ) {
|
156 |
+
$argument_position = true === $arguments['return_arg'] ? 0 : (int) $arguments['return_arg'];
|
157 |
+
$arguments['return'] = function () use ( $argument_position ) {
|
158 |
+
if ( $argument_position >= func_num_args() ) {
|
159 |
+
return null;
|
160 |
+
}
|
161 |
+
return func_get_arg( $argument_position );
|
162 |
+
};
|
163 |
+
} elseif ( isset( $arguments['return_in_order'] ) ) {
|
164 |
+
$arguments['return'] = new ReturnSequence();
|
165 |
+
$arguments['return']->setReturnValues( (array) $arguments['return_in_order'] );
|
166 |
+
}
|
167 |
+
if ( isset( $arguments['return'] ) ) {
|
168 |
+
$return = $arguments['return'];
|
169 |
+
if ( $return instanceof ReturnSequence ) {
|
170 |
+
$expectation->andReturnValues( $return->getReturnValues() );
|
171 |
+
} elseif ( $return instanceof \Closure ) {
|
172 |
+
$expectation->andReturnUsing( $return );
|
173 |
+
} else {
|
174 |
+
$expectation->andReturn( $return );
|
175 |
+
}
|
176 |
+
}
|
177 |
+
return $expectation;
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Dynamically declares a function if it doesn't already exist
|
182 |
+
*
|
183 |
+
* This function is namespace-aware.
|
184 |
+
*
|
185 |
+
* @param $function_name
|
186 |
+
*/
|
187 |
+
private function generate_function( $function_name ) {
|
188 |
+
$function_name = $this->sanitize_function_name( $function_name );
|
189 |
+
|
190 |
+
$this->validate_function_name( $function_name );
|
191 |
+
|
192 |
+
$this->create_function( $function_name ) OR $this->replace_function( $function_name );
|
193 |
+
}
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Create a function with WP_Mock
|
197 |
+
*
|
198 |
+
* @param string $function_name
|
199 |
+
*
|
200 |
+
* @return bool True if this function created the mock, false otherwise
|
201 |
+
*/
|
202 |
+
private function create_function( $function_name ) {
|
203 |
+
if ( in_array( $function_name, self::$wp_mocked_functions ) ) {
|
204 |
+
return true;
|
205 |
+
}
|
206 |
+
if ( function_exists( $function_name ) ) {
|
207 |
+
return false;
|
208 |
+
}
|
209 |
+
|
210 |
+
$parts = explode( '\\', $function_name );
|
211 |
+
$name = array_pop( $parts );
|
212 |
+
$namespace = empty( $parts ) ? '' : 'namespace ' . implode( '\\', $parts ) . ';' . PHP_EOL;
|
213 |
+
|
214 |
+
$declaration = <<<EOF
|
215 |
+
$namespace
|
216 |
+
function $name() {
|
217 |
+
return \\WP_Mock\\Handler::handle_function( '$function_name', func_get_args() );
|
218 |
+
}
|
219 |
+
EOF;
|
220 |
+
eval( $declaration );
|
221 |
+
|
222 |
+
self::$wp_mocked_functions[] = $function_name;
|
223 |
+
|
224 |
+
return true;
|
225 |
+
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* Replace a function with patchwork
|
229 |
+
*
|
230 |
+
* @param string $function_name
|
231 |
+
*
|
232 |
+
* @return bool
|
233 |
+
*/
|
234 |
+
private function replace_function( $function_name ) {
|
235 |
+
if ( in_array( $function_name, $this->patchwork_functions ) ) {
|
236 |
+
return true;
|
237 |
+
}
|
238 |
+
if ( ! function_exists( 'Patchwork\\replace' ) ) {
|
239 |
+
return true;
|
240 |
+
}
|
241 |
+
$this->patchwork_functions[] = $function_name;
|
242 |
+
\Patchwork\redefine( $function_name, function () use ( $function_name ) {
|
243 |
+
return Handler::handle_function( $function_name, func_get_args() );
|
244 |
+
} );
|
245 |
+
return true;
|
246 |
+
}
|
247 |
+
|
248 |
+
/**
|
249 |
+
* Clean the function name to be of a standard shape
|
250 |
+
*
|
251 |
+
* @param string $function_name
|
252 |
+
*
|
253 |
+
* @return string
|
254 |
+
*/
|
255 |
+
private function sanitize_function_name( $function_name ) {
|
256 |
+
$function_name = trim( $function_name, '\\' );
|
257 |
+
return $function_name;
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* Validate the function name for format and other considerations
|
262 |
+
*
|
263 |
+
* Validation will fail if the string doesn't match the regex, if it's an
|
264 |
+
* internal function, or if it is a reserved word in PHP.
|
265 |
+
*
|
266 |
+
* @param string $function_name
|
267 |
+
*
|
268 |
+
* @throws \InvalidArgumentException
|
269 |
+
*/
|
270 |
+
private function validate_function_name( $function_name ) {
|
271 |
+
if ( function_exists( $function_name ) ) {
|
272 |
+
if ( empty( $this->internal_functions ) ) {
|
273 |
+
$defined_functions = get_defined_functions();
|
274 |
+
$this->internal_functions = $defined_functions['internal'];
|
275 |
+
}
|
276 |
+
if ( in_array( $function_name, $this->internal_functions ) ) {
|
277 |
+
throw new \InvalidArgumentException;
|
278 |
+
}
|
279 |
+
}
|
280 |
+
|
281 |
+
$parts = explode( '\\', $function_name );
|
282 |
+
$name = array_pop( $parts );
|
283 |
+
|
284 |
+
if ( ! preg_match( '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $function_name ) ) {
|
285 |
+
throw new \InvalidArgumentException( 'Function name not properly formatted!' );
|
286 |
+
}
|
287 |
+
|
288 |
+
$reserved_words = ' __halt_compiler abstract and array as break callable case catch class clone const continue declare default die do echo else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval exit extends final for foreach function global goto if implements include include_once instanceof insteadof interface isset list namespace new or print private protected public require require_once return static switch throw trait try unset use var while xor __CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ ';
|
289 |
+
if ( false !== strpos( $reserved_words, " $name " ) ) {
|
290 |
+
throw new \InvalidArgumentException( 'Function name can not be a reserved word!' );
|
291 |
+
}
|
292 |
+
}
|
293 |
+
|
294 |
+
}
|
295 |
+
|
vendor/10up/wp_mock/php/WP_Mock/Handler.php
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Created by JetBrains PhpStorm.
|
4 |
+
* User: Eric
|
5 |
+
* Date: 3/26/13
|
6 |
+
* Time: 8:56 AM
|
7 |
+
* To change this template use File | Settings | File Templates.
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace WP_Mock;
|
11 |
+
|
12 |
+
|
13 |
+
class Handler {
|
14 |
+
/**
|
15 |
+
* Mocked method handlers registered by the test class.
|
16 |
+
*
|
17 |
+
* @var array
|
18 |
+
*/
|
19 |
+
private static $handlers = array();
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Overrides any existing handlers to set a new callback.
|
23 |
+
*
|
24 |
+
* @param string $function_name
|
25 |
+
* @param string $callback
|
26 |
+
*/
|
27 |
+
public static function register_handler( $function_name, $callback ) {
|
28 |
+
self::$handlers[ $function_name ] = $callback;
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Handle a mocked function call.
|
33 |
+
*
|
34 |
+
* @param string $function_name
|
35 |
+
* @param array $args
|
36 |
+
*
|
37 |
+
* @return mixed
|
38 |
+
*/
|
39 |
+
public static function handle_function( $function_name, $args = array() ) {
|
40 |
+
if ( self::handler_exists( $function_name ) ) {
|
41 |
+
$callback = self::$handlers[ $function_name ];
|
42 |
+
|
43 |
+
return call_user_func_array( $callback, $args );
|
44 |
+
} elseif ( \WP_Mock::strictMode() ) {
|
45 |
+
throw new \PHPUnit\Framework\ExpectationFailedException(
|
46 |
+
sprintf( 'No handler found for %s', $function_name )
|
47 |
+
);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Check if a handler exists
|
53 |
+
*
|
54 |
+
* @param string $function_name
|
55 |
+
*
|
56 |
+
* @return bool
|
57 |
+
*/
|
58 |
+
public static function handler_exists( $function_name ) {
|
59 |
+
return isset( self::$handlers[ $function_name ] );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Clear all registered handlers.
|
64 |
+
*/
|
65 |
+
public static function cleanup() {
|
66 |
+
self::$handlers = array();
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Helper function for common passthru return functions
|
71 |
+
*
|
72 |
+
* @param string $function_name
|
73 |
+
* @param array $args
|
74 |
+
*
|
75 |
+
* @return mixed
|
76 |
+
*/
|
77 |
+
public static function predefined_return_function_helper( $function_name, array $args ) {
|
78 |
+
$result = self::handle_function( $function_name, $args );
|
79 |
+
if ( ! self::handler_exists( $function_name ) ) {
|
80 |
+
$result = isset( $args[0] ) ? $args[0] : $result;
|
81 |
+
}
|
82 |
+
|
83 |
+
return $result;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Helper function for common echo functions
|
88 |
+
*
|
89 |
+
* @param string $function_name
|
90 |
+
* @param array $args
|
91 |
+
*
|
92 |
+
* @throws \Exception
|
93 |
+
*/
|
94 |
+
public static function predefined_echo_function_helper( $function_name, array $args ) {
|
95 |
+
ob_start();
|
96 |
+
try {
|
97 |
+
self::handle_function( $function_name, $args );
|
98 |
+
} catch ( \Exception $exception ) {
|
99 |
+
ob_end_clean();
|
100 |
+
throw $exception;
|
101 |
+
}
|
102 |
+
$result = ob_get_clean();
|
103 |
+
if ( ! self::handler_exists( $function_name ) ) {
|
104 |
+
$result = isset( $args[0] ) ? $args[0] : $result;
|
105 |
+
}
|
106 |
+
|
107 |
+
echo $result;
|
108 |
+
}
|
109 |
+
|
110 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Hook.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Abstract Hook interface for both actions and filters.
|
4 |
+
*
|
5 |
+
* @package WP_Mock
|
6 |
+
* @subpackage Hooks
|
7 |
+
*/
|
8 |
+
|
9 |
+
namespace WP_Mock;
|
10 |
+
|
11 |
+
|
12 |
+
abstract class Hook {
|
13 |
+
/** @var string Hook name */
|
14 |
+
protected $name;
|
15 |
+
|
16 |
+
/** @var array Collection of processors */
|
17 |
+
protected $processors = array();
|
18 |
+
|
19 |
+
public function __construct( $name ) {
|
20 |
+
$this->name = $name;
|
21 |
+
}
|
22 |
+
|
23 |
+
protected function safe_offset( $value ) {
|
24 |
+
if ( is_null( $value ) ) {
|
25 |
+
return 'null';
|
26 |
+
} elseif ( is_scalar( $value ) ) {
|
27 |
+
return $value;
|
28 |
+
} elseif ( is_object( $value ) ) {
|
29 |
+
return spl_object_hash( $value );
|
30 |
+
} elseif ( is_array( $value ) ) {
|
31 |
+
$return = '';
|
32 |
+
foreach ( $value as $k => $v ) {
|
33 |
+
$k = is_numeric( $k ) ? '' : $k;
|
34 |
+
$return .= $k . $this->safe_offset( $v );
|
35 |
+
}
|
36 |
+
|
37 |
+
return $return;
|
38 |
+
}
|
39 |
+
|
40 |
+
return '';
|
41 |
+
}
|
42 |
+
|
43 |
+
/** @return Action_Responder|Filter_Responder */
|
44 |
+
public function with() {
|
45 |
+
$args = func_get_args();
|
46 |
+
$responder = $this->new_responder();
|
47 |
+
|
48 |
+
if ( $args === array( null ) ) {
|
49 |
+
$this->processors['argsnull'] = $responder;
|
50 |
+
} else {
|
51 |
+
$num_args = count( $args );
|
52 |
+
|
53 |
+
$processors = &$this->processors;
|
54 |
+
for ( $i = 0; $i < $num_args - 1; $i ++ ) {
|
55 |
+
$arg = $this->safe_offset( $args[ $i ] );
|
56 |
+
|
57 |
+
if ( ! isset( $processors[ $arg ] ) ) {
|
58 |
+
$processors[ $arg ] = array();
|
59 |
+
}
|
60 |
+
|
61 |
+
$processors = &$processors[ $arg ];
|
62 |
+
}
|
63 |
+
|
64 |
+
$processors[ $this->safe_offset( $args[ $num_args - 1 ] ) ] = $responder;
|
65 |
+
}
|
66 |
+
|
67 |
+
return $responder;
|
68 |
+
}
|
69 |
+
|
70 |
+
protected abstract function new_responder();
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Throw an exception if strict mode is on
|
74 |
+
*
|
75 |
+
* @throws \PHPUnit\Framework\ExpectationFailedException
|
76 |
+
*/
|
77 |
+
protected function strict_check() {
|
78 |
+
if ( \WP_Mock::strictMode() ) {
|
79 |
+
throw new \PHPUnit\Framework\ExpectationFailedException( $this->get_strict_mode_message() );
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @return string
|
85 |
+
*/
|
86 |
+
abstract protected function get_strict_mode_message();
|
87 |
+
|
88 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/HookedCallback.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock;
|
4 |
+
|
5 |
+
class HookedCallback extends Hook {
|
6 |
+
|
7 |
+
protected $type = 'filter';
|
8 |
+
protected $callback;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @param string $type
|
12 |
+
*/
|
13 |
+
public function setType( $type ) {
|
14 |
+
$this->type = $type;
|
15 |
+
}
|
16 |
+
|
17 |
+
public function react( $callback, $priority, $argument_count ) {
|
18 |
+
\WP_Mock::addHook( $this->name );
|
19 |
+
|
20 |
+
$safe_callback = $this->safe_offset( $callback );
|
21 |
+
if (
|
22 |
+
empty( $this->processors[ $safe_callback ] ) ||
|
23 |
+
empty( $this->processors[ $safe_callback ][ $priority ] ) ||
|
24 |
+
empty( $this->processors[ $safe_callback ][ $priority ][ $argument_count ] )
|
25 |
+
) {
|
26 |
+
$this->callback = $callback;
|
27 |
+
$this->strict_check();
|
28 |
+
|
29 |
+
return null;
|
30 |
+
}
|
31 |
+
|
32 |
+
return $this->processors[ $this->safe_offset( $callback ) ][ $priority ][ $argument_count ]->react();
|
33 |
+
}
|
34 |
+
|
35 |
+
protected function new_responder() {
|
36 |
+
return new HookedCallbackResponder();
|
37 |
+
}
|
38 |
+
|
39 |
+
protected function safe_offset( $value ) {
|
40 |
+
if ( $value instanceof \Closure ) {
|
41 |
+
$value = '__CLOSURE__';
|
42 |
+
}
|
43 |
+
|
44 |
+
return parent::safe_offset( $value );
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Converts a callable to a string
|
49 |
+
*
|
50 |
+
* Closures get returned as 'Closure', objects (those with an __invoke() method get turned into <Class>::__invoke,
|
51 |
+
* and arrays get turned into <Class>::<method>
|
52 |
+
*
|
53 |
+
* @param callable $callback
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
protected function callback_to_string( $callback ) {
|
58 |
+
if ( ! is_string( $callback ) ) {
|
59 |
+
if ( $callback instanceof \Closure ) {
|
60 |
+
$callback = 'Closure';
|
61 |
+
} elseif ( is_object( $callback ) ) {
|
62 |
+
$callback = get_class( $callback ) . '::__invoke';
|
63 |
+
} else {
|
64 |
+
$class = $callback[0];
|
65 |
+
$method = $callback[1];
|
66 |
+
if ( ! is_string( $class ) ) {
|
67 |
+
$class = get_class( $class );
|
68 |
+
}
|
69 |
+
$callback = "{$class}::$method";
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
return $callback;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @param $callback
|
78 |
+
*
|
79 |
+
* @return string
|
80 |
+
*/
|
81 |
+
protected function get_strict_mode_message() {
|
82 |
+
return sprintf(
|
83 |
+
'Unexpected use of add_%s for action %s with callback %s',
|
84 |
+
$this->type,
|
85 |
+
$this->name,
|
86 |
+
$this->callback_to_string( $this->callback )
|
87 |
+
);
|
88 |
+
}
|
89 |
+
|
90 |
+
}
|
91 |
+
|
92 |
+
class HookedCallbackResponder {
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @var callable
|
96 |
+
*/
|
97 |
+
protected $callable;
|
98 |
+
|
99 |
+
public function perform( $callable ) {
|
100 |
+
$this->callable = $callable;
|
101 |
+
}
|
102 |
+
|
103 |
+
public function react() {
|
104 |
+
call_user_func( $this->callable );
|
105 |
+
}
|
106 |
+
|
107 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/InvokedFilterValue.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock;
|
4 |
+
|
5 |
+
class InvokedFilterValue {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @var callable
|
9 |
+
*/
|
10 |
+
protected $callback;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* InvokedFilterValue constructor.
|
14 |
+
*
|
15 |
+
* @param callable $callable
|
16 |
+
*/
|
17 |
+
public function __construct( $callable ) {
|
18 |
+
$this->callback = $callable;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function __invoke() {
|
22 |
+
return call_user_func_array( $this->callback, func_get_args() );
|
23 |
+
}
|
24 |
+
|
25 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Loader.php
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* SplClassLoader implementation that implements the technical interoperability
|
4 |
+
* standards for PHP 5.3 namespaces and class names.
|
5 |
+
*
|
6 |
+
* http://groups.google.com/group/php-standards/web/final-proposal
|
7 |
+
*
|
8 |
+
* // Example which loads classes for the Doctrine Common package in the
|
9 |
+
* // Doctrine\Common namespace.
|
10 |
+
* $classLoader = new SplClassLoader('Doctrine\Common', '/path/to/doctrine');
|
11 |
+
* $classLoader->register();
|
12 |
+
*
|
13 |
+
* @author Jonathan H. Wage <jonwage@gmail.com>
|
14 |
+
* @author Roman S. Borschel <roman@code-factory.org>
|
15 |
+
* @author Matthew Weier O'Phinney <matthew@zend.com>
|
16 |
+
* @author Kris Wallsmith <kris.wallsmith@gmail.com>
|
17 |
+
* @author Fabien Potencier <fabien.potencier@symfony-project.org>
|
18 |
+
*/
|
19 |
+
|
20 |
+
namespace WP_Mock;
|
21 |
+
|
22 |
+
|
23 |
+
class Loader {
|
24 |
+
private $_fileExtension = '.php';
|
25 |
+
private $_namespace;
|
26 |
+
private $_includePath;
|
27 |
+
private $_namespaceSeparator = '\\';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Creates a new <tt>Loader</tt> that loads classes of the
|
31 |
+
* specified namespace.
|
32 |
+
*
|
33 |
+
* @param string $ns The namespace to use.
|
34 |
+
*/
|
35 |
+
public function __construct( $ns = 'WP_Mock', $includePath = null ) {
|
36 |
+
$this->_namespace = $ns;
|
37 |
+
$this->_includePath = $includePath;
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Sets the namespace separator used by classes in the namespace of this class loader.
|
42 |
+
*
|
43 |
+
* @param string $sep The separator to use.
|
44 |
+
*/
|
45 |
+
public function setNamespaceSeparator( $sep ) {
|
46 |
+
$this->_namespaceSeparator = $sep;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Gets the namespace seperator used by classes in the namespace of this class loader.
|
51 |
+
*
|
52 |
+
* @return void
|
53 |
+
*/
|
54 |
+
public function getNamespaceSeparator() {
|
55 |
+
return $this->_namespaceSeparator;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Sets the base include path for all class files in the namespace of this class loader.
|
60 |
+
*
|
61 |
+
* @param string $includePath
|
62 |
+
*/
|
63 |
+
public function setIncludePath( $includePath ) {
|
64 |
+
$this->_includePath = $includePath;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Gets the base include path for all class files in the namespace of this class loader.
|
69 |
+
*
|
70 |
+
* @return string $includePath
|
71 |
+
*/
|
72 |
+
public function getIncludePath() {
|
73 |
+
return $this->_includePath;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Sets the file extension of class files in the namespace of this class loader.
|
78 |
+
*
|
79 |
+
* @param string $fileExtension
|
80 |
+
*/
|
81 |
+
public function setFileExtension( $fileExtension ) {
|
82 |
+
$this->_fileExtension = $fileExtension;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Gets the file extension of class files in the namespace of this class loader.
|
87 |
+
*
|
88 |
+
* @return string $fileExtension
|
89 |
+
*/
|
90 |
+
public function getFileExtension() {
|
91 |
+
return $this->_fileExtension;
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Installs this class loader on the SPL autoload stack.
|
96 |
+
*
|
97 |
+
* @param bool $prepend If true, prepend autoloader on the autoload stack
|
98 |
+
*/
|
99 |
+
public function register( $prepend = false ) {
|
100 |
+
//spl_autoload_register( array( $this, 'loadClass' ), true, $prepend );
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Uninstalls this class loader from the SPL autoloader stack.
|
105 |
+
*/
|
106 |
+
public function unregister() {
|
107 |
+
//spl_autoload_unregister( array( $this, 'loadClass' ) );
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Loads the given class or interface.
|
112 |
+
*
|
113 |
+
* @param string $className The name of the class to load.
|
114 |
+
*
|
115 |
+
* @return void
|
116 |
+
*/
|
117 |
+
public function loadClass( $className ) {
|
118 |
+
return;
|
119 |
+
if ( $className === 'WP_Mock' ) {
|
120 |
+
require $this->getFullPath( 'WP_Mock.php' );
|
121 |
+
|
122 |
+
return;
|
123 |
+
}
|
124 |
+
if ( null === $this->_namespace
|
125 |
+
|| $this->_namespace . $this->_namespaceSeparator === substr( $className, 0, strlen( $this->_namespace . $this->_namespaceSeparator ) )
|
126 |
+
) {
|
127 |
+
$fileName = '';
|
128 |
+
$namespace = '';
|
129 |
+
if ( false !== ( $lastNsPos = strripos( $className, $this->_namespaceSeparator ) ) ) {
|
130 |
+
$namespace = substr( $className, 0, $lastNsPos );
|
131 |
+
$className = substr( $className, $lastNsPos + 1 );
|
132 |
+
$fileName = str_replace( $this->_namespaceSeparator, DIRECTORY_SEPARATOR, $namespace ) . DIRECTORY_SEPARATOR;
|
133 |
+
}
|
134 |
+
$fileName .= str_replace( '_', DIRECTORY_SEPARATOR, $className ) . $this->_fileExtension;
|
135 |
+
require $this->getFullPath( $fileName );
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Returns full path for $fileName if _includePath is set, or leaves as-is for PHP's internal search in 'require'.
|
141 |
+
*
|
142 |
+
* @param string $fileName relative to include path.
|
143 |
+
*
|
144 |
+
* @return string
|
145 |
+
*/
|
146 |
+
private function getFullPath( $fileName ) {
|
147 |
+
return ($this->_includePath !== null ? $this->_includePath . DIRECTORY_SEPARATOR : '') . $fileName;
|
148 |
+
}
|
149 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Matcher/FuzzyObject.php
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock\Matcher;
|
4 |
+
|
5 |
+
use Mockery\Exception;
|
6 |
+
use Mockery\Matcher\MatcherAbstract;
|
7 |
+
|
8 |
+
class FuzzyObject extends MatcherAbstract {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @param object|array $expected
|
12 |
+
*
|
13 |
+
* @throws \Mockery\Exception If a non-object non-array expectation is provided
|
14 |
+
*/
|
15 |
+
public function __construct( $expected = null ) {
|
16 |
+
if ( ! is_object( $expected ) ) {
|
17 |
+
if ( is_array( $expected ) ) {
|
18 |
+
$expected = (object) $expected;
|
19 |
+
} else {
|
20 |
+
throw new Exception( 'FuzzyObject matcher can only match objects!' );
|
21 |
+
}
|
22 |
+
}
|
23 |
+
parent::__construct( $expected );
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Check if the actual value matches the expected.
|
28 |
+
* Actual passed by reference to preserve reference trail (where applicable)
|
29 |
+
* back to the original method parameter.
|
30 |
+
*
|
31 |
+
* @param mixed $actual
|
32 |
+
*
|
33 |
+
* @return bool
|
34 |
+
*/
|
35 |
+
public function match( &$actual ) {
|
36 |
+
if ( ! is_object( $actual ) ) {
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
if ( ! $this->haveCommonAncestor( $actual, $this->_expected ) ) {
|
41 |
+
return false;
|
42 |
+
}
|
43 |
+
|
44 |
+
$expected_properties = get_object_vars( $this->_expected );
|
45 |
+
|
46 |
+
foreach ( $expected_properties as $prop => $value ) {
|
47 |
+
if ( ! isset( $actual->$prop ) || $value !== $actual->$prop ) {
|
48 |
+
return false;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
$actual_keys = array_keys( get_object_vars( $actual ) );
|
53 |
+
$extra_actual = array_diff( $actual_keys, array_keys( $expected_properties ) );
|
54 |
+
if ( ! empty( $extra_actual ) ) {
|
55 |
+
return false;
|
56 |
+
}
|
57 |
+
|
58 |
+
return true;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Return a string representation of this Matcher
|
63 |
+
*
|
64 |
+
* @return string
|
65 |
+
*/
|
66 |
+
public function __toString() {
|
67 |
+
$values = array_values( get_object_vars( $this->_expected ) );
|
68 |
+
$values = array_map( function ( $value ) {
|
69 |
+
if ( ! is_scalar( $value ) ) {
|
70 |
+
if ( is_array( $value ) ) {
|
71 |
+
$value = 'Array';
|
72 |
+
} elseif ( is_object( $value ) ) {
|
73 |
+
$value = get_class( $value );
|
74 |
+
} elseif ( is_resource( $value ) ) {
|
75 |
+
$value = get_resource_type( $value );
|
76 |
+
} else {
|
77 |
+
$value = 'unknown';
|
78 |
+
}
|
79 |
+
}
|
80 |
+
return $value;
|
81 |
+
}, $values );
|
82 |
+
return '<FuzzyObject[' . implode( ', ', $values ) . ']>';
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* @param object $object1
|
87 |
+
* @param object $object2
|
88 |
+
*
|
89 |
+
* @return bool
|
90 |
+
*/
|
91 |
+
protected function haveCommonAncestor( $object1, $object2 ) {
|
92 |
+
$class1 = get_class( $object1 );
|
93 |
+
$class2 = get_class( $object2 );
|
94 |
+
if ( $class1 === $class2 ) {
|
95 |
+
return true;
|
96 |
+
}
|
97 |
+
$inheritance1 = class_parents( $class1 );
|
98 |
+
$inheritance2 = class_parents( $class2 );
|
99 |
+
return (bool) array_intersect_assoc( $inheritance1, $inheritance2 );
|
100 |
+
}
|
101 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/ReturnSequence.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock;
|
4 |
+
|
5 |
+
class ReturnSequence {
|
6 |
+
|
7 |
+
private $return_values = array();
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Constructor to set up the return sequence object
|
11 |
+
*
|
12 |
+
* You can pass arbitrary arguments to the constructor to set to the internal
|
13 |
+
* $return_values array
|
14 |
+
*/
|
15 |
+
public function __construct() {
|
16 |
+
$this->return_values = func_get_args();
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Retrieve the $return_values array
|
21 |
+
*
|
22 |
+
* @return array
|
23 |
+
*/
|
24 |
+
public function getReturnValues() {
|
25 |
+
return $this->return_values;
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Set the return_values array
|
30 |
+
*
|
31 |
+
* Values should be passed in as one array. Keys will be discarded.
|
32 |
+
*
|
33 |
+
* @param array $return_values
|
34 |
+
*/
|
35 |
+
public function setReturnValues( $return_values ) {
|
36 |
+
$this->return_values = array_values( (array) $return_values );
|
37 |
+
}
|
38 |
+
|
39 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/ExpectationsMet.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock\Tools\Constraints;
|
4 |
+
|
5 |
+
use PHPUnit\Framework\Constraint\Constraint;
|
6 |
+
use Mockery;
|
7 |
+
use Exception;
|
8 |
+
|
9 |
+
class ExpectationsMet extends \PHPUnit\Framework\Constraint\Constraint {
|
10 |
+
|
11 |
+
private $_mockery_message;
|
12 |
+
|
13 |
+
public function matches( $other ) {
|
14 |
+
try {
|
15 |
+
Mockery::getContainer()->mockery_verify();
|
16 |
+
} catch ( Exception $e ) {
|
17 |
+
$this->_mockery_message = $e->getMessage();
|
18 |
+
return false;
|
19 |
+
}
|
20 |
+
return true;
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Returns a string representation of the object.
|
25 |
+
*
|
26 |
+
* @return string
|
27 |
+
*/
|
28 |
+
public function toString() {
|
29 |
+
return 'WP Mock expectations are met';
|
30 |
+
}
|
31 |
+
|
32 |
+
protected function additionalFailureDescription( $other ) {
|
33 |
+
return str_replace( array( "\r", "\n" ), '', (string) $this->_mockery_message );
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function failureDescription( $other ) {
|
37 |
+
return $this->toString();
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/IsEqualHtml.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock\Tools\Constraints;
|
4 |
+
|
5 |
+
use PHPUnit\Framework\Constraint\IsEqual;
|
6 |
+
|
7 |
+
class IsEqualHtml extends \PHPUnit\Framework\Constraint\IsEqual {
|
8 |
+
|
9 |
+
private function clean( $thing ) {
|
10 |
+
$thing = preg_replace( '/\n\s+/', '', $thing );
|
11 |
+
$thing = preg_replace( '/\s\s+/', ' ', $thing );
|
12 |
+
return str_replace( array( "\r", "\n", "\t" ), '', $thing );
|
13 |
+
}
|
14 |
+
|
15 |
+
public function evaluate( $other, $description = '', $returnResult = FALSE ) {
|
16 |
+
$other = $this->clean( $other );
|
17 |
+
$this->value = $this->clean( $this->value );
|
18 |
+
return parent::evaluate( $other, $description, $returnResult );
|
19 |
+
}
|
20 |
+
|
21 |
+
}
|
vendor/10up/wp_mock/php/WP_Mock/Tools/TestCase.php
ADDED
@@ -0,0 +1,319 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WP_Mock\Tools;
|
4 |
+
|
5 |
+
use PHPUnit\Framework\TestResult;
|
6 |
+
use Exception;
|
7 |
+
use Mockery;
|
8 |
+
use ReflectionMethod;
|
9 |
+
use Text_Template;
|
10 |
+
use WP_Mock;
|
11 |
+
use WP_Mock\Tools\Constraints\ExpectationsMet;
|
12 |
+
use WP_Mock\Tools\Constraints\IsEqualHtml;
|
13 |
+
|
14 |
+
abstract class TestCase extends \PHPUnit\Framework\TestCase {
|
15 |
+
|
16 |
+
protected $mockedStaticMethods = array();
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @var array
|
20 |
+
*/
|
21 |
+
protected $__default_post = array();
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @var array
|
25 |
+
*/
|
26 |
+
protected $__default_get = array();
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @var array
|
30 |
+
*/
|
31 |
+
protected $__default_request = array();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @var bool|callable
|
35 |
+
*/
|
36 |
+
protected $__contentFilterCallback = false;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
+
protected $testFiles = array();
|
42 |
+
|
43 |
+
public function setUp() {
|
44 |
+
$this->requireFileDependencies();
|
45 |
+
|
46 |
+
WP_Mock::setUp();
|
47 |
+
|
48 |
+
$_GET = (array) $this->__default_get;
|
49 |
+
$_POST = (array) $this->__default_post;
|
50 |
+
$_REQUEST = (array) $this->__default_request;
|
51 |
+
|
52 |
+
$this->setUpContentFiltering();
|
53 |
+
|
54 |
+
$this->cleanGlobals();
|
55 |
+
}
|
56 |
+
|
57 |
+
public function tearDown() {
|
58 |
+
WP_Mock::tearDown();
|
59 |
+
|
60 |
+
$this->cleanGlobals();
|
61 |
+
|
62 |
+
$this->mockedStaticMethods = array();
|
63 |
+
|
64 |
+
$_GET = array();
|
65 |
+
$_POST = array();
|
66 |
+
$_REQUEST = array();
|
67 |
+
}
|
68 |
+
|
69 |
+
public function assertActionsCalled() {
|
70 |
+
$actions_not_added = $expected_actions = 0;
|
71 |
+
try {
|
72 |
+
WP_Mock::assertActionsCalled();
|
73 |
+
} catch ( Exception $e ) {
|
74 |
+
$actions_not_added = 1;
|
75 |
+
$expected_actions = $e->getMessage();
|
76 |
+
}
|
77 |
+
$this->assertEmpty( $actions_not_added, $expected_actions );
|
78 |
+
}
|
79 |
+
|
80 |
+
public function assertHooksAdded() {
|
81 |
+
$hooks_not_added = $expected_hooks = 0;
|
82 |
+
try {
|
83 |
+
WP_Mock::assertHooksAdded();
|
84 |
+
} catch ( Exception $e ) {
|
85 |
+
$hooks_not_added = 1;
|
86 |
+
$expected_hooks = $e->getMessage();
|
87 |
+
}
|
88 |
+
$this->assertEmpty( $hooks_not_added, $expected_hooks );
|
89 |
+
}
|
90 |
+
|
91 |
+
public function ns( $function ) {
|
92 |
+
if ( ! is_string( $function ) || false !== strpos( $function, '\\' ) ) {
|
93 |
+
return $function;
|
94 |
+
}
|
95 |
+
|
96 |
+
$thisClassName = trim( get_class( $this ), '\\' );
|
97 |
+
|
98 |
+
if ( ! strpos( $thisClassName, '\\' ) ) {
|
99 |
+
return $function;
|
100 |
+
}
|
101 |
+
|
102 |
+
// $thisNamespace is constructed by exploding the current class name on
|
103 |
+
// namespace separators, running array_slice on that array starting at 0
|
104 |
+
// and ending one element from the end (chops the class name off) and
|
105 |
+
// imploding that using namespace separators as the glue.
|
106 |
+
$thisNamespace = implode( '\\', array_slice( explode( '\\', $thisClassName ), 0, - 1 ) );
|
107 |
+
|
108 |
+
return "$thisNamespace\\$function";
|
109 |
+
}
|
110 |
+
|
111 |
+
public function stripTabsAndNewlines( $content ) {
|
112 |
+
return str_replace( array( "\t", "\r", "\n" ), '', $content );
|
113 |
+
}
|
114 |
+
|
115 |
+
public function expectOutputString( $expectedString ) {
|
116 |
+
if ( is_callable( $this->__contentFilterCallback ) ) {
|
117 |
+
$expectedString = call_user_func( $this->__contentFilterCallback, $expectedString );
|
118 |
+
}
|
119 |
+
parent::expectOutputString( $expectedString );
|
120 |
+
}
|
121 |
+
|
122 |
+
public function assertCurrentConditionsMet( $message = '' ) {
|
123 |
+
$this->assertThat( null, new ExpectationsMet, $message );
|
124 |
+
}
|
125 |
+
|
126 |
+
public function assertConditionsMet( $message = '' ) {
|
127 |
+
$this->assertCurrentConditionsMet( $message );
|
128 |
+
}
|
129 |
+
|
130 |
+
public function assertEqualsHTML( $expected, $actual, $message = '' ) {
|
131 |
+
$constraint = new IsEqualHtml( $expected );
|
132 |
+
$this->assertThat( $actual, $constraint, $message );
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Nuke the globals from orbit for process isolation
|
137 |
+
*
|
138 |
+
* See http://kpayne.me/2012/07/02/phpunit-process-isolation-and-constant-already-defined/
|
139 |
+
* for more details
|
140 |
+
*
|
141 |
+
* {@inheritdoc}
|
142 |
+
*/
|
143 |
+
protected function prepareTemplate( Text_Template $template ) {
|
144 |
+
$template->setVar( array(
|
145 |
+
'globals' => '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = \'' . $GLOBALS['__PHPUNIT_BOOTSTRAP'] . '\';',
|
146 |
+
) );
|
147 |
+
parent::prepareTemplate( $template );
|
148 |
+
}
|
149 |
+
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Mock a static method of a class
|
153 |
+
*
|
154 |
+
* @param string $class The classname or class::method name
|
155 |
+
* @param null|string $method The method name. Optional if class::method used for $class
|
156 |
+
*
|
157 |
+
* @return \Mockery\Expectation
|
158 |
+
* @throws Exception
|
159 |
+
*/
|
160 |
+
protected function mockStaticMethod( $class, $method = null ) {
|
161 |
+
if ( ! $method ) {
|
162 |
+
list( $class, $method ) = ( explode( '::', $class ) + array( null, null ) );
|
163 |
+
}
|
164 |
+
if ( ! $method ) {
|
165 |
+
throw new Exception( sprintf( 'Could not mock %s::%s', $class, $method ) );
|
166 |
+
}
|
167 |
+
if ( ! WP_Mock::usingPatchwork() || ! function_exists( 'Patchwork\Interceptor\patch' ) ) {
|
168 |
+
throw new Exception( 'Patchwork is not loaded! Please load patchwork before mocking static methods!' );
|
169 |
+
}
|
170 |
+
|
171 |
+
$safe_method = "wp_mock_safe_$method";
|
172 |
+
$signature = md5( "$class::$method" );
|
173 |
+
if ( ! empty( $this->mockedStaticMethods[ $signature ] ) ) {
|
174 |
+
$mock = $this->mockedStaticMethods[ $signature ];
|
175 |
+
} else {
|
176 |
+
|
177 |
+
$rMethod = false;
|
178 |
+
if ( class_exists( $class ) ) {
|
179 |
+
$rMethod = new ReflectionMethod( $class, $method );
|
180 |
+
}
|
181 |
+
if (
|
182 |
+
$rMethod &&
|
183 |
+
(
|
184 |
+
! $rMethod->isUserDefined() ||
|
185 |
+
! $rMethod->isStatic() ||
|
186 |
+
$rMethod->isPrivate()
|
187 |
+
)
|
188 |
+
) {
|
189 |
+
throw new Exception( sprintf( '%s::%s is not a user-defined non-private static method!', $class, $method ) );
|
190 |
+
}
|
191 |
+
|
192 |
+
/** @var \Mockery\Mock $mock */
|
193 |
+
$mock = Mockery::mock( $class );
|
194 |
+
$mock->shouldAllowMockingProtectedMethods();
|
195 |
+
$this->mockedStaticMethods[ $signature ] = $mock;
|
196 |
+
|
197 |
+
\Patchwork\redefine( "$class::$method", function () use ( $mock, $safe_method ) {
|
198 |
+
return call_user_func_array( array( $mock, $safe_method ), func_get_args() );
|
199 |
+
}, ! ( $rMethod ) );
|
200 |
+
}
|
201 |
+
$expectation = $mock->shouldReceive( $safe_method );
|
202 |
+
|
203 |
+
return $expectation;
|
204 |
+
}
|
205 |
+
|
206 |
+
/**
|
207 |
+
* @param array|object $data The post data to add to the post
|
208 |
+
*
|
209 |
+
* @return \WP_Post
|
210 |
+
*/
|
211 |
+
protected function mockPost( $data ) {
|
212 |
+
/** @var \WP_Post $post */
|
213 |
+
$post = \Mockery::mock( 'WP_Post' );
|
214 |
+
$data = array_merge( array(
|
215 |
+
'ID' => 0,
|
216 |
+
'post_author' => 0,
|
217 |
+
'post_type' => '',
|
218 |
+
'post_title' => '',
|
219 |
+
'post_date' => '',
|
220 |
+
'post_date_gmt' => '',
|
221 |
+
'post_content' => '',
|
222 |
+
'post_excerpt' => '',
|
223 |
+
'post_status' => '',
|
224 |
+
'comment_status' => '',
|
225 |
+
'ping_status' => '',
|
226 |
+
'post_password' => '',
|
227 |
+
'post_parent' => 0,
|
228 |
+
'post_modified' => '',
|
229 |
+
'post_modified_gmt' => '',
|
230 |
+
'comment_count' => 0,
|
231 |
+
'menu_order' => 0,
|
232 |
+
), (array) $data );
|
233 |
+
array_walk( $data, function ( $value, $prop ) use ( $post ) {
|
234 |
+
$post->$prop = $value;
|
235 |
+
} );
|
236 |
+
|
237 |
+
return $post;
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* @param array $query_vars
|
242 |
+
*
|
243 |
+
* @return \WP
|
244 |
+
*/
|
245 |
+
protected function mockWp( array $query_vars = array() ) {
|
246 |
+
/** @var \WP $wp */
|
247 |
+
$wp = \Mockery::mock( 'WP' );
|
248 |
+
$wp->query_vars = $query_vars;
|
249 |
+
|
250 |
+
return $wp;
|
251 |
+
}
|
252 |
+
|
253 |
+
protected function cleanGlobals() {
|
254 |
+
$common_globals = array(
|
255 |
+
'post',
|
256 |
+
'wp_query',
|
257 |
+
);
|
258 |
+
foreach ( $common_globals as $var ) {
|
259 |
+
if ( isset( $GLOBALS[ $var ] ) ) {
|
260 |
+
unset( $GLOBALS[ $var ] );
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
}
|
265 |
+
|
266 |
+
/**
|
267 |
+
* Require any testFiles that are defined in a subclass
|
268 |
+
*
|
269 |
+
* This will only work if the WP_MOCK_INCLUDE_DIR is defined to point to the root directory you want to include
|
270 |
+
* files from.
|
271 |
+
*/
|
272 |
+
protected function requireFileDependencies() {
|
273 |
+
if ( ! empty( $this->testFiles ) && defined( 'WP_MOCK_INCLUDE_DIR' ) ) {
|
274 |
+
foreach ( $this->testFiles as $file ) {
|
275 |
+
if ( file_exists( WP_MOCK_INCLUDE_DIR . $file ) ) {
|
276 |
+
require_once( WP_MOCK_INCLUDE_DIR . $file );
|
277 |
+
}
|
278 |
+
}
|
279 |
+
}
|
280 |
+
}
|
281 |
+
|
282 |
+
protected function setUpContentFiltering() {
|
283 |
+
$this->__contentFilterCallback = false;
|
284 |
+
|
285 |
+
$annotations = $this->getAnnotations();
|
286 |
+
if (
|
287 |
+
! isset( $annotations['stripTabsAndNewlinesFromOutput'] ) ||
|
288 |
+
$annotations['stripTabsAndNewlinesFromOutput'][0] !== 'disabled' ||
|
289 |
+
(
|
290 |
+
is_numeric( $annotations['stripTabsAndNewlinesFromOutput'][0] ) &&
|
291 |
+
(int) $annotations['stripTabsAndNewlinesFromOutput'][0] !== 0
|
292 |
+
)
|
293 |
+
) {
|
294 |
+
$this->__contentFilterCallback = array( $this, 'stripTabsAndNewlines' );
|
295 |
+
$this->setOutputCallback( $this->__contentFilterCallback );
|
296 |
+
}
|
297 |
+
}
|
298 |
+
|
299 |
+
public function run( \PHPUnit\Framework\TestResult $result = null ) {
|
300 |
+
if ( $result === null ) {
|
301 |
+
$result = $this->createResult();
|
302 |
+
}
|
303 |
+
|
304 |
+
WP_Mock::getDeprecatedListener()->setTestResult( $result );
|
305 |
+
WP_Mock::getDeprecatedListener()->setTestCase($this);
|
306 |
+
|
307 |
+
return parent::run( $result );
|
308 |
+
}
|
309 |
+
|
310 |
+
/**
|
311 |
+
* @after
|
312 |
+
*/
|
313 |
+
public function checkDeprecatedCalls() {
|
314 |
+
WP_Mock::getDeprecatedListener()->checkCalls();
|
315 |
+
WP_Mock::getDeprecatedListener()->reset();
|
316 |
+
}
|
317 |
+
|
318 |
+
}
|
319 |
+
|
vendor/10up/wp_mock/phpdoc.xml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2 |
+
<phpdoc>
|
3 |
+
<parser>
|
4 |
+
<package>WP_Mock</package>
|
5 |
+
<target>docs</target>
|
6 |
+
<encoding>utf-8</encoding>
|
7 |
+
</parser>
|
8 |
+
<transformer>
|
9 |
+
<target>docs</target>
|
10 |
+
</transformer>
|
11 |
+
<files>
|
12 |
+
<directory>WP_Mock</directory>
|
13 |
+
<ignore>tests/*</ignore>
|
14 |
+
<ignore>vendor/*</ignore>
|
15 |
+
</files>
|
16 |
+
</phpdoc>
|
vendor/10up/wp_mock/phpunit.xml.dist
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
2 |
+
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.6/phpunit.xsd"
|
3 |
+
bootstrap="./bootstrap.php.dist"
|
4 |
+
backupGlobals="false"
|
5 |
+
beStrictAboutCoversAnnotation="true"
|
6 |
+
beStrictAboutOutputDuringTests="true"
|
7 |
+
beStrictAboutTestsThatDoNotTestAnything="true"
|
8 |
+
beStrictAboutTodoAnnotatedTests="true"
|
9 |
+
colors="true"
|
10 |
+
verbose="true">
|
11 |
+
<testsuites>
|
12 |
+
<testsuite>
|
13 |
+
<directory suffix="Test.php">./tests/</directory>
|
14 |
+
</testsuite>
|
15 |
+
</testsuites>
|
16 |
+
|
17 |
+
<filter>
|
18 |
+
<whitelist processUncoveredFilesFromWhitelist="true">
|
19 |
+
<directory suffix=".php">php</directory>
|
20 |
+
</whitelist>
|
21 |
+
</filter>
|
22 |
+
</phpunit>
|
vendor/antecedent/patchwork/.scrutinizer.yml
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
checks:
|
3 |
+
php:
|
4 |
+
code_rating: true
|
5 |
+
duplication: true
|
6 |
+
filter:
|
7 |
+
excluded_paths:
|
8 |
+
- "tests/"
|
9 |
+
- "vendor/"
|
10 |
+
coding_style:
|
11 |
+
php:
|
12 |
+
indentation:
|
13 |
+
general:
|
14 |
+
use_tabs: false
|
15 |
+
spaces:
|
16 |
+
around_operators:
|
17 |
+
concatenation: true
|
18 |
+
negation: false
|
19 |
+
build:
|
20 |
+
cache:
|
21 |
+
directories:
|
22 |
+
- vendor/
|
23 |
+
nodes:
|
24 |
+
php54:
|
25 |
+
environment:
|
26 |
+
php: 5.4
|
27 |
+
php55:
|
28 |
+
environment:
|
29 |
+
php: 5.5
|
30 |
+
php56:
|
31 |
+
environment:
|
32 |
+
php: 5.6
|
33 |
+
php70:
|
34 |
+
environment:
|
35 |
+
php: 7.0
|
36 |
+
php71:
|
37 |
+
environment:
|
38 |
+
php: 7.1
|
39 |
+
php72:
|
40 |
+
environment:
|
41 |
+
php: 7.2
|
42 |
+
php73:
|
43 |
+
environment:
|
44 |
+
php: 7.3
|
45 |
+
tests:
|
46 |
+
override:
|
47 |
+
- idle_timeout: 4800
|
48 |
+
command: "./vendor/bin/phpunit tests"
|
vendor/antecedent/patchwork/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
The MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2010-2018 Ignas Rudaitis
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in
|
13 |
+
all copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21 |
+
THE SOFTWARE.
|
vendor/antecedent/patchwork/Patchwork.php
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @author Ignas Rudaitis <ignas.rudaitis@gmail.com>
|
5 |
+
* @copyright 2010-2018 Ignas Rudaitis
|
6 |
+
* @license http://www.opensource.org/licenses/mit-license.html
|
7 |
+
*/
|
8 |
+
namespace Patchwork;
|
9 |
+
|
10 |
+
if (function_exists('Patchwork\replace')) {
|
11 |
+
return;
|
12 |
+
}
|
13 |
+
|
14 |
+
require_once __DIR__ . '/src/Exceptions.php';
|
15 |
+
require_once __DIR__ . '/src/CallRerouting.php';
|
16 |
+
require_once __DIR__ . '/src/CodeManipulation.php';
|
17 |
+
require_once __DIR__ . '/src/Utils.php';
|
18 |
+
require_once __DIR__ . '/src/Stack.php';
|
19 |
+
require_once __DIR__ . '/src/Config.php';
|
20 |
+
|
21 |
+
function redefine($subject, callable $content)
|
22 |
+
{
|
23 |
+
$handle = null;
|
24 |
+
foreach (array_slice(func_get_args(), 1) as $content) {
|
25 |
+
$handle = CallRerouting\connect($subject, $content, $handle);
|
26 |
+
}
|
27 |
+
$handle->silence();
|
28 |
+
return $handle;
|
29 |
+
}
|
30 |
+
|
31 |
+
function relay(array $args = null)
|
32 |
+
{
|
33 |
+
return CallRerouting\relay($args);
|
34 |
+
}
|
35 |
+
|
36 |
+
function fallBack()
|
37 |
+
{
|
38 |
+
throw new Exceptions\NoResult;
|
39 |
+
}
|
40 |
+
|
41 |
+
function restore(CallRerouting\Handle $handle)
|
42 |
+
{
|
43 |
+
$handle->expire();
|
44 |
+
}
|
45 |
+
|
46 |
+
function restoreAll()
|
47 |
+
{
|
48 |
+
CallRerouting\disconnectAll();
|
49 |
+
}
|
50 |
+
|
51 |
+
function silence(CallRerouting\Handle $handle)
|
52 |
+
{
|
53 |
+
$handle->silence();
|
54 |
+
}
|
55 |
+
|
56 |
+
function assertEventuallyDefined(CallRerouting\Handle $handle)
|
57 |
+
{
|
58 |
+
$handle->unsilence();
|
59 |
+
}
|
60 |
+
|
61 |
+
function getClass()
|
62 |
+
{
|
63 |
+
return Stack\top('class');
|
64 |
+
}
|
65 |
+
|
66 |
+
function getCalledClass()
|
67 |
+
{
|
68 |
+
return Stack\topCalledClass();
|
69 |
+
}
|
70 |
+
|
71 |
+
function getFunction()
|
72 |
+
{
|
73 |
+
return Stack\top('function');
|
74 |
+
}
|
75 |
+
|
76 |
+
function getMethod()
|
77 |
+
{
|
78 |
+
return getClass() . '::' . getFunction();
|
79 |
+
}
|
80 |
+
|
81 |
+
function configure()
|
82 |
+
{
|
83 |
+
Config\locate();
|
84 |
+
}
|
85 |
+
|
86 |
+
function hasMissed($callable)
|
87 |
+
{
|
88 |
+
return Utils\callableWasMissed($callable);
|
89 |
+
}
|
90 |
+
|
91 |
+
function always($value)
|
92 |
+
{
|
93 |
+
return function() use ($value) {
|
94 |
+
return $value;
|
95 |
+
};
|
96 |
+
}
|
97 |
+
|
98 |
+
Utils\alias('Patchwork', [
|
99 |
+
'redefine' => ['replace', 'replaceLater'],
|
100 |
+
'relay' => 'callOriginal',
|
101 |
+
'fallBack' => 'pass',
|
102 |
+
'restore' => 'undo',
|
103 |
+
'restoreAll' => 'undoAll',
|
104 |
+
]);
|
105 |
+
|
106 |
+
configure();
|
107 |
+
|
108 |
+
Utils\markMissedCallables();
|
109 |
+
|
110 |
+
if (Utils\runningOnHHVM()) {
|
111 |
+
# no preprocessor needed on HHVM;
|
112 |
+
# just let Patchwork become a wrapper for fb_intercept()
|
113 |
+
spl_autoload_register('Patchwork\CallRerouting\deployQueue');
|
114 |
+
return;
|
115 |
+
}
|
116 |
+
|
117 |
+
CodeManipulation\Stream::wrap();
|
118 |
+
|
119 |
+
CodeManipulation\register([
|
120 |
+
CodeManipulation\Actions\CodeManipulation\propagateThroughEval(),
|
121 |
+
CodeManipulation\Actions\CallRerouting\injectCallInterceptionCode(),
|
122 |
+
CodeManipulation\Actions\RedefinitionOfInternals\spliceNamedFunctionCalls(),
|
123 |
+
CodeManipulation\Actions\RedefinitionOfInternals\spliceDynamicCalls(),
|
124 |
+
CodeManipulation\Actions\RedefinitionOfNew\spliceAllInstantiations,
|
125 |
+
CodeManipulation\Actions\RedefinitionOfNew\publicizeConstructors,
|
126 |
+
CodeManipulation\Actions\ConflictPrevention\preventImportingOtherCopiesOfPatchwork(),
|
127 |
+
]);
|
128 |
+
|
129 |
+
CodeManipulation\onImport([
|
130 |
+
CodeManipulation\Actions\CallRerouting\markPreprocessedFiles(),
|
131 |
+
]);
|
132 |
+
|
133 |
+
Utils\clearOpcodeCaches();
|
134 |
+
|
135 |
+
register_shutdown_function('Patchwork\Utils\clearOpcodeCaches');
|
136 |
+
|
137 |
+
CallRerouting\createStubsForInternals();
|
138 |
+
CallRerouting\connectDefaultInternals();
|
139 |
+
|
140 |
+
require __DIR__ . '/src/Redefinitions/LanguageConstructs.php';
|
141 |
+
|
142 |
+
CodeManipulation\register([
|
143 |
+
CodeManipulation\Actions\RedefinitionOfLanguageConstructs\spliceAllConfiguredLanguageConstructs(),
|
144 |
+
CodeManipulation\Actions\CallRerouting\injectQueueDeploymentCode(),
|
145 |
+
]);
|
146 |
+
|
147 |
+
if (Utils\wasRunAsConsoleApp()) {
|
148 |
+
require __DIR__ . '/src/Console.php';
|
149 |
+
}
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903::getLoader();
|
vendor/composer/ClassLoader.php
CHANGED
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
|
|
37 |
*
|
38 |
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
-
* @see
|
41 |
-
* @see
|
42 |
*/
|
43 |
class ClassLoader
|
44 |
{
|
@@ -60,7 +60,7 @@ class ClassLoader
|
|
60 |
public function getPrefixes()
|
61 |
{
|
62 |
if (!empty($this->prefixesPsr0)) {
|
63 |
-
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
64 |
}
|
65 |
|
66 |
return array();
|
37 |
*
|
38 |
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
+
* @see https://www.php-fig.org/psr/psr-0/
|
41 |
+
* @see https://www.php-fig.org/psr/psr-4/
|
42 |
*/
|
43 |
class ClassLoader
|
44 |
{
|
60 |
public function getPrefixes()
|
61 |
{
|
62 |
if (!empty($this->prefixesPsr0)) {
|
63 |
+
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
64 |
}
|
65 |
|
66 |
return array();
|
vendor/composer/InstalledVersions.php
ADDED
@@ -0,0 +1,819 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
namespace Composer;
|
14 |
+
|
15 |
+
use Composer\Semver\VersionParser;
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
|
22 |
+
class InstalledVersions
|
23 |
+
{
|
24 |
+
private static $installed = array (
|
25 |
+
'root' =>
|
26 |
+
array (
|
27 |
+
'pretty_version' => '4.5.1',
|
28 |
+
'version' => '4.5.1.0',
|
29 |
+
'aliases' =>
|
30 |
+
array (
|
31 |
+
),
|
32 |
+
'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
|
33 |
+
'name' => 'mihdan/cyr2lat',
|
34 |
+
),
|
35 |
+
'versions' =>
|
36 |
+
array (
|
37 |
+
'10up/wp_mock' =>
|
38 |
+
array (
|
39 |
+
'pretty_version' => '0.3.0',
|
40 |
+
'version' => '0.3.0.0',
|
41 |
+
'aliases' =>
|
42 |
+
array (
|
43 |
+
),
|
44 |
+
'reference' => '64956557e98ee4c8c56cd1e396e822adb4673714',
|
45 |
+
),
|
46 |
+
'antecedent/patchwork' =>
|
47 |
+
array (
|
48 |
+
'pretty_version' => '2.1.12',
|
49 |
+
'version' => '2.1.12.0',
|
50 |
+
'aliases' =>
|
51 |
+
array (
|
52 |
+
),
|
53 |
+
'reference' => 'b98e046dd4c0acc34a0846604f06f6111654d9ea',
|
54 |
+
),
|
55 |
+
'composer/installers' =>
|
56 |
+
array (
|
57 |
+
'pretty_version' => 'v1.9.0',
|
58 |
+
'version' => '1.9.0.0',
|
59 |
+
'aliases' =>
|
60 |
+
array (
|
61 |
+
),
|
62 |
+
'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
|
63 |
+
),
|
64 |
+
'cordoval/hamcrest-php' =>
|
65 |
+
array (
|
66 |
+
'replaced' =>
|
67 |
+
array (
|
68 |
+
0 => '*',
|
69 |
+
),
|
70 |
+
),
|
71 |
+
'davedevelopment/hamcrest-php' =>
|
72 |
+
array (
|
73 |
+
'replaced' =>
|
74 |
+
array (
|
75 |
+
0 => '*',
|
76 |
+
),
|
77 |
+
),
|
78 |
+
'doctrine/instantiator' =>
|
79 |
+
array (
|
80 |
+
'pretty_version' => '1.0.5',
|
81 |
+
'version' => '1.0.5.0',
|
82 |
+
'aliases' =>
|
83 |
+
array (
|
84 |
+
),
|
85 |
+
'reference' => '8e884e78f9f0eb1329e445619e04456e64d8051d',
|
86 |
+
),
|
87 |
+
'guzzlehttp/guzzle' =>
|
88 |
+
array (
|
89 |
+
'pretty_version' => '6.5.5',
|
90 |
+
'version' => '6.5.5.0',
|
91 |
+
'aliases' =>
|
92 |
+
array (
|
93 |
+
),
|
94 |
+
'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
|
95 |
+
),
|
96 |
+
'guzzlehttp/promises' =>
|
97 |
+
array (
|
98 |
+
'pretty_version' => '1.4.0',
|
99 |
+
'version' => '1.4.0.0',
|
100 |
+
'aliases' =>
|
101 |
+
array (
|
102 |
+
),
|
103 |
+
'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
|
104 |
+
),
|
105 |
+
'guzzlehttp/psr7' =>
|
106 |
+
array (
|
107 |
+
'pretty_version' => '1.7.0',
|
108 |
+
'version' => '1.7.0.0',
|
109 |
+
'aliases' =>
|
110 |
+
array (
|
111 |
+
),
|
112 |
+
'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
|
113 |
+
),
|
114 |
+
'hamcrest/hamcrest-php' =>
|
115 |
+
array (
|
116 |
+
'pretty_version' => 'v2.0.1',
|
117 |
+
'version' => '2.0.1.0',
|
118 |
+
'aliases' =>
|
119 |
+
array (
|
120 |
+
),
|
121 |
+
'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3',
|
122 |
+
),
|
123 |
+
'kodova/hamcrest-php' =>
|
124 |
+
array (
|
125 |
+
'replaced' =>
|
126 |
+
array (
|
127 |
+
0 => '*',
|
128 |
+
),
|
129 |
+
),
|
130 |
+
'lucatume/args' =>
|
131 |
+
array (
|
132 |
+
'pretty_version' => '1.0.1.1',
|
133 |
+
'version' => '1.0.1.1',
|
134 |
+
'aliases' =>
|
135 |
+
array (
|
136 |
+
),
|
137 |
+
'reference' => '9ab69f5c995813b2dfbb067100ada500ee2893e8',
|
138 |
+
),
|
139 |
+
'lucatume/function-mocker' =>
|
140 |
+
array (
|
141 |
+
'pretty_version' => 'dev-test-on-windows',
|
142 |
+
'version' => 'dev-test-on-windows',
|
143 |
+
'aliases' =>
|
144 |
+
array (
|
145 |
+
),
|
146 |
+
'reference' => '0383729be9af2f1dba5e553b29c899f10aba8932',
|
147 |
+
),
|
148 |
+
'mihdan/cyr2lat' =>
|
149 |
+
array (
|
150 |
+
'pretty_version' => '4.5.1',
|
151 |
+
'version' => '4.5.1.0',
|
152 |
+
'aliases' =>
|
153 |
+
array (
|
154 |
+
),
|
155 |
+
'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
|
156 |
+
),
|
157 |
+
'mockery/mockery' =>
|
158 |
+
array (
|
159 |
+
'pretty_version' => '1.3.3',
|
160 |
+
'version' => '1.3.3.0',
|
161 |
+
'aliases' =>
|
162 |
+
array (
|
163 |
+
),
|
164 |
+
'reference' => '60fa2f67f6e4d3634bb4a45ff3171fa52215800d',
|
165 |
+
),
|
166 |
+
'myclabs/deep-copy' =>
|
167 |
+
array (
|
168 |
+
'pretty_version' => '1.7.0',
|
169 |
+
'version' => '1.7.0.0',
|
170 |
+
'aliases' =>
|
171 |
+
array (
|
172 |
+
),
|
173 |
+
'reference' => '3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e',
|
174 |
+
),
|
175 |
+
'paragonie/random_compat' =>
|
176 |
+
array (
|
177 |
+
'pretty_version' => 'v9.99.100',
|
178 |
+
'version' => '9.99.100.0',
|
179 |
+
'aliases' =>
|
180 |
+
array (
|
181 |
+
),
|
182 |
+
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
183 |
+
),
|
184 |
+
'phar-io/manifest' =>
|
185 |
+
array (
|
186 |
+
'pretty_version' => '1.0.1',
|
187 |
+
'version' => '1.0.1.0',
|
188 |
+
'aliases' =>
|
189 |
+
array (
|
190 |
+
),
|
191 |
+
'reference' => '2df402786ab5368a0169091f61a7c1e0eb6852d0',
|
192 |
+
),
|
193 |
+
'phar-io/version' =>
|
194 |
+
array (
|
195 |
+
'pretty_version' => '1.0.1',
|
196 |
+
'version' => '1.0.1.0',
|
197 |
+
'aliases' =>
|
198 |
+
array (
|
199 |
+
),
|
200 |
+
'reference' => 'a70c0ced4be299a63d32fa96d9281d03e94041df',
|
201 |
+
),
|
202 |
+
'php-coveralls/php-coveralls' =>
|
203 |
+
array (
|
204 |
+
'pretty_version' => 'v2.4.2',
|
205 |
+
'version' => '2.4.2.0',
|
206 |
+
'aliases' =>
|
207 |
+
array (
|
208 |
+
),
|
209 |
+
'reference' => '8a33ae229da63a0bd22dadae1512af663ce5e559',
|
210 |
+
),
|
211 |
+
'phpcompatibility/php-compatibility' =>
|
212 |
+
array (
|
213 |
+
'pretty_version' => '9.3.5',
|
214 |
+
'version' => '9.3.5.0',
|
215 |
+
'aliases' =>
|
216 |
+
array (
|
217 |
+
),
|
218 |
+
'reference' => '9fb324479acf6f39452e0655d2429cc0d3914243',
|
219 |
+
),
|
220 |
+
'phpcompatibility/phpcompatibility-paragonie' =>
|
221 |
+
array (
|
222 |
+
'pretty_version' => '1.3.0',
|
223 |
+
'version' => '1.3.0.0',
|
224 |
+
'aliases' =>
|
225 |
+
array (
|
226 |
+
),
|
227 |
+
'reference' => 'b862bc32f7e860d0b164b199bd995e690b4b191c',
|
228 |
+
),
|
229 |
+
'phpcompatibility/phpcompatibility-wp' =>
|
230 |
+
array (
|
231 |
+
'pretty_version' => '2.1.0',
|
232 |
+
'version' => '2.1.0.0',
|
233 |
+
'aliases' =>
|
234 |
+
array (
|
235 |
+
),
|
236 |
+
'reference' => '41bef18ba688af638b7310666db28e1ea9158b2f',
|
237 |
+
),
|
238 |
+
'phpdocumentor/reflection-common' =>
|
239 |
+
array (
|
240 |
+
'pretty_version' => '1.0.1',
|
241 |
+
'version' => '1.0.1.0',
|
242 |
+
'aliases' =>
|
243 |
+
array (
|
244 |
+
),
|
245 |
+
'reference' => '21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6',
|
246 |
+
),
|
247 |
+
'phpdocumentor/reflection-docblock' =>
|
248 |
+
array (
|
249 |
+
'pretty_version' => '4.3.4',
|
250 |
+
'version' => '4.3.4.0',
|
251 |
+
'aliases' =>
|
252 |
+
array (
|
253 |
+
),
|
254 |
+
'reference' => 'da3fd972d6bafd628114f7e7e036f45944b62e9c',
|
255 |
+
),
|
256 |
+
'phpdocumentor/type-resolver' =>
|
257 |
+
array (
|
258 |
+
'pretty_version' => '0.5.1',
|
259 |
+
'version' => '0.5.1.0',
|
260 |
+
'aliases' =>
|
261 |
+
array (
|
262 |
+
),
|
263 |
+
'reference' => 'cf842904952e64e703800d094cdf34e715a8a3ae',
|
264 |
+
),
|
265 |
+
'phpspec/prophecy' =>
|
266 |
+
array (
|
267 |
+
'pretty_version' => 'v1.10.3',
|
268 |
+
'version' => '1.10.3.0',
|
269 |
+
'aliases' =>
|
270 |
+
array (
|
271 |
+
),
|
272 |
+
'reference' => '451c3cd1418cf640de218914901e51b064abb093',
|
273 |
+
),
|
274 |
+
'phpunit/php-code-coverage' =>
|
275 |
+
array (
|
276 |
+
'pretty_version' => '5.3.2',
|
277 |
+
'version' => '5.3.2.0',
|
278 |
+
'aliases' =>
|
279 |
+
array (
|
280 |
+
),
|
281 |
+
'reference' => 'c89677919c5dd6d3b3852f230a663118762218ac',
|
282 |
+
),
|
283 |
+
'phpunit/php-file-iterator' =>
|
284 |
+
array (
|
285 |
+
'pretty_version' => '1.4.5',
|
286 |
+
'version' => '1.4.5.0',
|
287 |
+
'aliases' =>
|
288 |
+
array (
|
289 |
+
),
|
290 |
+
'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
|
291 |
+
),
|
292 |
+
'phpunit/php-text-template' =>
|
293 |
+
array (
|
294 |
+
'pretty_version' => '1.2.1',
|
295 |
+
'version' => '1.2.1.0',
|
296 |
+
'aliases' =>
|
297 |
+
array (
|
298 |
+
),
|
299 |
+
'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
|
300 |
+
),
|
301 |
+
'phpunit/php-timer' =>
|
302 |
+
array (
|
303 |
+
'pretty_version' => '1.0.9',
|
304 |
+
'version' => '1.0.9.0',
|
305 |
+
'aliases' =>
|
306 |
+
array (
|
307 |
+
),
|
308 |
+
'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
|
309 |
+
),
|
310 |
+
'phpunit/php-token-stream' =>
|
311 |
+
array (
|
312 |
+
'pretty_version' => '2.0.2',
|
313 |
+
'version' => '2.0.2.0',
|
314 |
+
'aliases' =>
|
315 |
+
array (
|
316 |
+
),
|
317 |
+
'reference' => '791198a2c6254db10131eecfe8c06670700904db',
|
318 |
+
),
|
319 |
+
'phpunit/phpunit' =>
|
320 |
+
array (
|
321 |
+
'pretty_version' => '6.5.14',
|
322 |
+
'version' => '6.5.14.0',
|
323 |
+
'aliases' =>
|
324 |
+
array (
|
325 |
+
),
|
326 |
+
'reference' => 'bac23fe7ff13dbdb461481f706f0e9fe746334b7',
|
327 |
+
),
|
328 |
+
'phpunit/phpunit-mock-objects' =>
|
329 |
+
array (
|
330 |
+
'pretty_version' => '5.0.10',
|
331 |
+
'version' => '5.0.10.0',
|
332 |
+
'aliases' =>
|
333 |
+
array (
|
334 |
+
),
|
335 |
+
'reference' => 'cd1cf05c553ecfec36b170070573e540b67d3f1f',
|
336 |
+
),
|
337 |
+
'psr/http-message' =>
|
338 |
+
array (
|
339 |
+
'pretty_version' => '1.0.1',
|
340 |
+
'version' => '1.0.1.0',
|
341 |
+
'aliases' =>
|
342 |
+
array (
|
343 |
+
),
|
344 |
+
'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
|
345 |
+
),
|
346 |
+
'psr/http-message-implementation' =>
|
347 |
+
array (
|
348 |
+
'provided' =>
|
349 |
+
array (
|
350 |
+
0 => '1.0',
|
351 |
+
),
|
352 |
+
),
|
353 |
+
'psr/log' =>
|
354 |
+
array (
|
355 |
+
'pretty_version' => '1.1.3',
|
356 |
+
'version' => '1.1.3.0',
|
357 |
+
'aliases' =>
|
358 |
+
array (
|
359 |
+
),
|
360 |
+
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
|
361 |
+
),
|
362 |
+
'ralouphie/getallheaders' =>
|
363 |
+
array (
|
364 |
+
'pretty_version' => '3.0.3',
|
365 |
+
'version' => '3.0.3.0',
|
366 |
+
'aliases' =>
|
367 |
+
array (
|
368 |
+
),
|
369 |
+
'reference' => '120b605dfeb996808c31b6477290a714d356e822',
|
370 |
+
),
|
371 |
+
'roave/security-advisories' =>
|
372 |
+
array (
|
373 |
+
'pretty_version' => 'dev-master',
|
374 |
+
'version' => 'dev-master',
|
375 |
+
'aliases' =>
|
376 |
+
array (
|
377 |
+
),
|
378 |
+
'reference' => '676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6',
|
379 |
+
),
|
380 |
+
'roundcube/plugin-installer' =>
|
381 |
+
array (
|
382 |
+
'replaced' =>
|
383 |
+
array (
|
384 |
+
0 => '*',
|
385 |
+
),
|
386 |
+
),
|
387 |
+
'sebastian/code-unit-reverse-lookup' =>
|
388 |
+
array (
|
389 |
+
'pretty_version' => '1.0.2',
|
390 |
+
'version' => '1.0.2.0',
|
391 |
+
'aliases' =>
|
392 |
+
array (
|
393 |
+
),
|
394 |
+
'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
|
395 |
+
),
|
396 |
+
'sebastian/comparator' =>
|
397 |
+
array (
|
398 |
+
'pretty_version' => '2.1.3',
|
399 |
+
'version' => '2.1.3.0',
|
400 |
+
'aliases' =>
|
401 |
+
array (
|
402 |
+
),
|
403 |
+
'reference' => '34369daee48eafb2651bea869b4b15d75ccc35f9',
|
404 |
+
),
|
405 |
+
'sebastian/diff' =>
|
406 |
+
array (
|
407 |
+
'pretty_version' => '2.0.1',
|
408 |
+
'version' => '2.0.1.0',
|
409 |
+
'aliases' =>
|
410 |
+
array (
|
411 |
+
),
|
412 |
+
'reference' => '347c1d8b49c5c3ee30c7040ea6fc446790e6bddd',
|
413 |
+
),
|
414 |
+
'sebastian/environment' =>
|
415 |
+
array (
|
416 |
+
'pretty_version' => '3.1.0',
|
417 |
+
'version' => '3.1.0.0',
|
418 |
+
'aliases' =>
|
419 |
+
array (
|
420 |
+
),
|
421 |
+
'reference' => 'cd0871b3975fb7fc44d11314fd1ee20925fce4f5',
|
422 |
+
),
|
423 |
+
'sebastian/exporter' =>
|
424 |
+
array (
|
425 |
+
'pretty_version' => '3.1.3',
|
426 |
+
'version' => '3.1.3.0',
|
427 |
+
'aliases' =>
|
428 |
+
array (
|
429 |
+
),
|
430 |
+
'reference' => '6b853149eab67d4da22291d36f5b0631c0fd856e',
|
431 |
+
),
|
432 |
+
'sebastian/global-state' =>
|
433 |
+
array (
|
434 |
+
'pretty_version' => '2.0.0',
|
435 |
+
'version' => '2.0.0.0',
|
436 |
+
'aliases' =>
|
437 |
+
array (
|
438 |
+
),
|
439 |
+
'reference' => 'e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4',
|
440 |
+
),
|
441 |
+
'sebastian/object-enumerator' =>
|
442 |
+
array (
|
443 |
+
'pretty_version' => '3.0.4',
|
444 |
+
'version' => '3.0.4.0',
|
445 |
+
'aliases' =>
|
446 |
+
array (
|
447 |
+
),
|
448 |
+
'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2',
|
449 |
+
),
|
450 |
+
'sebastian/object-reflector' =>
|
451 |
+
array (
|
452 |
+
'pretty_version' => '1.1.2',
|
453 |
+
'version' => '1.1.2.0',
|
454 |
+
'aliases' =>
|
455 |
+
array (
|
456 |
+
),
|
457 |
+
'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d',
|
458 |
+
),
|
459 |
+
'sebastian/recursion-context' =>
|
460 |
+
array (
|
461 |
+
'pretty_version' => '3.0.1',
|
462 |
+
'version' => '3.0.1.0',
|
463 |
+
'aliases' =>
|
464 |
+
array (
|
465 |
+
),
|
466 |
+
'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb',
|
467 |
+
),
|
468 |
+
'sebastian/resource-operations' =>
|
469 |
+
array (
|
470 |
+
'pretty_version' => '1.0.0',
|
471 |
+
'version' => '1.0.0.0',
|
472 |
+
'aliases' =>
|
473 |
+
array (
|
474 |
+
),
|
475 |
+
'reference' => 'ce990bb21759f94aeafd30209e8cfcdfa8bc3f52',
|
476 |
+
),
|
477 |
+
'sebastian/version' =>
|
478 |
+
array (
|
479 |
+
'pretty_version' => '2.0.1',
|
480 |
+
'version' => '2.0.1.0',
|
481 |
+
'aliases' =>
|
482 |
+
array (
|
483 |
+
),
|
484 |
+
'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
|
485 |
+
),
|
486 |
+
'shama/baton' =>
|
487 |
+
array (
|
488 |
+
'replaced' =>
|
489 |
+
array (
|
490 |
+
0 => '*',
|
491 |
+
),
|
492 |
+
),
|
493 |
+
'squizlabs/php_codesniffer' =>
|
494 |
+
array (
|
495 |
+
'pretty_version' => '3.5.8',
|
496 |
+
'version' => '3.5.8.0',
|
497 |
+
'aliases' =>
|
498 |
+
array (
|
499 |
+
),
|
500 |
+
'reference' => '9d583721a7157ee997f235f327de038e7ea6dac4',
|
501 |
+
),
|
502 |
+
'symfony/config' =>
|
503 |
+
array (
|
504 |
+
'pretty_version' => 'v3.3.6',
|
505 |
+
'version' => '3.3.6.0',
|
506 |
+
'aliases' =>
|
507 |
+
array (
|
508 |
+
),
|
509 |
+
'reference' => '54ee12b0dd60f294132cabae6f5da9573d2e5297',
|
510 |
+
),
|
511 |
+
'symfony/console' =>
|
512 |
+
array (
|
513 |
+
'pretty_version' => 'v3.3.6',
|
514 |
+
'version' => '3.3.6.0',
|
515 |
+
'aliases' =>
|
516 |
+
array (
|
517 |
+
),
|
518 |
+
'reference' => 'b0878233cb5c4391347e5495089c7af11b8e6201',
|
519 |
+
),
|
520 |
+
'symfony/debug' =>
|
521 |
+
array (
|
522 |
+
'pretty_version' => 'v3.3.6',
|
523 |
+
'version' => '3.3.6.0',
|
524 |
+
'aliases' =>
|
525 |
+
array (
|
526 |
+
),
|
527 |
+
'reference' => '7c13ae8ce1e2adbbd574fc39de7be498e1284e13',
|
528 |
+
),
|
529 |
+
'symfony/filesystem' =>
|
530 |
+
array (
|
531 |
+
'pretty_version' => 'v3.3.6',
|
532 |
+
'version' => '3.3.6.0',
|
533 |
+
'aliases' =>
|
534 |
+
array (
|
535 |
+
),
|
536 |
+
'reference' => '427987eb4eed764c3b6e38d52a0f87989e010676',
|
537 |
+
),
|
538 |
+
'symfony/polyfill-ctype' =>
|
539 |
+
array (
|
540 |
+
'pretty_version' => 'v1.19.0',
|
541 |
+
'version' => '1.19.0.0',
|
542 |
+
'aliases' =>
|
543 |
+
array (
|
544 |
+
),
|
545 |
+
'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
|
546 |
+
),
|
547 |
+
'symfony/polyfill-intl-idn' =>
|
548 |
+
array (
|
549 |
+
'pretty_version' => 'v1.19.0',
|
550 |
+
'version' => '1.19.0.0',
|
551 |
+
'aliases' =>
|
552 |
+
array (
|
553 |
+
),
|
554 |
+
'reference' => '4ad5115c0f5d5172a9fe8147675ec6de266d8826',
|
555 |
+
),
|
556 |
+
'symfony/polyfill-intl-normalizer' =>
|
557 |
+
array (
|
558 |
+
'pretty_version' => 'v1.19.0',
|
559 |
+
'version' => '1.19.0.0',
|
560 |
+
'aliases' =>
|
561 |
+
array (
|
562 |
+
),
|
563 |
+
'reference' => '8db0ae7936b42feb370840cf24de1a144fb0ef27',
|
564 |
+
),
|
565 |
+
'symfony/polyfill-mbstring' =>
|
566 |
+
array (
|
567 |
+
'pretty_version' => 'v1.13.1',
|
568 |
+
'version' => '1.13.1.0',
|
569 |
+
'aliases' =>
|
570 |
+
array (
|
571 |
+
),
|
572 |
+
'reference' => '7b4aab9743c30be783b73de055d24a39cf4b954f',
|
573 |
+
),
|
574 |
+
'symfony/polyfill-php70' =>
|
575 |
+
array (
|
576 |
+
'pretty_version' => 'v1.19.0',
|
577 |
+
'version' => '1.19.0.0',
|
578 |
+
'aliases' =>
|
579 |
+
array (
|
580 |
+
),
|
581 |
+
'reference' => '3fe414077251a81a1b15b1c709faf5c2fbae3d4e',
|
582 |
+
),
|
583 |
+
'symfony/polyfill-php72' =>
|
584 |
+
array (
|
585 |
+
'pretty_version' => 'v1.19.0',
|
586 |
+
'version' => '1.19.0.0',
|
587 |
+
'aliases' =>
|
588 |
+
array (
|
589 |
+
),
|
590 |
+
'reference' => 'beecef6b463b06954638f02378f52496cb84bacc',
|
591 |
+
),
|
592 |
+
'symfony/stopwatch' =>
|
593 |
+
array (
|
594 |
+
'pretty_version' => 'v3.3.6',
|
595 |
+
'version' => '3.3.6.0',
|
596 |
+
'aliases' =>
|
597 |
+
array (
|
598 |
+
),
|
599 |
+
'reference' => '602a15299dc01556013b07167d4f5d3a60e90d15',
|
600 |
+
),
|
601 |
+
'symfony/yaml' =>
|
602 |
+
array (
|
603 |
+
'pretty_version' => 'v3.3.6',
|
604 |
+
'version' => '3.3.6.0',
|
605 |
+
'aliases' =>
|
606 |
+
array (
|
607 |
+
),
|
608 |
+
'reference' => 'ddc23324e6cfe066f3dd34a37ff494fa80b617ed',
|
609 |
+
),
|
610 |
+
'theseer/tokenizer' =>
|
611 |
+
array (
|
612 |
+
'pretty_version' => '1.1.3',
|
613 |
+
'version' => '1.1.3.0',
|
614 |
+
'aliases' =>
|
615 |
+
array (
|
616 |
+
),
|
617 |
+
'reference' => '11336f6f84e16a720dae9d8e6ed5019efa85a0f9',
|
618 |
+
),
|
619 |
+
'webmozart/assert' =>
|
620 |
+
array (
|
621 |
+
'pretty_version' => '1.9.1',
|
622 |
+
'version' => '1.9.1.0',
|
623 |
+
'aliases' =>
|
624 |
+
array (
|
625 |
+
),
|
626 |
+
'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
|
627 |
+
),
|
628 |
+
'wp-coding-standards/wpcs' =>
|
629 |
+
array (
|
630 |
+
'pretty_version' => '2.3.0',
|
631 |
+
'version' => '2.3.0.0',
|
632 |
+
'aliases' =>
|
633 |
+
array (
|
634 |
+
),
|
635 |
+
'reference' => '7da1894633f168fe244afc6de00d141f27517b62',
|
636 |
+
),
|
637 |
+
'xrstf/composer-php52' =>
|
638 |
+
array (
|
639 |
+
'pretty_version' => 'v1.0.20',
|
640 |
+
'version' => '1.0.20.0',
|
641 |
+
'aliases' =>
|
642 |
+
array (
|
643 |
+
),
|
644 |
+
'reference' => 'bd41459d5e27df8d33057842b32377c39e97a5a8',
|
645 |
+
),
|
646 |
+
),
|
647 |
+
);
|
648 |
+
|
649 |
+
|
650 |
+
|
651 |
+
|
652 |
+
|
653 |
+
|
654 |
+
|
655 |
+
public static function getInstalledPackages()
|
656 |
+
{
|
657 |
+
return array_keys(self::$installed['versions']);
|
658 |
+
}
|
659 |
+
|
660 |
+
|
661 |
+
|
662 |
+
|
663 |
+
|
664 |
+
|
665 |
+
|
666 |
+
|
667 |
+
|
668 |
+
public static function isInstalled($packageName)
|
669 |
+
{
|
670 |
+
return isset(self::$installed['versions'][$packageName]);
|
671 |
+
}
|
672 |
+
|
673 |
+
|
674 |
+
|
675 |
+
|
676 |
+
|
677 |
+
|
678 |
+
|
679 |
+
|
680 |
+
|
681 |
+
|
682 |
+
|
683 |
+
|
684 |
+
|
685 |
+
|
686 |
+
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
687 |
+
{
|
688 |
+
$constraint = $parser->parseConstraints($constraint);
|
689 |
+
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
690 |
+
|
691 |
+
return $provided->matches($constraint);
|
692 |
+
}
|
693 |
+
|
694 |
+
|
695 |
+
|
696 |
+
|
697 |
+
|
698 |
+
|
699 |
+
|
700 |
+
|
701 |
+
|
702 |
+
|
703 |
+
public static function getVersionRanges($packageName)
|
704 |
+
{
|
705 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
706 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
707 |
+
}
|
708 |
+
|
709 |
+
$ranges = array();
|
710 |
+
if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
711 |
+
$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
|
712 |
+
}
|
713 |
+
if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
|
714 |
+
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
|
715 |
+
}
|
716 |
+
if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
|
717 |
+
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
|
718 |
+
}
|
719 |
+
if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
|
720 |
+
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
|
721 |
+
}
|
722 |
+
|
723 |
+
return implode(' || ', $ranges);
|
724 |
+
}
|
725 |
+
|
726 |
+
|
727 |
+
|
728 |
+
|
729 |
+
|
730 |
+
public static function getVersion($packageName)
|
731 |
+
{
|
732 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
733 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
734 |
+
}
|
735 |
+
|
736 |
+
if (!isset(self::$installed['versions'][$packageName]['version'])) {
|
737 |
+
return null;
|
738 |
+
}
|
739 |
+
|
740 |
+
return self::$installed['versions'][$packageName]['version'];
|
741 |
+
}
|
742 |
+
|
743 |
+
|
744 |
+
|
745 |
+
|
746 |
+
|
747 |
+
public static function getPrettyVersion($packageName)
|
748 |
+
{
|
749 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
750 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
751 |
+
}
|
752 |
+
|
753 |
+
if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
754 |
+
return null;
|
755 |
+
}
|
756 |
+
|
757 |
+
return self::$installed['versions'][$packageName]['pretty_version'];
|
758 |
+
}
|
759 |
+
|
760 |
+
|
761 |
+
|
762 |
+
|
763 |
+
|
764 |
+
public static function getReference($packageName)
|
765 |
+
{
|
766 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
767 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
768 |
+
}
|
769 |
+
|
770 |
+
if (!isset(self::$installed['versions'][$packageName]['reference'])) {
|
771 |
+
return null;
|
772 |
+
}
|
773 |
+
|
774 |
+
return self::$installed['versions'][$packageName]['reference'];
|
775 |
+
}
|
776 |
+
|
777 |
+
|
778 |
+
|
779 |
+
|
780 |
+
|
781 |
+
public static function getRootPackage()
|
782 |
+
{
|
783 |
+
return self::$installed['root'];
|
784 |
+
}
|
785 |
+
|
786 |
+
|
787 |
+
|
788 |
+
|
789 |
+
|
790 |
+
|
791 |
+
|
792 |
+
public static function getRawData()
|
793 |
+
{
|
794 |
+
return self::$installed;
|
795 |
+
}
|
796 |
+
|
797 |
+
|
798 |
+
|
799 |
+
|
800 |
+
|
801 |
+
|
802 |
+
|
803 |
+
|
804 |
+
|
805 |
+
|
806 |
+
|
807 |
+
|
808 |
+
|
809 |
+
|
810 |
+
|
811 |
+
|
812 |
+
|
813 |
+
|
814 |
+
|
815 |
+
public static function reload($data)
|
816 |
+
{
|
817 |
+
self::$installed = $data;
|
818 |
+
}
|
819 |
+
}
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -6,11 +6,15 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
9 |
'Cyr_To_Lat\\ACF' => $baseDir . '/classes/class-acf.php',
|
10 |
'Cyr_To_Lat\\Admin_Notices' => $baseDir . '/classes/class-admin-notices.php',
|
11 |
'Cyr_To_Lat\\Conversion_Process' => $baseDir . '/classes/background-processes/class-conversion-process.php',
|
12 |
'Cyr_To_Lat\\Conversion_Tables' => $baseDir . '/classes/class-conversion-tables.php',
|
13 |
'Cyr_To_Lat\\Converter' => $baseDir . '/classes/class-converter.php',
|
|
|
14 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => $baseDir . '/lib/wp-background-processing/class-wp-async-request.php',
|
15 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => $baseDir . '/lib/wp-background-processing/class-wp-background-process.php',
|
16 |
'Cyr_To_Lat\\Main' => $baseDir . '/classes/class-main.php',
|
@@ -20,4 +24,624 @@ return array(
|
|
20 |
'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $baseDir . '/lib/polyfill-mbstring/Mbstring.php',
|
21 |
'Cyr_To_Lat\\Term_Conversion_Process' => $baseDir . '/classes/background-processes/class-term-conversion-process.php',
|
22 |
'Cyr_To_Lat\\WP_CLI' => $baseDir . '/classes/class-wp-cli.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
|
10 |
+
'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
|
11 |
+
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
12 |
'Cyr_To_Lat\\ACF' => $baseDir . '/classes/class-acf.php',
|
13 |
'Cyr_To_Lat\\Admin_Notices' => $baseDir . '/classes/class-admin-notices.php',
|
14 |
'Cyr_To_Lat\\Conversion_Process' => $baseDir . '/classes/background-processes/class-conversion-process.php',
|
15 |
'Cyr_To_Lat\\Conversion_Tables' => $baseDir . '/classes/class-conversion-tables.php',
|
16 |
'Cyr_To_Lat\\Converter' => $baseDir . '/classes/class-converter.php',
|
17 |
+
'Cyr_To_Lat\\Cyr_To_Lat_TestCase' => $baseDir . '/tests/phpunit/classes/class-cyr-to-lat-testcase.php',
|
18 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => $baseDir . '/lib/wp-background-processing/class-wp-async-request.php',
|
19 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => $baseDir . '/lib/wp-background-processing/class-wp-background-process.php',
|
20 |
'Cyr_To_Lat\\Main' => $baseDir . '/classes/class-main.php',
|
24 |
'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $baseDir . '/lib/polyfill-mbstring/Mbstring.php',
|
25 |
'Cyr_To_Lat\\Term_Conversion_Process' => $baseDir . '/classes/background-processes/class-term-conversion-process.php',
|
26 |
'Cyr_To_Lat\\WP_CLI' => $baseDir . '/classes/class-wp-cli.php',
|
27 |
+
'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
|
28 |
+
'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
|
29 |
+
'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
|
30 |
+
'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
|
31 |
+
'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
|
32 |
+
'Hamcrest\\Arrays\\IsArray' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php',
|
33 |
+
'Hamcrest\\Arrays\\IsArrayContaining' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php',
|
34 |
+
'Hamcrest\\Arrays\\IsArrayContainingInAnyOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php',
|
35 |
+
'Hamcrest\\Arrays\\IsArrayContainingInOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php',
|
36 |
+
'Hamcrest\\Arrays\\IsArrayContainingKey' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php',
|
37 |
+
'Hamcrest\\Arrays\\IsArrayContainingKeyValuePair' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php',
|
38 |
+
'Hamcrest\\Arrays\\IsArrayWithSize' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php',
|
39 |
+
'Hamcrest\\Arrays\\MatchingOnce' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php',
|
40 |
+
'Hamcrest\\Arrays\\SeriesMatchingOnce' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php',
|
41 |
+
'Hamcrest\\AssertionError' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php',
|
42 |
+
'Hamcrest\\BaseDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php',
|
43 |
+
'Hamcrest\\BaseMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php',
|
44 |
+
'Hamcrest\\Collection\\IsEmptyTraversable' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php',
|
45 |
+
'Hamcrest\\Collection\\IsTraversableWithSize' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php',
|
46 |
+
'Hamcrest\\Core\\AllOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php',
|
47 |
+
'Hamcrest\\Core\\AnyOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php',
|
48 |
+
'Hamcrest\\Core\\CombinableMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php',
|
49 |
+
'Hamcrest\\Core\\DescribedAs' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php',
|
50 |
+
'Hamcrest\\Core\\Every' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php',
|
51 |
+
'Hamcrest\\Core\\HasToString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php',
|
52 |
+
'Hamcrest\\Core\\Is' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php',
|
53 |
+
'Hamcrest\\Core\\IsAnything' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php',
|
54 |
+
'Hamcrest\\Core\\IsCollectionContaining' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php',
|
55 |
+
'Hamcrest\\Core\\IsEqual' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php',
|
56 |
+
'Hamcrest\\Core\\IsIdentical' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php',
|
57 |
+
'Hamcrest\\Core\\IsInstanceOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php',
|
58 |
+
'Hamcrest\\Core\\IsNot' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php',
|
59 |
+
'Hamcrest\\Core\\IsNull' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php',
|
60 |
+
'Hamcrest\\Core\\IsSame' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php',
|
61 |
+
'Hamcrest\\Core\\IsTypeOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php',
|
62 |
+
'Hamcrest\\Core\\Set' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php',
|
63 |
+
'Hamcrest\\Core\\ShortcutCombination' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php',
|
64 |
+
'Hamcrest\\Description' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php',
|
65 |
+
'Hamcrest\\DiagnosingMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php',
|
66 |
+
'Hamcrest\\FeatureMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php',
|
67 |
+
'Hamcrest\\Internal\\SelfDescribingValue' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php',
|
68 |
+
'Hamcrest\\Matcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php',
|
69 |
+
'Hamcrest\\MatcherAssert' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php',
|
70 |
+
'Hamcrest\\Matchers' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php',
|
71 |
+
'Hamcrest\\NullDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php',
|
72 |
+
'Hamcrest\\Number\\IsCloseTo' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php',
|
73 |
+
'Hamcrest\\Number\\OrderingComparison' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php',
|
74 |
+
'Hamcrest\\SelfDescribing' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php',
|
75 |
+
'Hamcrest\\StringDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php',
|
76 |
+
'Hamcrest\\Text\\IsEmptyString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php',
|
77 |
+
'Hamcrest\\Text\\IsEqualIgnoringCase' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php',
|
78 |
+
'Hamcrest\\Text\\IsEqualIgnoringWhiteSpace' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php',
|
79 |
+
'Hamcrest\\Text\\MatchesPattern' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php',
|
80 |
+
'Hamcrest\\Text\\StringContains' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php',
|
81 |
+
'Hamcrest\\Text\\StringContainsIgnoringCase' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php',
|
82 |
+
'Hamcrest\\Text\\StringContainsInOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php',
|
83 |
+
'Hamcrest\\Text\\StringEndsWith' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php',
|
84 |
+
'Hamcrest\\Text\\StringStartsWith' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php',
|
85 |
+
'Hamcrest\\Text\\SubstringMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php',
|
86 |
+
'Hamcrest\\TypeSafeDiagnosingMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php',
|
87 |
+
'Hamcrest\\TypeSafeMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php',
|
88 |
+
'Hamcrest\\Type\\IsArray' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php',
|
89 |
+
'Hamcrest\\Type\\IsBoolean' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php',
|
90 |
+
'Hamcrest\\Type\\IsCallable' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php',
|
91 |
+
'Hamcrest\\Type\\IsDouble' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php',
|
92 |
+
'Hamcrest\\Type\\IsInteger' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php',
|
93 |
+
'Hamcrest\\Type\\IsNumeric' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php',
|
94 |
+
'Hamcrest\\Type\\IsObject' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php',
|
95 |
+
'Hamcrest\\Type\\IsResource' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php',
|
96 |
+
'Hamcrest\\Type\\IsScalar' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php',
|
97 |
+
'Hamcrest\\Type\\IsString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php',
|
98 |
+
'Hamcrest\\Util' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php',
|
99 |
+
'Hamcrest\\Xml\\HasXPath' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php',
|
100 |
+
'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
|
101 |
+
'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
|
102 |
+
'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
|
103 |
+
'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
104 |
+
'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
105 |
+
'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
106 |
+
'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
107 |
+
'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
108 |
+
'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
109 |
+
'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
110 |
+
'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
111 |
+
'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
112 |
+
'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
113 |
+
'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
|
114 |
+
'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
115 |
+
'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
|
116 |
+
'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
117 |
+
'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
118 |
+
'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
119 |
+
'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
|
120 |
+
'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
121 |
+
'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
122 |
+
'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
123 |
+
'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
124 |
+
'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
125 |
+
'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
126 |
+
'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
|
127 |
+
'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
128 |
+
'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
|
129 |
+
'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
130 |
+
'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
131 |
+
'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
|
132 |
+
'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
133 |
+
'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
|
134 |
+
'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
135 |
+
'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
136 |
+
'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
|
137 |
+
'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
138 |
+
'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
|
139 |
+
'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
140 |
+
'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
|
141 |
+
'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
|
142 |
+
'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
|
143 |
+
'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
|
144 |
+
'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
145 |
+
'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
|
146 |
+
'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
147 |
+
'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
148 |
+
'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
149 |
+
'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
|
150 |
+
'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
151 |
+
'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
152 |
+
'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
153 |
+
'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
|
154 |
+
'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
155 |
+
'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
156 |
+
'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
|
157 |
+
'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
158 |
+
'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
159 |
+
'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
|
160 |
+
'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
161 |
+
'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
162 |
+
'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
163 |
+
'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
164 |
+
'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
165 |
+
'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
166 |
+
'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
|
167 |
+
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
|
168 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
|
169 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
|
170 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
|
171 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
|
172 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
|
173 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
|
174 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
|
175 |
+
'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
|
176 |
+
'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Generator.php',
|
177 |
+
'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
|
178 |
+
'PHPUnit\\Framework\\MockObject\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
|
179 |
+
'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
|
180 |
+
'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
|
181 |
+
'PHPUnit\\Framework\\MockObject\\Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invokable.php',
|
182 |
+
'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher.php',
|
183 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
|
184 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
|
185 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
|
186 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
|
187 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
|
188 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
|
189 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
|
190 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
|
191 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
|
192 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
|
193 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
|
194 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
|
195 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
|
196 |
+
'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
|
197 |
+
'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
|
198 |
+
'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
|
199 |
+
'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub.php',
|
200 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
|
201 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
|
202 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
|
203 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
|
204 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
|
205 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
|
206 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
|
207 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
|
208 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
|
209 |
+
'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
|
210 |
+
'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
|
211 |
+
'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
212 |
+
'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
213 |
+
'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
214 |
+
'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
215 |
+
'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
216 |
+
'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
217 |
+
'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
218 |
+
'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
219 |
+
'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
|
220 |
+
'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
|
221 |
+
'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
222 |
+
'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
|
223 |
+
'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
|
224 |
+
'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
|
225 |
+
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
226 |
+
'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
227 |
+
'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
228 |
+
'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
|
229 |
+
'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
230 |
+
'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
231 |
+
'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
|
232 |
+
'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
|
233 |
+
'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
234 |
+
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
235 |
+
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
236 |
+
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
237 |
+
'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
238 |
+
'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
239 |
+
'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
240 |
+
'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
241 |
+
'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
|
242 |
+
'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
243 |
+
'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
244 |
+
'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
245 |
+
'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
|
246 |
+
'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
|
247 |
+
'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
248 |
+
'PHPUnit\\Util\\Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
|
249 |
+
'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
250 |
+
'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
251 |
+
'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
|
252 |
+
'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
253 |
+
'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
254 |
+
'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
|
255 |
+
'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
256 |
+
'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
257 |
+
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
258 |
+
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
259 |
+
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
260 |
+
'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
261 |
+
'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
262 |
+
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
263 |
+
'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
|
264 |
+
'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
265 |
+
'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
266 |
+
'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
|
267 |
+
'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
|
268 |
+
'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
|
269 |
+
'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
|
270 |
+
'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
|
271 |
+
'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
|
272 |
+
'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockObject.php',
|
273 |
+
'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
|
274 |
+
'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
275 |
+
'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
276 |
+
'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
277 |
+
'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
278 |
+
'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
279 |
+
'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
280 |
+
'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
281 |
+
'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
282 |
+
'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
283 |
+
'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
284 |
+
'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
285 |
+
'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
286 |
+
'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
287 |
+
'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
288 |
+
'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
289 |
+
'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
290 |
+
'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
291 |
+
'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
292 |
+
'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
293 |
+
'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
294 |
+
'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
295 |
+
'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
296 |
+
'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
297 |
+
'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
298 |
+
'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
299 |
+
'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
300 |
+
'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
301 |
+
'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
302 |
+
'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
303 |
+
'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
304 |
+
'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
305 |
+
'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
306 |
+
'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
307 |
+
'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
308 |
+
'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
309 |
+
'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
310 |
+
'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
311 |
+
'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
312 |
+
'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
313 |
+
'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
314 |
+
'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
315 |
+
'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
316 |
+
'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
317 |
+
'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
318 |
+
'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
319 |
+
'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
320 |
+
'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
321 |
+
'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
322 |
+
'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
323 |
+
'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
324 |
+
'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
325 |
+
'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
326 |
+
'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
327 |
+
'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
328 |
+
'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
329 |
+
'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
330 |
+
'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
331 |
+
'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
332 |
+
'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
333 |
+
'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
334 |
+
'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
335 |
+
'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
336 |
+
'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
337 |
+
'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
338 |
+
'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
339 |
+
'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
340 |
+
'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
341 |
+
'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
342 |
+
'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
343 |
+
'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
344 |
+
'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
345 |
+
'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
346 |
+
'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
347 |
+
'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
348 |
+
'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
349 |
+
'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
350 |
+
'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
351 |
+
'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
352 |
+
'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
353 |
+
'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
354 |
+
'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
355 |
+
'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
356 |
+
'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
357 |
+
'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
358 |
+
'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
359 |
+
'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
360 |
+
'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
361 |
+
'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
362 |
+
'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
363 |
+
'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
364 |
+
'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
365 |
+
'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
366 |
+
'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
367 |
+
'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
368 |
+
'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
369 |
+
'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
370 |
+
'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
371 |
+
'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
372 |
+
'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
373 |
+
'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
374 |
+
'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
375 |
+
'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
376 |
+
'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
377 |
+
'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
378 |
+
'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
379 |
+
'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
380 |
+
'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
381 |
+
'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
382 |
+
'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
383 |
+
'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
384 |
+
'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
385 |
+
'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
386 |
+
'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
387 |
+
'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
388 |
+
'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
389 |
+
'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
390 |
+
'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
391 |
+
'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
392 |
+
'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
393 |
+
'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
394 |
+
'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
395 |
+
'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
396 |
+
'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
397 |
+
'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
398 |
+
'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
399 |
+
'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
400 |
+
'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
401 |
+
'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
402 |
+
'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
403 |
+
'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
404 |
+
'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
405 |
+
'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
406 |
+
'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
407 |
+
'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
408 |
+
'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
409 |
+
'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
410 |
+
'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
411 |
+
'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
412 |
+
'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
413 |
+
'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
414 |
+
'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
415 |
+
'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
416 |
+
'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
417 |
+
'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
418 |
+
'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
419 |
+
'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
420 |
+
'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
421 |
+
'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
422 |
+
'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
423 |
+
'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
424 |
+
'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
425 |
+
'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
426 |
+
'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
427 |
+
'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
428 |
+
'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
429 |
+
'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
430 |
+
'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
431 |
+
'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
432 |
+
'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
433 |
+
'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
434 |
+
'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
435 |
+
'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
436 |
+
'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
437 |
+
'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
438 |
+
'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
439 |
+
'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
440 |
+
'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
441 |
+
'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
442 |
+
'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
|
443 |
+
'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
|
444 |
+
'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
445 |
+
'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
446 |
+
'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
447 |
+
'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
448 |
+
'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
449 |
+
'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
450 |
+
'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
451 |
+
'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
452 |
+
'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
453 |
+
'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
454 |
+
'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
455 |
+
'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
456 |
+
'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
457 |
+
'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
458 |
+
'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
459 |
+
'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
460 |
+
'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
461 |
+
'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
462 |
+
'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
463 |
+
'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
464 |
+
'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
465 |
+
'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
466 |
+
'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
467 |
+
'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
468 |
+
'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
469 |
+
'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
470 |
+
'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
471 |
+
'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
472 |
+
'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
473 |
+
'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
|
474 |
+
'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
|
475 |
+
'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
|
476 |
+
'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
|
477 |
+
'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
|
478 |
+
'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
|
479 |
+
'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
|
480 |
+
'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
|
481 |
+
'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
|
482 |
+
'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
|
483 |
+
'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
|
484 |
+
'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
|
485 |
+
'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
|
486 |
+
'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
|
487 |
+
'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
|
488 |
+
'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
|
489 |
+
'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
|
490 |
+
'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
|
491 |
+
'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
|
492 |
+
'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
|
493 |
+
'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
|
494 |
+
'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
|
495 |
+
'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
|
496 |
+
'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
|
497 |
+
'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
|
498 |
+
'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
|
499 |
+
'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
|
500 |
+
'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
|
501 |
+
'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
|
502 |
+
'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
|
503 |
+
'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
|
504 |
+
'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
|
505 |
+
'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
|
506 |
+
'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
|
507 |
+
'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
|
508 |
+
'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
|
509 |
+
'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
|
510 |
+
'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
|
511 |
+
'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
|
512 |
+
'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
513 |
+
'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
|
514 |
+
'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
|
515 |
+
'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
516 |
+
'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
517 |
+
'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
|
518 |
+
'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
|
519 |
+
'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
|
520 |
+
'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
|
521 |
+
'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
|
522 |
+
'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
|
523 |
+
'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/AbstractVersionConstraint.php',
|
524 |
+
'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/AndVersionConstraintGroup.php',
|
525 |
+
'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/AnyVersionConstraint.php',
|
526 |
+
'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/ExactVersionConstraint.php',
|
527 |
+
'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/Exception.php',
|
528 |
+
'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
|
529 |
+
'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/InvalidVersionException.php',
|
530 |
+
'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/OrVersionConstraintGroup.php',
|
531 |
+
'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
|
532 |
+
'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
|
533 |
+
'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
|
534 |
+
'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
|
535 |
+
'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
|
536 |
+
'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/VersionConstraint.php',
|
537 |
+
'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
|
538 |
+
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
|
539 |
+
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
|
540 |
+
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
|
541 |
+
'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
|
542 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
|
543 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
|
544 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
|
545 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
|
546 |
+
'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
|
547 |
+
'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
|
548 |
+
'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
|
549 |
+
'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
|
550 |
+
'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
|
551 |
+
'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php',
|
552 |
+
'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php',
|
553 |
+
'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php',
|
554 |
+
'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php',
|
555 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php',
|
556 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
|
557 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
|
558 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
|
559 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
|
560 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
|
561 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
|
562 |
+
'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
|
563 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
|
564 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
|
565 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
|
566 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
|
567 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
|
568 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
|
569 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
|
570 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
|
571 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
|
572 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
|
573 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
|
574 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
|
575 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
|
576 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
|
577 |
+
'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
|
578 |
+
'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
|
579 |
+
'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php',
|
580 |
+
'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
|
581 |
+
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
|
582 |
+
'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
|
583 |
+
'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
|
584 |
+
'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
|
585 |
+
'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
|
586 |
+
'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
|
587 |
+
'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
|
588 |
+
'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
|
589 |
+
'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
|
590 |
+
'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
|
591 |
+
'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
|
592 |
+
'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
|
593 |
+
'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
|
594 |
+
'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
|
595 |
+
'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
|
596 |
+
'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
|
597 |
+
'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
|
598 |
+
'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
|
599 |
+
'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
|
600 |
+
'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
|
601 |
+
'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
|
602 |
+
'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
|
603 |
+
'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
|
604 |
+
'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
|
605 |
+
'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
|
606 |
+
'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
|
607 |
+
'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
|
608 |
+
'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
|
609 |
+
'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
|
610 |
+
'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
|
611 |
+
'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
|
612 |
+
'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
|
613 |
+
'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
|
614 |
+
'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
|
615 |
+
'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
|
616 |
+
'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
|
617 |
+
'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
|
618 |
+
'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
|
619 |
+
'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
|
620 |
+
'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
|
621 |
+
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
|
622 |
+
'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
|
623 |
+
'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
|
624 |
+
'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
|
625 |
+
'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
|
626 |
+
'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
|
627 |
+
'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
|
628 |
+
'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
|
629 |
+
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
|
630 |
+
'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
|
631 |
+
'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
|
632 |
+
'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
|
633 |
+
'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
|
634 |
+
'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
|
635 |
+
'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
|
636 |
+
'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
|
637 |
+
'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
|
638 |
+
'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
|
639 |
+
'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
|
640 |
+
'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
|
641 |
+
'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
|
642 |
+
'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
|
643 |
+
'WP_CLI' => $baseDir . '/tests/phpunit/stubs/class-wp-cli.php',
|
644 |
+
'WP_CLI_Command' => $baseDir . '/tests/phpunit/stubs/class-wp-cli-command.php',
|
645 |
+
'WP_Mock' => $vendorDir . '/10up/wp_mock/php/WP_Mock.php',
|
646 |
+
'cli\\progress\\Bar' => $baseDir . '/tests/phpunit/stubs/class-bar.php',
|
647 |
);
|
vendor/composer/autoload_files.php
CHANGED
@@ -6,5 +6,18 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
'344a0f93a05b8ca362c22e39586db500' => $baseDir . '/lib/polyfill-mbstring/bootstrap.php',
|
10 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
|
10 |
+
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
11 |
+
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
12 |
+
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
|
13 |
+
'023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
|
14 |
+
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
|
15 |
+
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
|
16 |
+
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
|
17 |
+
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
18 |
+
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
19 |
+
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
20 |
+
'c9c849c9bb3823996cf7bfc9113fa087' => $vendorDir . '/lucatume/function-mocker/src/shims.php',
|
21 |
+
'c9175f6b4293b67ed66f5797215938f2' => $vendorDir . '/lucatume/function-mocker/src/functions.php',
|
22 |
'344a0f93a05b8ca362c22e39586db500' => $baseDir . '/lib/polyfill-mbstring/bootstrap.php',
|
23 |
);
|
vendor/composer/autoload_namespaces.php
CHANGED
@@ -6,4 +6,9 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
9 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'xrstf\\Composer52' => array($vendorDir . '/xrstf/composer-php52/lib'),
|
10 |
+
'tad_' => array($vendorDir . '/lucatume/args/src'),
|
11 |
+
'tad\\FunctionMocker' => array($vendorDir . '/lucatume/function-mocker/src'),
|
12 |
+
'Mockery' => array($vendorDir . '/mockery/mockery/library'),
|
13 |
+
'Arg' => array($vendorDir . '/lucatume/args/src'),
|
14 |
);
|
vendor/composer/autoload_psr4.php
CHANGED
@@ -6,5 +6,29 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
|
10 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
|
10 |
+
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
11 |
+
'WP_Mock\\' => array($vendorDir . '/10up/wp_mock/php/WP_Mock'),
|
12 |
+
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
|
13 |
+
'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'),
|
14 |
+
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
15 |
+
'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
|
16 |
+
'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
|
17 |
+
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
|
18 |
+
'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
|
19 |
+
'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'),
|
20 |
+
'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
|
21 |
+
'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'),
|
22 |
+
'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
|
23 |
+
'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'),
|
24 |
+
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
|
25 |
+
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
|
26 |
+
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
|
27 |
+
'PhpCoveralls\\' => array($vendorDir . '/php-coveralls/php-coveralls/src'),
|
28 |
+
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
|
29 |
+
'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
|
30 |
+
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
|
31 |
+
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
32 |
+
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
|
33 |
'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
|
34 |
);
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218
|
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
-
spl_autoload_register(array('
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
-
spl_autoload_unregister(array('
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
-
|
32 |
|
33 |
-
call_user_func(\Composer\Autoload\
|
34 |
} else {
|
35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
36 |
foreach ($map as $namespace => $path) {
|
@@ -51,19 +51,19 @@ class ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218
|
|
51 |
$loader->register(true);
|
52 |
|
53 |
if ($useStaticLoader) {
|
54 |
-
$includeFiles = Composer\Autoload\
|
55 |
} else {
|
56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
57 |
}
|
58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
59 |
-
|
60 |
}
|
61 |
|
62 |
return $loader;
|
63 |
}
|
64 |
}
|
65 |
|
66 |
-
function
|
67 |
{
|
68 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
69 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
+
spl_autoload_register(array('ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903', 'loadClassLoader'), true, true);
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903', 'loadClassLoader'));
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
+
require __DIR__ . '/autoload_static.php';
|
32 |
|
33 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit7b83804bec66524f8ede823838ffb903::getInitializer($loader));
|
34 |
} else {
|
35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
36 |
foreach ($map as $namespace => $path) {
|
51 |
$loader->register(true);
|
52 |
|
53 |
if ($useStaticLoader) {
|
54 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit7b83804bec66524f8ede823838ffb903::$files;
|
55 |
} else {
|
56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
57 |
}
|
58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
59 |
+
composerRequire7b83804bec66524f8ede823838ffb903($fileIdentifier, $file);
|
60 |
}
|
61 |
|
62 |
return $loader;
|
63 |
}
|
64 |
}
|
65 |
|
66 |
+
function composerRequire7b83804bec66524f8ede823838ffb903($fileIdentifier, $file)
|
67 |
{
|
68 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
69 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,13 +4,68 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
'344a0f93a05b8ca362c22e39586db500' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/bootstrap.php',
|
11 |
);
|
12 |
|
13 |
public static $prefixLengthsPsr4 = array (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
'C' =>
|
15 |
array (
|
16 |
'Composer\\Installers\\' => 20,
|
@@ -18,18 +73,155 @@ class ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218
|
|
18 |
);
|
19 |
|
20 |
public static $prefixDirsPsr4 = array (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
'Composer\\Installers\\' =>
|
22 |
array (
|
23 |
0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
|
24 |
),
|
25 |
);
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
public static $classMap = array (
|
|
|
|
|
|
|
28 |
'Cyr_To_Lat\\ACF' => __DIR__ . '/../..' . '/classes/class-acf.php',
|
29 |
'Cyr_To_Lat\\Admin_Notices' => __DIR__ . '/../..' . '/classes/class-admin-notices.php',
|
30 |
'Cyr_To_Lat\\Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-conversion-process.php',
|
31 |
'Cyr_To_Lat\\Conversion_Tables' => __DIR__ . '/../..' . '/classes/class-conversion-tables.php',
|
32 |
'Cyr_To_Lat\\Converter' => __DIR__ . '/../..' . '/classes/class-converter.php',
|
|
|
33 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-async-request.php',
|
34 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-background-process.php',
|
35 |
'Cyr_To_Lat\\Main' => __DIR__ . '/../..' . '/classes/class-main.php',
|
@@ -39,14 +231,635 @@ class ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218
|
|
39 |
'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/Mbstring.php',
|
40 |
'Cyr_To_Lat\\Term_Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-term-conversion-process.php',
|
41 |
'Cyr_To_Lat\\WP_CLI' => __DIR__ . '/../..' . '/classes/class-wp-cli.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
);
|
43 |
|
44 |
public static function getInitializer(ClassLoader $loader)
|
45 |
{
|
46 |
return \Closure::bind(function () use ($loader) {
|
47 |
-
$loader->prefixLengthsPsr4 =
|
48 |
-
$loader->prefixDirsPsr4 =
|
49 |
-
$loader->
|
|
|
50 |
|
51 |
}, null, ClassLoader::class);
|
52 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit7b83804bec66524f8ede823838ffb903
|
8 |
{
|
9 |
public static $files = array (
|
10 |
+
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
11 |
+
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
12 |
+
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
13 |
+
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
|
14 |
+
'023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
|
15 |
+
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
|
16 |
+
'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
|
17 |
+
'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
|
18 |
+
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
|
19 |
+
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
|
20 |
+
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
21 |
+
'c9c849c9bb3823996cf7bfc9113fa087' => __DIR__ . '/..' . '/lucatume/function-mocker/src/shims.php',
|
22 |
+
'c9175f6b4293b67ed66f5797215938f2' => __DIR__ . '/..' . '/lucatume/function-mocker/src/functions.php',
|
23 |
'344a0f93a05b8ca362c22e39586db500' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/bootstrap.php',
|
24 |
);
|
25 |
|
26 |
public static $prefixLengthsPsr4 = array (
|
27 |
+
'p' =>
|
28 |
+
array (
|
29 |
+
'phpDocumentor\\Reflection\\' => 25,
|
30 |
+
),
|
31 |
+
'W' =>
|
32 |
+
array (
|
33 |
+
'Webmozart\\Assert\\' => 17,
|
34 |
+
'WP_Mock\\' => 8,
|
35 |
+
),
|
36 |
+
'S' =>
|
37 |
+
array (
|
38 |
+
'Symfony\\Polyfill\\Php72\\' => 23,
|
39 |
+
'Symfony\\Polyfill\\Php70\\' => 23,
|
40 |
+
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
41 |
+
'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
|
42 |
+
'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
|
43 |
+
'Symfony\\Polyfill\\Ctype\\' => 23,
|
44 |
+
'Symfony\\Component\\Yaml\\' => 23,
|
45 |
+
'Symfony\\Component\\Stopwatch\\' => 28,
|
46 |
+
'Symfony\\Component\\Filesystem\\' => 29,
|
47 |
+
'Symfony\\Component\\Debug\\' => 24,
|
48 |
+
'Symfony\\Component\\Console\\' => 26,
|
49 |
+
'Symfony\\Component\\Config\\' => 25,
|
50 |
+
),
|
51 |
+
'P' =>
|
52 |
+
array (
|
53 |
+
'Psr\\Log\\' => 8,
|
54 |
+
'Psr\\Http\\Message\\' => 17,
|
55 |
+
'Prophecy\\' => 9,
|
56 |
+
'PhpCoveralls\\' => 13,
|
57 |
+
),
|
58 |
+
'G' =>
|
59 |
+
array (
|
60 |
+
'GuzzleHttp\\Psr7\\' => 16,
|
61 |
+
'GuzzleHttp\\Promise\\' => 19,
|
62 |
+
'GuzzleHttp\\' => 11,
|
63 |
+
),
|
64 |
+
'D' =>
|
65 |
+
array (
|
66 |
+
'Doctrine\\Instantiator\\' => 22,
|
67 |
+
'DeepCopy\\' => 9,
|
68 |
+
),
|
69 |
'C' =>
|
70 |
array (
|
71 |
'Composer\\Installers\\' => 20,
|
73 |
);
|
74 |
|
75 |
public static $prefixDirsPsr4 = array (
|
76 |
+
'phpDocumentor\\Reflection\\' =>
|
77 |
+
array (
|
78 |
+
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
79 |
+
1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
80 |
+
2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
81 |
+
),
|
82 |
+
'Webmozart\\Assert\\' =>
|
83 |
+
array (
|
84 |
+
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
85 |
+
),
|
86 |
+
'WP_Mock\\' =>
|
87 |
+
array (
|
88 |
+
0 => __DIR__ . '/..' . '/10up/wp_mock/php/WP_Mock',
|
89 |
+
),
|
90 |
+
'Symfony\\Polyfill\\Php72\\' =>
|
91 |
+
array (
|
92 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
|
93 |
+
),
|
94 |
+
'Symfony\\Polyfill\\Php70\\' =>
|
95 |
+
array (
|
96 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-php70',
|
97 |
+
),
|
98 |
+
'Symfony\\Polyfill\\Mbstring\\' =>
|
99 |
+
array (
|
100 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
101 |
+
),
|
102 |
+
'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
|
103 |
+
array (
|
104 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
|
105 |
+
),
|
106 |
+
'Symfony\\Polyfill\\Intl\\Idn\\' =>
|
107 |
+
array (
|
108 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
|
109 |
+
),
|
110 |
+
'Symfony\\Polyfill\\Ctype\\' =>
|
111 |
+
array (
|
112 |
+
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
|
113 |
+
),
|
114 |
+
'Symfony\\Component\\Yaml\\' =>
|
115 |
+
array (
|
116 |
+
0 => __DIR__ . '/..' . '/symfony/yaml',
|
117 |
+
),
|
118 |
+
'Symfony\\Component\\Stopwatch\\' =>
|
119 |
+
array (
|
120 |
+
0 => __DIR__ . '/..' . '/symfony/stopwatch',
|
121 |
+
),
|
122 |
+
'Symfony\\Component\\Filesystem\\' =>
|
123 |
+
array (
|
124 |
+
0 => __DIR__ . '/..' . '/symfony/filesystem',
|
125 |
+
),
|
126 |
+
'Symfony\\Component\\Debug\\' =>
|
127 |
+
array (
|
128 |
+
0 => __DIR__ . '/..' . '/symfony/debug',
|
129 |
+
),
|
130 |
+
'Symfony\\Component\\Console\\' =>
|
131 |
+
array (
|
132 |
+
0 => __DIR__ . '/..' . '/symfony/console',
|
133 |
+
),
|
134 |
+
'Symfony\\Component\\Config\\' =>
|
135 |
+
array (
|
136 |
+
0 => __DIR__ . '/..' . '/symfony/config',
|
137 |
+
),
|
138 |
+
'Psr\\Log\\' =>
|
139 |
+
array (
|
140 |
+
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
|
141 |
+
),
|
142 |
+
'Psr\\Http\\Message\\' =>
|
143 |
+
array (
|
144 |
+
0 => __DIR__ . '/..' . '/psr/http-message/src',
|
145 |
+
),
|
146 |
+
'Prophecy\\' =>
|
147 |
+
array (
|
148 |
+
0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
|
149 |
+
),
|
150 |
+
'PhpCoveralls\\' =>
|
151 |
+
array (
|
152 |
+
0 => __DIR__ . '/..' . '/php-coveralls/php-coveralls/src',
|
153 |
+
),
|
154 |
+
'GuzzleHttp\\Psr7\\' =>
|
155 |
+
array (
|
156 |
+
0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
|
157 |
+
),
|
158 |
+
'GuzzleHttp\\Promise\\' =>
|
159 |
+
array (
|
160 |
+
0 => __DIR__ . '/..' . '/guzzlehttp/promises/src',
|
161 |
+
),
|
162 |
+
'GuzzleHttp\\' =>
|
163 |
+
array (
|
164 |
+
0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
|
165 |
+
),
|
166 |
+
'Doctrine\\Instantiator\\' =>
|
167 |
+
array (
|
168 |
+
0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
|
169 |
+
),
|
170 |
+
'DeepCopy\\' =>
|
171 |
+
array (
|
172 |
+
0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
|
173 |
+
),
|
174 |
'Composer\\Installers\\' =>
|
175 |
array (
|
176 |
0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
|
177 |
),
|
178 |
);
|
179 |
|
180 |
+
public static $prefixesPsr0 = array (
|
181 |
+
'x' =>
|
182 |
+
array (
|
183 |
+
'xrstf\\Composer52' =>
|
184 |
+
array (
|
185 |
+
0 => __DIR__ . '/..' . '/xrstf/composer-php52/lib',
|
186 |
+
),
|
187 |
+
),
|
188 |
+
't' =>
|
189 |
+
array (
|
190 |
+
'tad_' =>
|
191 |
+
array (
|
192 |
+
0 => __DIR__ . '/..' . '/lucatume/args/src',
|
193 |
+
),
|
194 |
+
'tad\\FunctionMocker' =>
|
195 |
+
array (
|
196 |
+
0 => __DIR__ . '/..' . '/lucatume/function-mocker/src',
|
197 |
+
),
|
198 |
+
),
|
199 |
+
'M' =>
|
200 |
+
array (
|
201 |
+
'Mockery' =>
|
202 |
+
array (
|
203 |
+
0 => __DIR__ . '/..' . '/mockery/mockery/library',
|
204 |
+
),
|
205 |
+
),
|
206 |
+
'A' =>
|
207 |
+
array (
|
208 |
+
'Arg' =>
|
209 |
+
array (
|
210 |
+
0 => __DIR__ . '/..' . '/lucatume/args/src',
|
211 |
+
),
|
212 |
+
),
|
213 |
+
);
|
214 |
+
|
215 |
public static $classMap = array (
|
216 |
+
'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
|
217 |
+
'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
|
218 |
+
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
219 |
'Cyr_To_Lat\\ACF' => __DIR__ . '/../..' . '/classes/class-acf.php',
|
220 |
'Cyr_To_Lat\\Admin_Notices' => __DIR__ . '/../..' . '/classes/class-admin-notices.php',
|
221 |
'Cyr_To_Lat\\Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-conversion-process.php',
|
222 |
'Cyr_To_Lat\\Conversion_Tables' => __DIR__ . '/../..' . '/classes/class-conversion-tables.php',
|
223 |
'Cyr_To_Lat\\Converter' => __DIR__ . '/../..' . '/classes/class-converter.php',
|
224 |
+
'Cyr_To_Lat\\Cyr_To_Lat_TestCase' => __DIR__ . '/../..' . '/tests/phpunit/classes/class-cyr-to-lat-testcase.php',
|
225 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-async-request.php',
|
226 |
'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-background-process.php',
|
227 |
'Cyr_To_Lat\\Main' => __DIR__ . '/../..' . '/classes/class-main.php',
|
231 |
'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/Mbstring.php',
|
232 |
'Cyr_To_Lat\\Term_Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-term-conversion-process.php',
|
233 |
'Cyr_To_Lat\\WP_CLI' => __DIR__ . '/../..' . '/classes/class-wp-cli.php',
|
234 |
+
'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
|
235 |
+
'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php',
|
236 |
+
'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
|
237 |
+
'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
|
238 |
+
'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
|
239 |
+
'Hamcrest\\Arrays\\IsArray' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php',
|
240 |
+
'Hamcrest\\Arrays\\IsArrayContaining' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php',
|
241 |
+
'Hamcrest\\Arrays\\IsArrayContainingInAnyOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php',
|
242 |
+
'Hamcrest\\Arrays\\IsArrayContainingInOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php',
|
243 |
+
'Hamcrest\\Arrays\\IsArrayContainingKey' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php',
|
244 |
+
'Hamcrest\\Arrays\\IsArrayContainingKeyValuePair' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php',
|
245 |
+
'Hamcrest\\Arrays\\IsArrayWithSize' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php',
|
246 |
+
'Hamcrest\\Arrays\\MatchingOnce' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php',
|
247 |
+
'Hamcrest\\Arrays\\SeriesMatchingOnce' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php',
|
248 |
+
'Hamcrest\\AssertionError' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php',
|
249 |
+
'Hamcrest\\BaseDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php',
|
250 |
+
'Hamcrest\\BaseMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php',
|
251 |
+
'Hamcrest\\Collection\\IsEmptyTraversable' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php',
|
252 |
+
'Hamcrest\\Collection\\IsTraversableWithSize' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php',
|
253 |
+
'Hamcrest\\Core\\AllOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php',
|
254 |
+
'Hamcrest\\Core\\AnyOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php',
|
255 |
+
'Hamcrest\\Core\\CombinableMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php',
|
256 |
+
'Hamcrest\\Core\\DescribedAs' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php',
|
257 |
+
'Hamcrest\\Core\\Every' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php',
|
258 |
+
'Hamcrest\\Core\\HasToString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php',
|
259 |
+
'Hamcrest\\Core\\Is' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php',
|
260 |
+
'Hamcrest\\Core\\IsAnything' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php',
|
261 |
+
'Hamcrest\\Core\\IsCollectionContaining' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php',
|
262 |
+
'Hamcrest\\Core\\IsEqual' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php',
|
263 |
+
'Hamcrest\\Core\\IsIdentical' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php',
|
264 |
+
'Hamcrest\\Core\\IsInstanceOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php',
|
265 |
+
'Hamcrest\\Core\\IsNot' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php',
|
266 |
+
'Hamcrest\\Core\\IsNull' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php',
|
267 |
+
'Hamcrest\\Core\\IsSame' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php',
|
268 |
+
'Hamcrest\\Core\\IsTypeOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php',
|
269 |
+
'Hamcrest\\Core\\Set' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php',
|
270 |
+
'Hamcrest\\Core\\ShortcutCombination' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php',
|
271 |
+
'Hamcrest\\Description' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php',
|
272 |
+
'Hamcrest\\DiagnosingMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php',
|
273 |
+
'Hamcrest\\FeatureMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php',
|
274 |
+
'Hamcrest\\Internal\\SelfDescribingValue' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php',
|
275 |
+
'Hamcrest\\Matcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php',
|
276 |
+
'Hamcrest\\MatcherAssert' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php',
|
277 |
+
'Hamcrest\\Matchers' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php',
|
278 |
+
'Hamcrest\\NullDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php',
|
279 |
+
'Hamcrest\\Number\\IsCloseTo' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php',
|
280 |
+
'Hamcrest\\Number\\OrderingComparison' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php',
|
281 |
+
'Hamcrest\\SelfDescribing' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php',
|
282 |
+
'Hamcrest\\StringDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php',
|
283 |
+
'Hamcrest\\Text\\IsEmptyString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php',
|
284 |
+
'Hamcrest\\Text\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php',
|
285 |
+
'Hamcrest\\Text\\IsEqualIgnoringWhiteSpace' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php',
|
286 |
+
'Hamcrest\\Text\\MatchesPattern' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php',
|
287 |
+
'Hamcrest\\Text\\StringContains' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php',
|
288 |
+
'Hamcrest\\Text\\StringContainsIgnoringCase' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php',
|
289 |
+
'Hamcrest\\Text\\StringContainsInOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php',
|
290 |
+
'Hamcrest\\Text\\StringEndsWith' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php',
|
291 |
+
'Hamcrest\\Text\\StringStartsWith' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php',
|
292 |
+
'Hamcrest\\Text\\SubstringMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php',
|
293 |
+
'Hamcrest\\TypeSafeDiagnosingMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php',
|
294 |
+
'Hamcrest\\TypeSafeMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php',
|
295 |
+
'Hamcrest\\Type\\IsArray' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php',
|
296 |
+
'Hamcrest\\Type\\IsBoolean' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php',
|
297 |
+
'Hamcrest\\Type\\IsCallable' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php',
|
298 |
+
'Hamcrest\\Type\\IsDouble' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php',
|
299 |
+
'Hamcrest\\Type\\IsInteger' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php',
|
300 |
+
'Hamcrest\\Type\\IsNumeric' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php',
|
301 |
+
'Hamcrest\\Type\\IsObject' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php',
|
302 |
+
'Hamcrest\\Type\\IsResource' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php',
|
303 |
+
'Hamcrest\\Type\\IsScalar' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php',
|
304 |
+
'Hamcrest\\Type\\IsString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php',
|
305 |
+
'Hamcrest\\Util' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php',
|
306 |
+
'Hamcrest\\Xml\\HasXPath' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php',
|
307 |
+
'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
|
308 |
+
'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
|
309 |
+
'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
|
310 |
+
'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
311 |
+
'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
312 |
+
'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
313 |
+
'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
314 |
+
'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
315 |
+
'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
316 |
+
'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
317 |
+
'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
318 |
+
'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
319 |
+
'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
320 |
+
'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
|
321 |
+
'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
322 |
+
'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
|
323 |
+
'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
324 |
+
'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
325 |
+
'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
326 |
+
'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
|
327 |
+
'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
328 |
+
'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
329 |
+
'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
330 |
+
'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
331 |
+
'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
332 |
+
'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
333 |
+
'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
|
334 |
+
'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
335 |
+
'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
|
336 |
+
'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
337 |
+
'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
338 |
+
'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
|
339 |
+
'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
340 |
+
'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
|
341 |
+
'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
342 |
+
'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
343 |
+
'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
|
344 |
+
'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
345 |
+
'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
|
346 |
+
'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
347 |
+
'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
|
348 |
+
'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
|
349 |
+
'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
|
350 |
+
'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
|
351 |
+
'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
352 |
+
'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
|
353 |
+
'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
354 |
+
'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
355 |
+
'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
356 |
+
'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
|
357 |
+
'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
358 |
+
'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
359 |
+
'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
360 |
+
'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
|
361 |
+
'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
362 |
+
'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
363 |
+
'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
|
364 |
+
'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
365 |
+
'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
366 |
+
'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
|
367 |
+
'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
368 |
+
'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
369 |
+
'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
370 |
+
'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
371 |
+
'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
372 |
+
'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
373 |
+
'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
|
374 |
+
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
|
375 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
|
376 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
|
377 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
|
378 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
|
379 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
|
380 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
|
381 |
+
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
|
382 |
+
'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
|
383 |
+
'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Generator.php',
|
384 |
+
'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
|
385 |
+
'PHPUnit\\Framework\\MockObject\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
|
386 |
+
'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
|
387 |
+
'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
|
388 |
+
'PHPUnit\\Framework\\MockObject\\Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invokable.php',
|
389 |
+
'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher.php',
|
390 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
|
391 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
|
392 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
|
393 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
|
394 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
|
395 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
|
396 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
|
397 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
|
398 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
|
399 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
|
400 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
|
401 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
|
402 |
+
'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
|
403 |
+
'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
|
404 |
+
'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
|
405 |
+
'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
|
406 |
+
'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub.php',
|
407 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
|
408 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
|
409 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
|
410 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
|
411 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
|
412 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
|
413 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
|
414 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
|
415 |
+
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
|
416 |
+
'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
|
417 |
+
'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
|
418 |
+
'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
419 |
+
'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
420 |
+
'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
421 |
+
'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
422 |
+
'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
423 |
+
'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
424 |
+
'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
425 |
+
'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
426 |
+
'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
|
427 |
+
'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
|
428 |
+
'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
429 |
+
'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
|
430 |
+
'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
|
431 |
+
'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
|
432 |
+
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
433 |
+
'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
434 |
+
'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
435 |
+
'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
|
436 |
+
'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
437 |
+
'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
438 |
+
'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
|
439 |
+
'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
|
440 |
+
'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
441 |
+
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
442 |
+
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
443 |
+
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
444 |
+
'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
445 |
+
'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
446 |
+
'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
447 |
+
'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
448 |
+
'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
|
449 |
+
'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
450 |
+
'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
451 |
+
'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
452 |
+
'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
|
453 |
+
'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
|
454 |
+
'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
455 |
+
'PHPUnit\\Util\\Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
|
456 |
+
'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
457 |
+
'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
458 |
+
'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
|
459 |
+
'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
460 |
+
'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
461 |
+
'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
|
462 |
+
'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
463 |
+
'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
464 |
+
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
465 |
+
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
466 |
+
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
467 |
+
'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
468 |
+
'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
469 |
+
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
470 |
+
'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
|
471 |
+
'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
472 |
+
'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
473 |
+
'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
|
474 |
+
'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
|
475 |
+
'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
|
476 |
+
'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
|
477 |
+
'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
|
478 |
+
'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
|
479 |
+
'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockObject.php',
|
480 |
+
'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
|
481 |
+
'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
482 |
+
'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
483 |
+
'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
484 |
+
'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
485 |
+
'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
486 |
+
'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
487 |
+
'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
488 |
+
'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
489 |
+
'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
490 |
+
'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
491 |
+
'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
492 |
+
'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
493 |
+
'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
494 |
+
'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
495 |
+
'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
496 |
+
'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
497 |
+
'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
498 |
+
'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
499 |
+
'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
500 |
+
'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
501 |
+
'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
502 |
+
'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
503 |
+
'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
504 |
+
'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
505 |
+
'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
506 |
+
'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
507 |
+
'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
508 |
+
'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
509 |
+
'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
510 |
+
'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
511 |
+
'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
512 |
+
'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
513 |
+
'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
514 |
+
'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
515 |
+
'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
516 |
+
'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
517 |
+
'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
518 |
+
'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
519 |
+
'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
520 |
+
'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
521 |
+
'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
522 |
+
'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
523 |
+
'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
524 |
+
'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
525 |
+
'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
526 |
+
'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
527 |
+
'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
528 |
+
'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
529 |
+
'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
530 |
+
'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
531 |
+
'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
532 |
+
'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
533 |
+
'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
534 |
+
'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
535 |
+
'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
536 |
+
'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
537 |
+
'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
538 |
+
'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
539 |
+
'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
540 |
+
'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
541 |
+
'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
542 |
+
'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
543 |
+
'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
544 |
+
'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
545 |
+
'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
546 |
+
'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
547 |
+
'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
548 |
+
'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
549 |
+
'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
550 |
+
'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
551 |
+
'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
552 |
+
'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
553 |
+
'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
554 |
+
'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
555 |
+
'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
556 |
+
'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
557 |
+
'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
558 |
+
'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
559 |
+
'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
560 |
+
'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
561 |
+
'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
562 |
+
'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
563 |
+
'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
564 |
+
'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
565 |
+
'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
566 |
+
'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
567 |
+
'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
568 |
+
'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
569 |
+
'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
570 |
+
'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
571 |
+
'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
572 |
+
'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
573 |
+
'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
574 |
+
'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
575 |
+
'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
576 |
+
'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
577 |
+
'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
578 |
+
'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
579 |
+
'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
580 |
+
'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
581 |
+
'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
582 |
+
'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
583 |
+
'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
584 |
+
'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
585 |
+
'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
586 |
+
'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
587 |
+
'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
588 |
+
'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
589 |
+
'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
590 |
+
'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
591 |
+
'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
592 |
+
'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
593 |
+
'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
594 |
+
'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
595 |
+
'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
596 |
+
'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
597 |
+
'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
598 |
+
'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
599 |
+
'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
600 |
+
'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
601 |
+
'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
602 |
+
'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
603 |
+
'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
604 |
+
'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
605 |
+
'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
606 |
+
'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
607 |
+
'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
608 |
+
'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
609 |
+
'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
610 |
+
'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
611 |
+
'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
612 |
+
'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
613 |
+
'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
614 |
+
'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
615 |
+
'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
616 |
+
'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
617 |
+
'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
618 |
+
'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
619 |
+
'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
620 |
+
'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
621 |
+
'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
622 |
+
'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
623 |
+
'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
624 |
+
'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
625 |
+
'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
626 |
+
'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
627 |
+
'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
628 |
+
'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
629 |
+
'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
630 |
+
'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
631 |
+
'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
632 |
+
'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
633 |
+
'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
634 |
+
'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
635 |
+
'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
636 |
+
'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
637 |
+
'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
638 |
+
'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
639 |
+
'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
640 |
+
'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
641 |
+
'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
642 |
+
'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
643 |
+
'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
644 |
+
'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
645 |
+
'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
646 |
+
'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
647 |
+
'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
648 |
+
'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
649 |
+
'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php',
|
650 |
+
'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
|
651 |
+
'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
652 |
+
'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
653 |
+
'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
654 |
+
'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
655 |
+
'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
656 |
+
'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
657 |
+
'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
658 |
+
'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
659 |
+
'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
660 |
+
'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
661 |
+
'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
662 |
+
'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
663 |
+
'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
664 |
+
'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
665 |
+
'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
666 |
+
'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
667 |
+
'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
668 |
+
'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
669 |
+
'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
670 |
+
'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
671 |
+
'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
672 |
+
'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
673 |
+
'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
674 |
+
'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
675 |
+
'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
676 |
+
'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
677 |
+
'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
678 |
+
'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
679 |
+
'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
680 |
+
'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
|
681 |
+
'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
|
682 |
+
'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
|
683 |
+
'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
|
684 |
+
'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
|
685 |
+
'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
|
686 |
+
'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
|
687 |
+
'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
|
688 |
+
'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
|
689 |
+
'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
|
690 |
+
'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
|
691 |
+
'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
|
692 |
+
'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
|
693 |
+
'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
|
694 |
+
'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
|
695 |
+
'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
|
696 |
+
'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
|
697 |
+
'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
|
698 |
+
'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
|
699 |
+
'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
|
700 |
+
'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
|
701 |
+
'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
|
702 |
+
'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
|
703 |
+
'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
|
704 |
+
'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
|
705 |
+
'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
|
706 |
+
'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
|
707 |
+
'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
|
708 |
+
'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
|
709 |
+
'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
|
710 |
+
'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
|
711 |
+
'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
|
712 |
+
'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
|
713 |
+
'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
|
714 |
+
'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
|
715 |
+
'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
|
716 |
+
'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
|
717 |
+
'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
|
718 |
+
'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
|
719 |
+
'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
720 |
+
'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
|
721 |
+
'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
|
722 |
+
'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
723 |
+
'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
724 |
+
'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
|
725 |
+
'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
|
726 |
+
'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
|
727 |
+
'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
|
728 |
+
'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
|
729 |
+
'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
|
730 |
+
'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AbstractVersionConstraint.php',
|
731 |
+
'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/AndVersionConstraintGroup.php',
|
732 |
+
'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AnyVersionConstraint.php',
|
733 |
+
'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/ExactVersionConstraint.php',
|
734 |
+
'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/Exception.php',
|
735 |
+
'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
|
736 |
+
'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/InvalidVersionException.php',
|
737 |
+
'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/OrVersionConstraintGroup.php',
|
738 |
+
'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
|
739 |
+
'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
|
740 |
+
'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
|
741 |
+
'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
|
742 |
+
'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
|
743 |
+
'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraint.php',
|
744 |
+
'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
|
745 |
+
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
|
746 |
+
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
|
747 |
+
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
|
748 |
+
'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
|
749 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
|
750 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
|
751 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
|
752 |
+
'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
|
753 |
+
'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
|
754 |
+
'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
|
755 |
+
'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
|
756 |
+
'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
|
757 |
+
'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
|
758 |
+
'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php',
|
759 |
+
'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php',
|
760 |
+
'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php',
|
761 |
+
'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php',
|
762 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php',
|
763 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
|
764 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
|
765 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
|
766 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
|
767 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
|
768 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
|
769 |
+
'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
|
770 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
|
771 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
|
772 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
|
773 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
|
774 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
|
775 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
|
776 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
|
777 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
|
778 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
|
779 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
|
780 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
|
781 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
|
782 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
|
783 |
+
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
|
784 |
+
'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
|
785 |
+
'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
|
786 |
+
'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php',
|
787 |
+
'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
|
788 |
+
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
|
789 |
+
'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
|
790 |
+
'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
|
791 |
+
'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
|
792 |
+
'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
|
793 |
+
'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
|
794 |
+
'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
|
795 |
+
'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
|
796 |
+
'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
|
797 |
+
'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
|
798 |
+
'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
|
799 |
+
'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
|
800 |
+
'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
|
801 |
+
'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
|
802 |
+
'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
|
803 |
+
'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
|
804 |
+
'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
|
805 |
+
'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
|
806 |
+
'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
|
807 |
+
'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
|
808 |
+
'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
|
809 |
+
'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
|
810 |
+
'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
|
811 |
+
'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
|
812 |
+
'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
|
813 |
+
'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
|
814 |
+
'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
|
815 |
+
'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
|
816 |
+
'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
|
817 |
+
'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
|
818 |
+
'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
|
819 |
+
'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
|
820 |
+
'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
|
821 |
+
'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
|
822 |
+
'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
|
823 |
+
'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
|
824 |
+
'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
|
825 |
+
'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
|
826 |
+
'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
|
827 |
+
'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
|
828 |
+
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
|
829 |
+
'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
|
830 |
+
'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
|
831 |
+
'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
|
832 |
+
'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
|
833 |
+
'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
|
834 |
+
'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
|
835 |
+
'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
|
836 |
+
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
|
837 |
+
'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
|
838 |
+
'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
|
839 |
+
'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
|
840 |
+
'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
|
841 |
+
'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
|
842 |
+
'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
|
843 |
+
'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
|
844 |
+
'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
|
845 |
+
'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
|
846 |
+
'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
|
847 |
+
'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
|
848 |
+
'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
|
849 |
+
'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
|
850 |
+
'WP_CLI' => __DIR__ . '/../..' . '/tests/phpunit/stubs/class-wp-cli.php',
|
851 |
+
'WP_CLI_Command' => __DIR__ . '/../..' . '/tests/phpunit/stubs/class-wp-cli-command.php',
|
852 |
+
'WP_Mock' => __DIR__ . '/..' . '/10up/wp_mock/php/WP_Mock.php',
|
853 |
+
'cli\\progress\\Bar' => __DIR__ . '/../..' . '/tests/phpunit/stubs/class-bar.php',
|
854 |
);
|
855 |
|
856 |
public static function getInitializer(ClassLoader $loader)
|
857 |
{
|
858 |
return \Closure::bind(function () use ($loader) {
|
859 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$prefixLengthsPsr4;
|
860 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$prefixDirsPsr4;
|
861 |
+
$loader->prefixesPsr0 = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$prefixesPsr0;
|
862 |
+
$loader->classMap = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$classMap;
|
863 |
|
864 |
}, null, ClassLoader::class);
|
865 |
}
|
vendor/composer/installed.json
CHANGED
@@ -1,126 +1,4232 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
"
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
"
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
"
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
"
|
32 |
-
"
|
33 |
-
"
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
"
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
"
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
"
|
67 |
-
|
68 |
-
|
69 |
-
"
|
70 |
-
|
71 |
-
|
72 |
-
"
|
73 |
-
"
|
74 |
-
"
|
75 |
-
"
|
76 |
-
"
|
77 |
-
|
78 |
-
|
79 |
-
"
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
"
|
86 |
-
"
|
87 |
-
"
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
"
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
"
|
101 |
-
|
102 |
-
|
103 |
-
"
|
104 |
-
"
|
105 |
-
"
|
106 |
-
"
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
"
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
"
|
118 |
-
|
119 |
-
|
120 |
-
"
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"packages": [
|
3 |
+
{
|
4 |
+
"name": "10up/wp_mock",
|
5 |
+
"version": "0.3.0",
|
6 |
+
"version_normalized": "0.3.0.0",
|
7 |
+
"source": {
|
8 |
+
"type": "git",
|
9 |
+
"url": "https://github.com/10up/wp_mock.git",
|
10 |
+
"reference": "64956557e98ee4c8c56cd1e396e822adb4673714"
|
11 |
+
},
|
12 |
+
"dist": {
|
13 |
+
"type": "zip",
|
14 |
+
"url": "https://api.github.com/repos/10up/wp_mock/zipball/64956557e98ee4c8c56cd1e396e822adb4673714",
|
15 |
+
"reference": "64956557e98ee4c8c56cd1e396e822adb4673714",
|
16 |
+
"shasum": ""
|
17 |
+
},
|
18 |
+
"require": {
|
19 |
+
"antecedent/patchwork": "^2.1",
|
20 |
+
"mockery/mockery": "^1.0",
|
21 |
+
"php": ">=7.0",
|
22 |
+
"phpunit/phpunit": ">=6.0"
|
23 |
+
},
|
24 |
+
"require-dev": {
|
25 |
+
"behat/behat": "^3.0",
|
26 |
+
"satooshi/php-coveralls": "^1.0",
|
27 |
+
"sebastian/comparator": ">=1.2.3"
|
28 |
+
},
|
29 |
+
"time": "2017-12-03T19:28:28+00:00",
|
30 |
+
"type": "library",
|
31 |
+
"installation-source": "dist",
|
32 |
+
"autoload": {
|
33 |
+
"psr-4": {
|
34 |
+
"WP_Mock\\": "./php/WP_Mock"
|
35 |
+
},
|
36 |
+
"classmap": [
|
37 |
+
"php/WP_Mock.php"
|
38 |
+
]
|
39 |
+
},
|
40 |
+
"notification-url": "https://packagist.org/downloads/",
|
41 |
+
"license": [
|
42 |
+
"GPL-2.0+"
|
43 |
+
],
|
44 |
+
"description": "A mocking library to take the pain out of unit testing for WordPress",
|
45 |
+
"support": {
|
46 |
+
"issues": "https://github.com/10up/wp_mock/issues",
|
47 |
+
"source": "https://github.com/10up/wp_mock/tree/master"
|
48 |
+
},
|
49 |
+
"install-path": "../10up/wp_mock"
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"name": "antecedent/patchwork",
|
53 |
+
"version": "2.1.12",
|
54 |
+
"version_normalized": "2.1.12.0",
|
55 |
+
"source": {
|
56 |
+
"type": "git",
|
57 |
+
"url": "https://github.com/antecedent/patchwork.git",
|
58 |
+
"reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea"
|
59 |
+
},
|
60 |
+
"dist": {
|
61 |
+
"type": "zip",
|
62 |
+
"url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea",
|
63 |
+
"reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea",
|
64 |
+
"shasum": ""
|
65 |
+
},
|
66 |
+
"require": {
|
67 |
+
"php": ">=5.4.0"
|
68 |
+
},
|
69 |
+
"require-dev": {
|
70 |
+
"phpunit/phpunit": ">=4"
|
71 |
+
},
|
72 |
+
"time": "2019-12-22T17:52:09+00:00",
|
73 |
+
"type": "library",
|
74 |
+
"installation-source": "dist",
|
75 |
+
"notification-url": "https://packagist.org/downloads/",
|
76 |
+
"license": [
|
77 |
+
"MIT"
|
78 |
+
],
|
79 |
+
"authors": [
|
80 |
+
{
|
81 |
+
"name": "Ignas Rudaitis",
|
82 |
+
"email": "ignas.rudaitis@gmail.com"
|
83 |
+
}
|
84 |
+
],
|
85 |
+
"description": "Method redefinition (monkey-patching) functionality for PHP.",
|
86 |
+
"homepage": "http://patchwork2.org/",
|
87 |
+
"keywords": [
|
88 |
+
"aop",
|
89 |
+
"aspect",
|
90 |
+
"interception",
|
91 |
+
"monkeypatching",
|
92 |
+
"redefinition",
|
93 |
+
"runkit",
|
94 |
+
"testing"
|
95 |
+
],
|
96 |
+
"support": {
|
97 |
+
"issues": "https://github.com/antecedent/patchwork/issues",
|
98 |
+
"source": "https://github.com/antecedent/patchwork/tree/2.1.12"
|
99 |
+
},
|
100 |
+
"install-path": "../antecedent/patchwork"
|
101 |
+
},
|
102 |
+
{
|
103 |
+
"name": "composer/installers",
|
104 |
+
"version": "v1.9.0",
|
105 |
+
"version_normalized": "1.9.0.0",
|
106 |
+
"source": {
|
107 |
+
"type": "git",
|
108 |
+
"url": "https://github.com/composer/installers.git",
|
109 |
+
"reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca"
|
110 |
+
},
|
111 |
+
"dist": {
|
112 |
+
"type": "zip",
|
113 |
+
"url": "https://api.github.com/repos/composer/installers/zipball/b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
|
114 |
+
"reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
|
115 |
+
"shasum": ""
|
116 |
+
},
|
117 |
+
"require": {
|
118 |
+
"composer-plugin-api": "^1.0 || ^2.0"
|
119 |
+
},
|
120 |
+
"replace": {
|
121 |
+
"roundcube/plugin-installer": "*",
|
122 |
+
"shama/baton": "*"
|
123 |
+
},
|
124 |
+
"require-dev": {
|
125 |
+
"composer/composer": "1.6.* || 2.0.*@dev",
|
126 |
+
"composer/semver": "1.0.* || 2.0.*@dev",
|
127 |
+
"phpunit/phpunit": "^4.8.36",
|
128 |
+
"sebastian/comparator": "^1.2.4",
|
129 |
+
"symfony/process": "^2.3"
|
130 |
+
},
|
131 |
+
"time": "2020-04-07T06:57:05+00:00",
|
132 |
+
"type": "composer-plugin",
|
133 |
+
"extra": {
|
134 |
+
"class": "Composer\\Installers\\Plugin",
|
135 |
+
"branch-alias": {
|
136 |
+
"dev-master": "1.0-dev"
|
137 |
+
}
|
138 |
+
},
|
139 |
+
"installation-source": "dist",
|
140 |
+
"autoload": {
|
141 |
+
"psr-4": {
|
142 |
+
"Composer\\Installers\\": "src/Composer/Installers"
|
143 |
+
}
|
144 |
+
},
|
145 |
+
"notification-url": "https://packagist.org/downloads/",
|
146 |
+
"license": [
|
147 |
+
"MIT"
|
148 |
+
],
|
149 |
+
"authors": [
|
150 |
+
{
|
151 |
+
"name": "Kyle Robinson Young",
|
152 |
+
"email": "kyle@dontkry.com",
|
153 |
+
"homepage": "https://github.com/shama"
|
154 |
+
}
|
155 |
+
],
|
156 |
+
"description": "A multi-framework Composer library installer",
|
157 |
+
"homepage": "https://composer.github.io/installers/",
|
158 |
+
"keywords": [
|
159 |
+
"Craft",
|
160 |
+
"Dolibarr",
|
161 |
+
"Eliasis",
|
162 |
+
"Hurad",
|
163 |
+
"ImageCMS",
|
164 |
+
"Kanboard",
|
165 |
+
"Lan Management System",
|
166 |
+
"MODX Evo",
|
167 |
+
"MantisBT",
|
168 |
+
"Mautic",
|
169 |
+
"Maya",
|
170 |
+
"OXID",
|
171 |
+
"Plentymarkets",
|
172 |
+
"Porto",
|
173 |
+
"RadPHP",
|
174 |
+
"SMF",
|
175 |
+
"Thelia",
|
176 |
+
"Whmcs",
|
177 |
+
"WolfCMS",
|
178 |
+
"agl",
|
179 |
+
"aimeos",
|
180 |
+
"annotatecms",
|
181 |
+
"attogram",
|
182 |
+
"bitrix",
|
183 |
+
"cakephp",
|
184 |
+
"chef",
|
185 |
+
"cockpit",
|
186 |
+
"codeigniter",
|
187 |
+
"concrete5",
|
188 |
+
"croogo",
|
189 |
+
"dokuwiki",
|
190 |
+
"drupal",
|
191 |
+
"eZ Platform",
|
192 |
+
"elgg",
|
193 |
+
"expressionengine",
|
194 |
+
"fuelphp",
|
195 |
+
"grav",
|
196 |
+
"installer",
|
197 |
+
"itop",
|
198 |
+
"joomla",
|
199 |
+
"known",
|
200 |
+
"kohana",
|
201 |
+
"laravel",
|
202 |
+
"lavalite",
|
203 |
+
"lithium",
|
204 |
+
"magento",
|
205 |
+
"majima",
|
206 |
+
"mako",
|
207 |
+
"mediawiki",
|
208 |
+
"modulework",
|
209 |
+
"modx",
|
210 |
+
"moodle",
|
211 |
+
"osclass",
|
212 |
+
"phpbb",
|
213 |
+
"piwik",
|
214 |
+
"ppi",
|
215 |
+
"puppet",
|
216 |
+
"pxcms",
|
217 |
+
"reindex",
|
218 |
+
"roundcube",
|
219 |
+
"shopware",
|
220 |
+
"silverstripe",
|
221 |
+
"sydes",
|
222 |
+
"sylius",
|
223 |
+
"symfony",
|
224 |
+
"typo3",
|
225 |
+
"wordpress",
|
226 |
+
"yawik",
|
227 |
+
"zend",
|
228 |
+
"zikula"
|
229 |
+
],
|
230 |
+
"support": {
|
231 |
+
"issues": "https://github.com/composer/installers/issues",
|
232 |
+
"source": "https://github.com/composer/installers/tree/v1.9.0"
|
233 |
+
},
|
234 |
+
"funding": [
|
235 |
+
{
|
236 |
+
"url": "https://packagist.com",
|
237 |
+
"type": "custom"
|
238 |
+
},
|
239 |
+
{
|
240 |
+
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
241 |
+
"type": "tidelift"
|
242 |
+
}
|
243 |
+
],
|
244 |
+
"install-path": "./installers"
|
245 |
+
},
|
246 |
+
{
|
247 |
+
"name": "doctrine/instantiator",
|
248 |
+
"version": "1.0.5",
|
249 |
+
"version_normalized": "1.0.5.0",
|
250 |
+
"source": {
|
251 |
+
"type": "git",
|
252 |
+
"url": "https://github.com/doctrine/instantiator.git",
|
253 |
+
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
|
254 |
+
},
|
255 |
+
"dist": {
|
256 |
+
"type": "zip",
|
257 |
+
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
|
258 |
+
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
|
259 |
+
"shasum": ""
|
260 |
+
},
|
261 |
+
"require": {
|
262 |
+
"php": ">=5.3,<8.0-DEV"
|
263 |
+
},
|
264 |
+
"require-dev": {
|
265 |
+
"athletic/athletic": "~0.1.8",
|
266 |
+
"ext-pdo": "*",
|
267 |
+
"ext-phar": "*",
|
268 |
+
"phpunit/phpunit": "~4.0",
|
269 |
+
"squizlabs/php_codesniffer": "~2.0"
|
270 |
+
},
|
271 |
+
"time": "2015-06-14T21:17:01+00:00",
|
272 |
+
"type": "library",
|
273 |
+
"extra": {
|
274 |
+
"branch-alias": {
|
275 |
+
"dev-master": "1.0.x-dev"
|
276 |
+
}
|
277 |
+
},
|
278 |
+
"installation-source": "dist",
|
279 |
+
"autoload": {
|
280 |
+
"psr-4": {
|
281 |
+
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
|
282 |
+
}
|
283 |
+
},
|
284 |
+
"notification-url": "https://packagist.org/downloads/",
|
285 |
+
"license": [
|
286 |
+
"MIT"
|
287 |
+
],
|
288 |
+
"authors": [
|
289 |
+
{
|
290 |
+
"name": "Marco Pivetta",
|
291 |
+
"email": "ocramius@gmail.com",
|
292 |
+
"homepage": "http://ocramius.github.com/"
|
293 |
+
}
|
294 |
+
],
|
295 |
+
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
|
296 |
+
"homepage": "https://github.com/doctrine/instantiator",
|
297 |
+
"keywords": [
|
298 |
+
"constructor",
|
299 |
+
"instantiate"
|
300 |
+
],
|
301 |
+
"support": {
|
302 |
+
"issues": "https://github.com/doctrine/instantiator/issues",
|
303 |
+
"source": "https://github.com/doctrine/instantiator/tree/master"
|
304 |
+
},
|
305 |
+
"install-path": "../doctrine/instantiator"
|
306 |
+
},
|
307 |
+
{
|
308 |
+
"name": "guzzlehttp/guzzle",
|
309 |
+
"version": "6.5.5",
|
310 |
+
"version_normalized": "6.5.5.0",
|
311 |
+
"source": {
|
312 |
+
"type": "git",
|
313 |
+
"url": "https://github.com/guzzle/guzzle.git",
|
314 |
+
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
|
315 |
+
},
|
316 |
+
"dist": {
|
317 |
+
"type": "zip",
|
318 |
+
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
|
319 |
+
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
|
320 |
+
"shasum": ""
|
321 |
+
},
|
322 |
+
"require": {
|
323 |
+
"ext-json": "*",
|
324 |
+
"guzzlehttp/promises": "^1.0",
|
325 |
+
"guzzlehttp/psr7": "^1.6.1",
|
326 |
+
"php": ">=5.5",
|
327 |
+
"symfony/polyfill-intl-idn": "^1.17.0"
|
328 |
+
},
|
329 |
+
"require-dev": {
|
330 |
+
"ext-curl": "*",
|
331 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
|
332 |
+
"psr/log": "^1.1"
|
333 |
+
},
|
334 |
+
"suggest": {
|
335 |
+
"psr/log": "Required for using the Log middleware"
|
336 |
+
},
|
337 |
+
"time": "2020-06-16T21:01:06+00:00",
|
338 |
+
"type": "library",
|
339 |
+
"extra": {
|
340 |
+
"branch-alias": {
|
341 |
+
"dev-master": "6.5-dev"
|
342 |
+
}
|
343 |
+
},
|
344 |
+
"installation-source": "dist",
|
345 |
+
"autoload": {
|
346 |
+
"psr-4": {
|
347 |
+
"GuzzleHttp\\": "src/"
|
348 |
+
},
|
349 |
+
"files": [
|
350 |
+
"src/functions_include.php"
|
351 |
+
]
|
352 |
+
},
|
353 |
+
"notification-url": "https://packagist.org/downloads/",
|
354 |
+
"license": [
|
355 |
+
"MIT"
|
356 |
+
],
|
357 |
+
"authors": [
|
358 |
+
{
|
359 |
+
"name": "Michael Dowling",
|
360 |
+
"email": "mtdowling@gmail.com",
|
361 |
+
"homepage": "https://github.com/mtdowling"
|
362 |
+
}
|
363 |
+
],
|
364 |
+
"description": "Guzzle is a PHP HTTP client library",
|
365 |
+
"homepage": "http://guzzlephp.org/",
|
366 |
+
"keywords": [
|
367 |
+
"client",
|
368 |
+
"curl",
|
369 |
+
"framework",
|
370 |
+
"http",
|
371 |
+
"http client",
|
372 |
+
"rest",
|
373 |
+
"web service"
|
374 |
+
],
|
375 |
+
"support": {
|
376 |
+
"issues": "https://github.com/guzzle/guzzle/issues",
|
377 |
+
"source": "https://github.com/guzzle/guzzle/tree/6.5"
|
378 |
+
},
|
379 |
+
"install-path": "../guzzlehttp/guzzle"
|
380 |
+
},
|
381 |
+
{
|
382 |
+
"name": "guzzlehttp/promises",
|
383 |
+
"version": "1.4.0",
|
384 |
+
"version_normalized": "1.4.0.0",
|
385 |
+
"source": {
|
386 |
+
"type": "git",
|
387 |
+
"url": "https://github.com/guzzle/promises.git",
|
388 |
+
"reference": "60d379c243457e073cff02bc323a2a86cb355631"
|
389 |
+
},
|
390 |
+
"dist": {
|
391 |
+
"type": "zip",
|
392 |
+
"url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
|
393 |
+
"reference": "60d379c243457e073cff02bc323a2a86cb355631",
|
394 |
+
"shasum": ""
|
395 |
+
},
|
396 |
+
"require": {
|
397 |
+
"php": ">=5.5"
|
398 |
+
},
|
399 |
+
"require-dev": {
|
400 |
+
"symfony/phpunit-bridge": "^4.4 || ^5.1"
|
401 |
+
},
|
402 |
+
"time": "2020-09-30T07:37:28+00:00",
|
403 |
+
"type": "library",
|
404 |
+
"extra": {
|
405 |
+
"branch-alias": {
|
406 |
+
"dev-master": "1.4-dev"
|
407 |
+
}
|
408 |
+
},
|
409 |
+
"installation-source": "dist",
|
410 |
+
"autoload": {
|
411 |
+
"psr-4": {
|
412 |
+
"GuzzleHttp\\Promise\\": "src/"
|
413 |
+
},
|
414 |
+
"files": [
|
415 |
+
"src/functions_include.php"
|
416 |
+
]
|
417 |
+
},
|
418 |
+
"notification-url": "https://packagist.org/downloads/",
|
419 |
+
"license": [
|
420 |
+
"MIT"
|
421 |
+
],
|
422 |
+
"authors": [
|
423 |
+
{
|
424 |
+
"name": "Michael Dowling",
|
425 |
+
"email": "mtdowling@gmail.com",
|
426 |
+
"homepage": "https://github.com/mtdowling"
|
427 |
+
}
|
428 |
+
],
|
429 |
+
"description": "Guzzle promises library",
|
430 |
+
"keywords": [
|
431 |
+
"promise"
|
432 |
+
],
|
433 |
+
"support": {
|
434 |
+
"issues": "https://github.com/guzzle/promises/issues",
|
435 |
+
"source": "https://github.com/guzzle/promises/tree/1.4.0"
|
436 |
+
},
|
437 |
+
"install-path": "../guzzlehttp/promises"
|
438 |
+
},
|
439 |
+
{
|
440 |
+
"name": "guzzlehttp/psr7",
|
441 |
+
"version": "1.7.0",
|
442 |
+
"version_normalized": "1.7.0.0",
|
443 |
+
"source": {
|
444 |
+
"type": "git",
|
445 |
+
"url": "https://github.com/guzzle/psr7.git",
|
446 |
+
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
|
447 |
+
},
|
448 |
+
"dist": {
|
449 |
+
"type": "zip",
|
450 |
+
"url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
|
451 |
+
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
|
452 |
+
"shasum": ""
|
453 |
+
},
|
454 |
+
"require": {
|
455 |
+
"php": ">=5.4.0",
|
456 |
+
"psr/http-message": "~1.0",
|
457 |
+
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
|
458 |
+
},
|
459 |
+
"provide": {
|
460 |
+
"psr/http-message-implementation": "1.0"
|
461 |
+
},
|
462 |
+
"require-dev": {
|
463 |
+
"ext-zlib": "*",
|
464 |
+
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
|
465 |
+
},
|
466 |
+
"suggest": {
|
467 |
+
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
468 |
+
},
|
469 |
+
"time": "2020-09-30T07:37:11+00:00",
|
470 |
+
"type": "library",
|
471 |
+
"extra": {
|
472 |
+
"branch-alias": {
|
473 |
+
"dev-master": "1.7-dev"
|
474 |
+
}
|
475 |
+
},
|
476 |
+
"installation-source": "dist",
|
477 |
+
"autoload": {
|
478 |
+
"psr-4": {
|
479 |
+
"GuzzleHttp\\Psr7\\": "src/"
|
480 |
+
},
|
481 |
+
"files": [
|
482 |
+
"src/functions_include.php"
|
483 |
+
]
|
484 |
+
},
|
485 |
+
"notification-url": "https://packagist.org/downloads/",
|
486 |
+
"license": [
|
487 |
+
"MIT"
|
488 |
+
],
|
489 |
+
"authors": [
|
490 |
+
{
|
491 |
+
"name": "Michael Dowling",
|
492 |
+
"email": "mtdowling@gmail.com",
|
493 |
+
"homepage": "https://github.com/mtdowling"
|
494 |
+
},
|
495 |
+
{
|
496 |
+
"name": "Tobias Schultze",
|
497 |
+
"homepage": "https://github.com/Tobion"
|
498 |
+
}
|
499 |
+
],
|
500 |
+
"description": "PSR-7 message implementation that also provides common utility methods",
|
501 |
+
"keywords": [
|
502 |
+
"http",
|
503 |
+
"message",
|
504 |
+
"psr-7",
|
505 |
+
"request",
|
506 |
+
"response",
|
507 |
+
"stream",
|
508 |
+
"uri",
|
509 |
+
"url"
|
510 |
+
],
|
511 |
+
"support": {
|
512 |
+
"issues": "https://github.com/guzzle/psr7/issues",
|
513 |
+
"source": "https://github.com/guzzle/psr7/tree/1.7.0"
|
514 |
+
},
|
515 |
+
"install-path": "../guzzlehttp/psr7"
|
516 |
+
},
|
517 |
+
{
|
518 |
+
"name": "hamcrest/hamcrest-php",
|
519 |
+
"version": "v2.0.1",
|
520 |
+
"version_normalized": "2.0.1.0",
|
521 |
+
"source": {
|
522 |
+
"type": "git",
|
523 |
+
"url": "https://github.com/hamcrest/hamcrest-php.git",
|
524 |
+
"reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
|
525 |
+
},
|
526 |
+
"dist": {
|
527 |
+
"type": "zip",
|
528 |
+
"url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
|
529 |
+
"reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
|
530 |
+
"shasum": ""
|
531 |
+
},
|
532 |
+
"require": {
|
533 |
+
"php": "^5.3|^7.0|^8.0"
|
534 |
+
},
|
535 |
+
"replace": {
|
536 |
+
"cordoval/hamcrest-php": "*",
|
537 |
+
"davedevelopment/hamcrest-php": "*",
|
538 |
+
"kodova/hamcrest-php": "*"
|
539 |
+
},
|
540 |
+
"require-dev": {
|
541 |
+
"phpunit/php-file-iterator": "^1.4 || ^2.0",
|
542 |
+
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
|
543 |
+
},
|
544 |
+
"time": "2020-07-09T08:09:16+00:00",
|
545 |
+
"type": "library",
|
546 |
+
"extra": {
|
547 |
+
"branch-alias": {
|
548 |
+
"dev-master": "2.1-dev"
|
549 |
+
}
|
550 |
+
},
|
551 |
+
"installation-source": "dist",
|
552 |
+
"autoload": {
|
553 |
+
"classmap": [
|
554 |
+
"hamcrest"
|
555 |
+
]
|
556 |
+
},
|
557 |
+
"notification-url": "https://packagist.org/downloads/",
|
558 |
+
"license": [
|
559 |
+
"BSD-3-Clause"
|
560 |
+
],
|
561 |
+
"description": "This is the PHP port of Hamcrest Matchers",
|
562 |
+
"keywords": [
|
563 |
+
"test"
|
564 |
+
],
|
565 |
+
"support": {
|
566 |
+
"issues": "https://github.com/hamcrest/hamcrest-php/issues",
|
567 |
+
"source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
|
568 |
+
},
|
569 |
+
"install-path": "../hamcrest/hamcrest-php"
|
570 |
+
},
|
571 |
+
{
|
572 |
+
"name": "lucatume/args",
|
573 |
+
"version": "1.0.1.1",
|
574 |
+
"version_normalized": "1.0.1.1",
|
575 |
+
"source": {
|
576 |
+
"type": "git",
|
577 |
+
"url": "https://github.com/lucatume/args.git",
|
578 |
+
"reference": "9ab69f5c995813b2dfbb067100ada500ee2893e8"
|
579 |
+
},
|
580 |
+
"dist": {
|
581 |
+
"type": "zip",
|
582 |
+
"url": "https://api.github.com/repos/lucatume/args/zipball/9ab69f5c995813b2dfbb067100ada500ee2893e8",
|
583 |
+
"reference": "9ab69f5c995813b2dfbb067100ada500ee2893e8",
|
584 |
+
"shasum": ""
|
585 |
+
},
|
586 |
+
"require": {
|
587 |
+
"xrstf/composer-php52": "1.*"
|
588 |
+
},
|
589 |
+
"require-dev": {
|
590 |
+
"codeception/codeception": "*"
|
591 |
+
},
|
592 |
+
"time": "2018-02-11T12:20:29+00:00",
|
593 |
+
"type": "library",
|
594 |
+
"installation-source": "dist",
|
595 |
+
"autoload": {
|
596 |
+
"psr-0": {
|
597 |
+
"Arg": "src/",
|
598 |
+
"tad_": "src/"
|
599 |
+
}
|
600 |
+
},
|
601 |
+
"notification-url": "https://packagist.org/downloads/",
|
602 |
+
"license": [
|
603 |
+
"GPL-2.0"
|
604 |
+
],
|
605 |
+
"authors": [
|
606 |
+
{
|
607 |
+
"name": "Luca Tumedei",
|
608 |
+
"email": "luca@theaveragedev.com"
|
609 |
+
}
|
610 |
+
],
|
611 |
+
"description": "A PHP 5.2 compatible arguments handling library.",
|
612 |
+
"support": {
|
613 |
+
"issues": "https://github.com/lucatume/args/issues",
|
614 |
+
"source": "https://github.com/lucatume/args/tree/master"
|
615 |
+
},
|
616 |
+
"install-path": "../lucatume/args"
|
617 |
+
},
|
618 |
+
{
|
619 |
+
"name": "lucatume/function-mocker",
|
620 |
+
"version": "dev-test-on-windows",
|
621 |
+
"version_normalized": "dev-test-on-windows",
|
622 |
+
"source": {
|
623 |
+
"type": "git",
|
624 |
+
"url": "git@github.com:kagg-design/function-mocker.git",
|
625 |
+
"reference": "0383729be9af2f1dba5e553b29c899f10aba8932"
|
626 |
+
},
|
627 |
+
"dist": {
|
628 |
+
"type": "zip",
|
629 |
+
"url": "https://api.github.com/repos/kagg-design/function-mocker/zipball/0383729be9af2f1dba5e553b29c899f10aba8932",
|
630 |
+
"reference": "0383729be9af2f1dba5e553b29c899f10aba8932",
|
631 |
+
"shasum": ""
|
632 |
+
},
|
633 |
+
"require": {
|
634 |
+
"antecedent/patchwork": "^2.0",
|
635 |
+
"lucatume/args": "^1.0",
|
636 |
+
"php": ">=5.6.0",
|
637 |
+
"phpunit/phpunit": ">=5.7"
|
638 |
+
},
|
639 |
+
"require-dev": {
|
640 |
+
"phpunit/phpunit": "^5.7"
|
641 |
+
},
|
642 |
+
"time": "2020-12-02T13:38:06+00:00",
|
643 |
+
"type": "library",
|
644 |
+
"installation-source": "source",
|
645 |
+
"autoload": {
|
646 |
+
"psr-0": {
|
647 |
+
"tad\\FunctionMocker": "src"
|
648 |
+
},
|
649 |
+
"files": [
|
650 |
+
"src/shims.php",
|
651 |
+
"src/functions.php"
|
652 |
+
]
|
653 |
+
},
|
654 |
+
"license": [
|
655 |
+
"GPL-2.0+"
|
656 |
+
],
|
657 |
+
"authors": [
|
658 |
+
{
|
659 |
+
"name": "theAverageDev",
|
660 |
+
"email": "luca@theaveragedev.com"
|
661 |
+
}
|
662 |
+
],
|
663 |
+
"description": "Function mocking with Patchwork",
|
664 |
+
"install-path": "../lucatume/function-mocker"
|
665 |
+
},
|
666 |
+
{
|
667 |
+
"name": "mockery/mockery",
|
668 |
+
"version": "1.3.3",
|
669 |
+
"version_normalized": "1.3.3.0",
|
670 |
+
"source": {
|
671 |
+
"type": "git",
|
672 |
+
"url": "https://github.com/mockery/mockery.git",
|
673 |
+
"reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d"
|
674 |
+
},
|
675 |
+
"dist": {
|
676 |
+
"type": "zip",
|
677 |
+
"url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d",
|
678 |
+
"reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d",
|
679 |
+
"shasum": ""
|
680 |
+
},
|
681 |
+
"require": {
|
682 |
+
"hamcrest/hamcrest-php": "^2.0.1",
|
683 |
+
"lib-pcre": ">=7.0",
|
684 |
+
"php": ">=5.6.0"
|
685 |
+
},
|
686 |
+
"require-dev": {
|
687 |
+
"phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3"
|
688 |
+
},
|
689 |
+
"time": "2020-08-11T18:10:21+00:00",
|
690 |
+
"type": "library",
|
691 |
+
"extra": {
|
692 |
+
"branch-alias": {
|
693 |
+
"dev-master": "1.3.x-dev"
|
694 |
+
}
|
695 |
+
},
|
696 |
+
"installation-source": "dist",
|
697 |
+
"autoload": {
|
698 |
+
"psr-0": {
|
699 |
+
"Mockery": "library/"
|
700 |
+
}
|
701 |
+
},
|
702 |
+
"notification-url": "https://packagist.org/downloads/",
|
703 |
+
"license": [
|
704 |
+
"BSD-3-Clause"
|
705 |
+
],
|
706 |
+
"authors": [
|
707 |
+
{
|
708 |
+
"name": "Pádraic Brady",
|
709 |
+
"email": "padraic.brady@gmail.com",
|
710 |
+
"homepage": "http://blog.astrumfutura.com"
|
711 |
+
},
|
712 |
+
{
|
713 |
+
"name": "Dave Marshall",
|
714 |
+
"email": "dave.marshall@atstsolutions.co.uk",
|
715 |
+
"homepage": "http://davedevelopment.co.uk"
|
716 |
+
}
|
717 |
+
],
|
718 |
+
"description": "Mockery is a simple yet flexible PHP mock object framework",
|
719 |
+
"homepage": "https://github.com/mockery/mockery",
|
720 |
+
"keywords": [
|
721 |
+
"BDD",
|
722 |
+
"TDD",
|
723 |
+
"library",
|
724 |
+
"mock",
|
725 |
+
"mock objects",
|
726 |
+
"mockery",
|
727 |
+
"stub",
|
728 |
+
"test",
|
729 |
+
"test double",
|
730 |
+
"testing"
|
731 |
+
],
|
732 |
+
"support": {
|
733 |
+
"issues": "https://github.com/mockery/mockery/issues",
|
734 |
+
"source": "https://github.com/mockery/mockery/tree/1.3.3"
|
735 |
+
},
|
736 |
+
"install-path": "../mockery/mockery"
|
737 |
+
},
|
738 |
+
{
|
739 |
+
"name": "myclabs/deep-copy",
|
740 |
+
"version": "1.7.0",
|
741 |
+
"version_normalized": "1.7.0.0",
|
742 |
+
"source": {
|
743 |
+
"type": "git",
|
744 |
+
"url": "https://github.com/myclabs/DeepCopy.git",
|
745 |
+
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
|
746 |
+
},
|
747 |
+
"dist": {
|
748 |
+
"type": "zip",
|
749 |
+
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
|
750 |
+
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
|
751 |
+
"shasum": ""
|
752 |
+
},
|
753 |
+
"require": {
|
754 |
+
"php": "^5.6 || ^7.0"
|
755 |
+
},
|
756 |
+
"require-dev": {
|
757 |
+
"doctrine/collections": "^1.0",
|
758 |
+
"doctrine/common": "^2.6",
|
759 |
+
"phpunit/phpunit": "^4.1"
|
760 |
+
},
|
761 |
+
"time": "2017-10-19T19:58:43+00:00",
|
762 |
+
"type": "library",
|
763 |
+
"installation-source": "dist",
|
764 |
+
"autoload": {
|
765 |
+
"psr-4": {
|
766 |
+
"DeepCopy\\": "src/DeepCopy/"
|
767 |
+
},
|
768 |
+
"files": [
|
769 |
+
"src/DeepCopy/deep_copy.php"
|
770 |
+
]
|
771 |
+
},
|
772 |
+
"notification-url": "https://packagist.org/downloads/",
|
773 |
+
"license": [
|
774 |
+
"MIT"
|
775 |
+
],
|
776 |
+
"description": "Create deep copies (clones) of your objects",
|
777 |
+
"keywords": [
|
778 |
+
"clone",
|
779 |
+
"copy",
|
780 |
+
"duplicate",
|
781 |
+
"object",
|
782 |
+
"object graph"
|
783 |
+
],
|
784 |
+
"support": {
|
785 |
+
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
786 |
+
"source": "https://github.com/myclabs/DeepCopy/tree/1.x"
|
787 |
+
},
|
788 |
+
"install-path": "../myclabs/deep-copy"
|
789 |
+
},
|
790 |
+
{
|
791 |
+
"name": "paragonie/random_compat",
|
792 |
+
"version": "v9.99.100",
|
793 |
+
"version_normalized": "9.99.100.0",
|
794 |
+
"source": {
|
795 |
+
"type": "git",
|
796 |
+
"url": "https://github.com/paragonie/random_compat.git",
|
797 |
+
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
|
798 |
+
},
|
799 |
+
"dist": {
|
800 |
+
"type": "zip",
|
801 |
+
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
|
802 |
+
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
|
803 |
+
"shasum": ""
|
804 |
+
},
|
805 |
+
"require": {
|
806 |
+
"php": ">= 7"
|
807 |
+
},
|
808 |
+
"require-dev": {
|
809 |
+
"phpunit/phpunit": "4.*|5.*",
|
810 |
+
"vimeo/psalm": "^1"
|
811 |
+
},
|
812 |
+
"suggest": {
|
813 |
+
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
|
814 |
+
},
|
815 |
+
"time": "2020-10-15T08:29:30+00:00",
|
816 |
+
"type": "library",
|
817 |
+
"installation-source": "dist",
|
818 |
+
"notification-url": "https://packagist.org/downloads/",
|
819 |
+
"license": [
|
820 |
+
"MIT"
|
821 |
+
],
|
822 |
+
"authors": [
|
823 |
+
{
|
824 |
+
"name": "Paragon Initiative Enterprises",
|
825 |
+
"email": "security@paragonie.com",
|
826 |
+
"homepage": "https://paragonie.com"
|
827 |
+
}
|
828 |
+
],
|
829 |
+
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
|
830 |
+
"keywords": [
|
831 |
+
"csprng",
|
832 |
+
"polyfill",
|
833 |
+
"pseudorandom",
|
834 |
+
"random"
|
835 |
+
],
|
836 |
+
"support": {
|
837 |
+
"email": "info@paragonie.com",
|
838 |
+
"issues": "https://github.com/paragonie/random_compat/issues",
|
839 |
+
"source": "https://github.com/paragonie/random_compat"
|
840 |
+
},
|
841 |
+
"install-path": "../paragonie/random_compat"
|
842 |
+
},
|
843 |
+
{
|
844 |
+
"name": "phar-io/manifest",
|
845 |
+
"version": "1.0.1",
|
846 |
+
"version_normalized": "1.0.1.0",
|
847 |
+
"source": {
|
848 |
+
"type": "git",
|
849 |
+
"url": "https://github.com/phar-io/manifest.git",
|
850 |
+
"reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
|
851 |
+
},
|
852 |
+
"dist": {
|
853 |
+
"type": "zip",
|
854 |
+
"url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
|
855 |
+
"reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
|
856 |
+
"shasum": ""
|
857 |
+
},
|
858 |
+
"require": {
|
859 |
+
"ext-dom": "*",
|
860 |
+
"ext-phar": "*",
|
861 |
+
"phar-io/version": "^1.0.1",
|
862 |
+
"php": "^5.6 || ^7.0"
|
863 |
+
},
|
864 |
+
"time": "2017-03-05T18:14:27+00:00",
|
865 |
+
"type": "library",
|
866 |
+
"extra": {
|
867 |
+
"branch-alias": {
|
868 |
+
"dev-master": "1.0.x-dev"
|
869 |
+
}
|
870 |
+
},
|
871 |
+
"installation-source": "dist",
|
872 |
+
"autoload": {
|
873 |
+
"classmap": [
|
874 |
+
"src/"
|
875 |
+
]
|
876 |
+
},
|
877 |
+
"notification-url": "https://packagist.org/downloads/",
|
878 |
+
"license": [
|
879 |
+
"BSD-3-Clause"
|
880 |
+
],
|
881 |
+
"authors": [
|
882 |
+
{
|
883 |
+
"name": "Arne Blankerts",
|
884 |
+
"email": "arne@blankerts.de",
|
885 |
+
"role": "Developer"
|
886 |
+
},
|
887 |
+
{
|
888 |
+
"name": "Sebastian Heuer",
|
889 |
+
"email": "sebastian@phpeople.de",
|
890 |
+
"role": "Developer"
|
891 |
+
},
|
892 |
+
{
|
893 |
+
"name": "Sebastian Bergmann",
|
894 |
+
"email": "sebastian@phpunit.de",
|
895 |
+
"role": "Developer"
|
896 |
+
}
|
897 |
+
],
|
898 |
+
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
|
899 |
+
"support": {
|
900 |
+
"issues": "https://github.com/phar-io/manifest/issues",
|
901 |
+
"source": "https://github.com/phar-io/manifest/tree/master"
|
902 |
+
},
|
903 |
+
"install-path": "../phar-io/manifest"
|
904 |
+
},
|
905 |
+
{
|
906 |
+
"name": "phar-io/version",
|
907 |
+
"version": "1.0.1",
|
908 |
+
"version_normalized": "1.0.1.0",
|
909 |
+
"source": {
|
910 |
+
"type": "git",
|
911 |
+
"url": "https://github.com/phar-io/version.git",
|
912 |
+
"reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
|
913 |
+
},
|
914 |
+
"dist": {
|
915 |
+
"type": "zip",
|
916 |
+
"url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
|
917 |
+
"reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
|
918 |
+
"shasum": ""
|
919 |
+
},
|
920 |
+
"require": {
|
921 |
+
"php": "^5.6 || ^7.0"
|
922 |
+
},
|
923 |
+
"time": "2017-03-05T17:38:23+00:00",
|
924 |
+
"type": "library",
|
925 |
+
"installation-source": "dist",
|
926 |
+
"autoload": {
|
927 |
+
"classmap": [
|
928 |
+
"src/"
|
929 |
+
]
|
930 |
+
},
|
931 |
+
"notification-url": "https://packagist.org/downloads/",
|
932 |
+
"license": [
|
933 |
+
"BSD-3-Clause"
|
934 |
+
],
|
935 |
+
"authors": [
|
936 |
+
{
|
937 |
+
"name": "Arne Blankerts",
|
938 |
+
"email": "arne@blankerts.de",
|
939 |
+
"role": "Developer"
|
940 |
+
},
|
941 |
+
{
|
942 |
+
"name": "Sebastian Heuer",
|
943 |
+
"email": "sebastian@phpeople.de",
|
944 |
+
"role": "Developer"
|
945 |
+
},
|
946 |
+
{
|
947 |
+
"name": "Sebastian Bergmann",
|
948 |
+
"email": "sebastian@phpunit.de",
|
949 |
+
"role": "Developer"
|
950 |
+
}
|
951 |
+
],
|
952 |
+
"description": "Library for handling version information and constraints",
|
953 |
+
"support": {
|
954 |
+
"issues": "https://github.com/phar-io/version/issues",
|
955 |
+
"source": "https://github.com/phar-io/version/tree/master"
|
956 |
+
},
|
957 |
+
"install-path": "../phar-io/version"
|
958 |
+
},
|
959 |
+
{
|
960 |
+
"name": "php-coveralls/php-coveralls",
|
961 |
+
"version": "v2.4.2",
|
962 |
+
"version_normalized": "2.4.2.0",
|
963 |
+
"source": {
|
964 |
+
"type": "git",
|
965 |
+
"url": "https://github.com/php-coveralls/php-coveralls.git",
|
966 |
+
"reference": "8a33ae229da63a0bd22dadae1512af663ce5e559"
|
967 |
+
},
|
968 |
+
"dist": {
|
969 |
+
"type": "zip",
|
970 |
+
"url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/8a33ae229da63a0bd22dadae1512af663ce5e559",
|
971 |
+
"reference": "8a33ae229da63a0bd22dadae1512af663ce5e559",
|
972 |
+
"shasum": ""
|
973 |
+
},
|
974 |
+
"require": {
|
975 |
+
"ext-json": "*",
|
976 |
+
"ext-simplexml": "*",
|
977 |
+
"guzzlehttp/guzzle": "^6.0 || ^7.0",
|
978 |
+
"php": "^5.5 || ^7.0 || ^8.0",
|
979 |
+
"psr/log": "^1.0",
|
980 |
+
"symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0",
|
981 |
+
"symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0",
|
982 |
+
"symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0",
|
983 |
+
"symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0"
|
984 |
+
},
|
985 |
+
"require-dev": {
|
986 |
+
"phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0 || ^7.0 || ^8.0 || ^9.0",
|
987 |
+
"sanmai/phpunit-legacy-adapter": "^6.1 || ^8.0"
|
988 |
+
},
|
989 |
+
"suggest": {
|
990 |
+
"symfony/http-kernel": "Allows Symfony integration"
|
991 |
+
},
|
992 |
+
"time": "2020-10-23T16:34:35+00:00",
|
993 |
+
"bin": [
|
994 |
+
"bin/php-coveralls"
|
995 |
+
],
|
996 |
+
"type": "library",
|
997 |
+
"installation-source": "dist",
|
998 |
+
"autoload": {
|
999 |
+
"psr-4": {
|
1000 |
+
"PhpCoveralls\\": "src/"
|
1001 |
+
}
|
1002 |
+
},
|
1003 |
+
"notification-url": "https://packagist.org/downloads/",
|
1004 |
+
"license": [
|
1005 |
+
"MIT"
|
1006 |
+
],
|
1007 |
+
"authors": [
|
1008 |
+
{
|
1009 |
+
"name": "Kitamura Satoshi",
|
1010 |
+
"email": "with.no.parachute@gmail.com",
|
1011 |
+
"homepage": "https://www.facebook.com/satooshi.jp",
|
1012 |
+
"role": "Original creator"
|
1013 |
+
},
|
1014 |
+
{
|
1015 |
+
"name": "Takashi Matsuo",
|
1016 |
+
"email": "tmatsuo@google.com"
|
1017 |
+
},
|
1018 |
+
{
|
1019 |
+
"name": "Google Inc"
|
1020 |
+
},
|
1021 |
+
{
|
1022 |
+
"name": "Dariusz Ruminski",
|
1023 |
+
"email": "dariusz.ruminski@gmail.com",
|
1024 |
+
"homepage": "https://github.com/keradus"
|
1025 |
+
},
|
1026 |
+
{
|
1027 |
+
"name": "Contributors",
|
1028 |
+
"homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
|
1029 |
+
}
|
1030 |
+
],
|
1031 |
+
"description": "PHP client library for Coveralls API",
|
1032 |
+
"homepage": "https://github.com/php-coveralls/php-coveralls",
|
1033 |
+
"keywords": [
|
1034 |
+
"ci",
|
1035 |
+
"coverage",
|
1036 |
+
"github",
|
1037 |
+
"test"
|
1038 |
+
],
|
1039 |
+
"support": {
|
1040 |
+
"issues": "https://github.com/php-coveralls/php-coveralls/issues",
|
1041 |
+
"source": "https://github.com/php-coveralls/php-coveralls/tree/v2.4.2"
|
1042 |
+
},
|
1043 |
+
"install-path": "../php-coveralls/php-coveralls"
|
1044 |
+
},
|
1045 |
+
{
|
1046 |
+
"name": "phpcompatibility/php-compatibility",
|
1047 |
+
"version": "9.3.5",
|
1048 |
+
"version_normalized": "9.3.5.0",
|
1049 |
+
"source": {
|
1050 |
+
"type": "git",
|
1051 |
+
"url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
|
1052 |
+
"reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
|
1053 |
+
},
|
1054 |
+
"dist": {
|
1055 |
+
"type": "zip",
|
1056 |
+
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
|
1057 |
+
"reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
|
1058 |
+
"shasum": ""
|
1059 |
+
},
|
1060 |
+
"require": {
|
1061 |
+
"php": ">=5.3",
|
1062 |
+
"squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
|
1063 |
+
},
|
1064 |
+
"conflict": {
|
1065 |
+
"squizlabs/php_codesniffer": "2.6.2"
|
1066 |
+
},
|
1067 |
+
"require-dev": {
|
1068 |
+
"phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
|
1069 |
+
},
|
1070 |
+
"suggest": {
|
1071 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
|
1072 |
+
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
|
1073 |
+
},
|
1074 |
+
"time": "2019-12-27T09:44:58+00:00",
|
1075 |
+
"type": "phpcodesniffer-standard",
|
1076 |
+
"installation-source": "dist",
|
1077 |
+
"notification-url": "https://packagist.org/downloads/",
|
1078 |
+
"license": [
|
1079 |
+
"LGPL-3.0-or-later"
|
1080 |
+
],
|
1081 |
+
"authors": [
|
1082 |
+
{
|
1083 |
+
"name": "Wim Godden",
|
1084 |
+
"homepage": "https://github.com/wimg",
|
1085 |
+
"role": "lead"
|
1086 |
+
},
|
1087 |
+
{
|
1088 |
+
"name": "Juliette Reinders Folmer",
|
1089 |
+
"homepage": "https://github.com/jrfnl",
|
1090 |
+
"role": "lead"
|
1091 |
+
},
|
1092 |
+
{
|
1093 |
+
"name": "Contributors",
|
1094 |
+
"homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
|
1095 |
+
}
|
1096 |
+
],
|
1097 |
+
"description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
|
1098 |
+
"homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
|
1099 |
+
"keywords": [
|
1100 |
+
"compatibility",
|
1101 |
+
"phpcs",
|
1102 |
+
"standards"
|
1103 |
+
],
|
1104 |
+
"support": {
|
1105 |
+
"issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
|
1106 |
+
"source": "https://github.com/PHPCompatibility/PHPCompatibility"
|
1107 |
+
},
|
1108 |
+
"install-path": "../phpcompatibility/php-compatibility"
|
1109 |
+
},
|
1110 |
+
{
|
1111 |
+
"name": "phpcompatibility/phpcompatibility-paragonie",
|
1112 |
+
"version": "1.3.0",
|
1113 |
+
"version_normalized": "1.3.0.0",
|
1114 |
+
"source": {
|
1115 |
+
"type": "git",
|
1116 |
+
"url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
|
1117 |
+
"reference": "b862bc32f7e860d0b164b199bd995e690b4b191c"
|
1118 |
+
},
|
1119 |
+
"dist": {
|
1120 |
+
"type": "zip",
|
1121 |
+
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/b862bc32f7e860d0b164b199bd995e690b4b191c",
|
1122 |
+
"reference": "b862bc32f7e860d0b164b199bd995e690b4b191c",
|
1123 |
+
"shasum": ""
|
1124 |
+
},
|
1125 |
+
"require": {
|
1126 |
+
"phpcompatibility/php-compatibility": "^9.0"
|
1127 |
+
},
|
1128 |
+
"require-dev": {
|
1129 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5",
|
1130 |
+
"paragonie/random_compat": "dev-master",
|
1131 |
+
"paragonie/sodium_compat": "dev-master"
|
1132 |
+
},
|
1133 |
+
"suggest": {
|
1134 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
|
1135 |
+
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
|
1136 |
+
},
|
1137 |
+
"time": "2019-11-04T15:17:54+00:00",
|
1138 |
+
"type": "phpcodesniffer-standard",
|
1139 |
+
"installation-source": "dist",
|
1140 |
+
"notification-url": "https://packagist.org/downloads/",
|
1141 |
+
"license": [
|
1142 |
+
"LGPL-3.0-or-later"
|
1143 |
+
],
|
1144 |
+
"authors": [
|
1145 |
+
{
|
1146 |
+
"name": "Wim Godden",
|
1147 |
+
"role": "lead"
|
1148 |
+
},
|
1149 |
+
{
|
1150 |
+
"name": "Juliette Reinders Folmer",
|
1151 |
+
"role": "lead"
|
1152 |
+
}
|
1153 |
+
],
|
1154 |
+
"description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
|
1155 |
+
"homepage": "http://phpcompatibility.com/",
|
1156 |
+
"keywords": [
|
1157 |
+
"compatibility",
|
1158 |
+
"paragonie",
|
1159 |
+
"phpcs",
|
1160 |
+
"polyfill",
|
1161 |
+
"standards"
|
1162 |
+
],
|
1163 |
+
"support": {
|
1164 |
+
"issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues",
|
1165 |
+
"source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie"
|
1166 |
+
},
|
1167 |
+
"install-path": "../phpcompatibility/phpcompatibility-paragonie"
|
1168 |
+
},
|
1169 |
+
{
|
1170 |
+
"name": "phpcompatibility/phpcompatibility-wp",
|
1171 |
+
"version": "2.1.0",
|
1172 |
+
"version_normalized": "2.1.0.0",
|
1173 |
+
"source": {
|
1174 |
+
"type": "git",
|
1175 |
+
"url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
|
1176 |
+
"reference": "41bef18ba688af638b7310666db28e1ea9158b2f"
|
1177 |
+
},
|
1178 |
+
"dist": {
|
1179 |
+
"type": "zip",
|
1180 |
+
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/41bef18ba688af638b7310666db28e1ea9158b2f",
|
1181 |
+
"reference": "41bef18ba688af638b7310666db28e1ea9158b2f",
|
1182 |
+
"shasum": ""
|
1183 |
+
},
|
1184 |
+
"require": {
|
1185 |
+
"phpcompatibility/php-compatibility": "^9.0",
|
1186 |
+
"phpcompatibility/phpcompatibility-paragonie": "^1.0"
|
1187 |
+
},
|
1188 |
+
"require-dev": {
|
1189 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5"
|
1190 |
+
},
|
1191 |
+
"suggest": {
|
1192 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
|
1193 |
+
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
|
1194 |
+
},
|
1195 |
+
"time": "2019-08-28T14:22:28+00:00",
|
1196 |
+
"type": "phpcodesniffer-standard",
|
1197 |
+
"installation-source": "dist",
|
1198 |
+
"license": [
|
1199 |
+
"LGPL-3.0-or-later"
|
1200 |
+
],
|
1201 |
+
"authors": [
|
1202 |
+
{
|
1203 |
+
"name": "Wim Godden",
|
1204 |
+
"role": "lead"
|
1205 |
+
},
|
1206 |
+
{
|
1207 |
+
"name": "Juliette Reinders Folmer",
|
1208 |
+
"role": "lead"
|
1209 |
+
}
|
1210 |
+
],
|
1211 |
+
"description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
|
1212 |
+
"homepage": "http://phpcompatibility.com/",
|
1213 |
+
"keywords": [
|
1214 |
+
"compatibility",
|
1215 |
+
"phpcs",
|
1216 |
+
"standards",
|
1217 |
+
"wordpress"
|
1218 |
+
],
|
1219 |
+
"support": {
|
1220 |
+
"issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues",
|
1221 |
+
"source": "https://github.com/PHPCompatibility/PHPCompatibilityWP"
|
1222 |
+
},
|
1223 |
+
"install-path": "../phpcompatibility/phpcompatibility-wp"
|
1224 |
+
},
|
1225 |
+
{
|
1226 |
+
"name": "phpdocumentor/reflection-common",
|
1227 |
+
"version": "1.0.1",
|
1228 |
+
"version_normalized": "1.0.1.0",
|
1229 |
+
"source": {
|
1230 |
+
"type": "git",
|
1231 |
+
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
1232 |
+
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
|
1233 |
+
},
|
1234 |
+
"dist": {
|
1235 |
+
"type": "zip",
|
1236 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
|
1237 |
+
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
|
1238 |
+
"shasum": ""
|
1239 |
+
},
|
1240 |
+
"require": {
|
1241 |
+
"php": ">=5.5"
|
1242 |
+
},
|
1243 |
+
"require-dev": {
|
1244 |
+
"phpunit/phpunit": "^4.6"
|
1245 |
+
},
|
1246 |
+
"time": "2017-09-11T18:02:19+00:00",
|
1247 |
+
"type": "library",
|
1248 |
+
"extra": {
|
1249 |
+
"branch-alias": {
|
1250 |
+
"dev-master": "1.0.x-dev"
|
1251 |
+
}
|
1252 |
+
},
|
1253 |
+
"installation-source": "dist",
|
1254 |
+
"autoload": {
|
1255 |
+
"psr-4": {
|
1256 |
+
"phpDocumentor\\Reflection\\": [
|
1257 |
+
"src"
|
1258 |
+
]
|
1259 |
+
}
|
1260 |
+
},
|
1261 |
+
"notification-url": "https://packagist.org/downloads/",
|
1262 |
+
"license": [
|
1263 |
+
"MIT"
|
1264 |
+
],
|
1265 |
+
"authors": [
|
1266 |
+
{
|
1267 |
+
"name": "Jaap van Otterdijk",
|
1268 |
+
"email": "opensource@ijaap.nl"
|
1269 |
+
}
|
1270 |
+
],
|
1271 |
+
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
1272 |
+
"homepage": "http://www.phpdoc.org",
|
1273 |
+
"keywords": [
|
1274 |
+
"FQSEN",
|
1275 |
+
"phpDocumentor",
|
1276 |
+
"phpdoc",
|
1277 |
+
"reflection",
|
1278 |
+
"static analysis"
|
1279 |
+
],
|
1280 |
+
"support": {
|
1281 |
+
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
1282 |
+
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
|
1283 |
+
},
|
1284 |
+
"install-path": "../phpdocumentor/reflection-common"
|
1285 |
+
},
|
1286 |
+
{
|
1287 |
+
"name": "phpdocumentor/reflection-docblock",
|
1288 |
+
"version": "4.3.4",
|
1289 |
+
"version_normalized": "4.3.4.0",
|
1290 |
+
"source": {
|
1291 |
+
"type": "git",
|
1292 |
+
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
1293 |
+
"reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
|
1294 |
+
},
|
1295 |
+
"dist": {
|
1296 |
+
"type": "zip",
|
1297 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
|
1298 |
+
"reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
|
1299 |
+
"shasum": ""
|
1300 |
+
},
|
1301 |
+
"require": {
|
1302 |
+
"php": "^7.0",
|
1303 |
+
"phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
|
1304 |
+
"phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
|
1305 |
+
"webmozart/assert": "^1.0"
|
1306 |
+
},
|
1307 |
+
"require-dev": {
|
1308 |
+
"doctrine/instantiator": "^1.0.5",
|
1309 |
+
"mockery/mockery": "^1.0",
|
1310 |
+
"phpdocumentor/type-resolver": "0.4.*",
|
1311 |
+
"phpunit/phpunit": "^6.4"
|
1312 |
+
},
|
1313 |
+
"time": "2019-12-28T18:55:12+00:00",
|
1314 |
+
"type": "library",
|
1315 |
+
"extra": {
|
1316 |
+
"branch-alias": {
|
1317 |
+
"dev-master": "4.x-dev"
|
1318 |
+
}
|
1319 |
+
},
|
1320 |
+
"installation-source": "dist",
|
1321 |
+
"autoload": {
|
1322 |
+
"psr-4": {
|
1323 |
+
"phpDocumentor\\Reflection\\": [
|
1324 |
+
"src/"
|
1325 |
+
]
|
1326 |
+
}
|
1327 |
+
},
|
1328 |
+
"notification-url": "https://packagist.org/downloads/",
|
1329 |
+
"license": [
|
1330 |
+
"MIT"
|
1331 |
+
],
|
1332 |
+
"authors": [
|
1333 |
+
{
|
1334 |
+
"name": "Mike van Riel",
|
1335 |
+
"email": "me@mikevanriel.com"
|
1336 |
+
}
|
1337 |
+
],
|
1338 |
+
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
1339 |
+
"support": {
|
1340 |
+
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
1341 |
+
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
|
1342 |
+
},
|
1343 |
+
"install-path": "../phpdocumentor/reflection-docblock"
|
1344 |
+
},
|
1345 |
+
{
|
1346 |
+
"name": "phpdocumentor/type-resolver",
|
1347 |
+
"version": "0.5.1",
|
1348 |
+
"version_normalized": "0.5.1.0",
|
1349 |
+
"source": {
|
1350 |
+
"type": "git",
|
1351 |
+
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
1352 |
+
"reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
|
1353 |
+
},
|
1354 |
+
"dist": {
|
1355 |
+
"type": "zip",
|
1356 |
+
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
|
1357 |
+
"reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
|
1358 |
+
"shasum": ""
|
1359 |
+
},
|
1360 |
+
"require": {
|
1361 |
+
"php": "^7.0",
|
1362 |
+
"phpdocumentor/reflection-common": "^1.0"
|
1363 |
+
},
|
1364 |
+
"require-dev": {
|
1365 |
+
"mockery/mockery": "^1.0",
|
1366 |
+
"phpunit/phpunit": "^6.4"
|
1367 |
+
},
|
1368 |
+
"time": "2017-12-30T13:23:38+00:00",
|
1369 |
+
"type": "library",
|
1370 |
+
"extra": {
|
1371 |
+
"branch-alias": {
|
1372 |
+
"dev-master": "1.0.x-dev"
|
1373 |
+
}
|
1374 |
+
},
|
1375 |
+
"installation-source": "dist",
|
1376 |
+
"autoload": {
|
1377 |
+
"psr-4": {
|
1378 |
+
"phpDocumentor\\Reflection\\": "src"
|
1379 |
+
}
|
1380 |
+
},
|
1381 |
+
"notification-url": "https://packagist.org/downloads/",
|
1382 |
+
"license": [
|
1383 |
+
"MIT"
|
1384 |
+
],
|
1385 |
+
"authors": [
|
1386 |
+
{
|
1387 |
+
"name": "Mike van Riel",
|
1388 |
+
"email": "me@mikevanriel.com"
|
1389 |
+
}
|
1390 |
+
],
|
1391 |
+
"support": {
|
1392 |
+
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
1393 |
+
"source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
|
1394 |
+
},
|
1395 |
+
"install-path": "../phpdocumentor/type-resolver"
|
1396 |
+
},
|
1397 |
+
{
|
1398 |
+
"name": "phpspec/prophecy",
|
1399 |
+
"version": "v1.10.3",
|
1400 |
+
"version_normalized": "1.10.3.0",
|
1401 |
+
"source": {
|
1402 |
+
"type": "git",
|
1403 |
+
"url": "https://github.com/phpspec/prophecy.git",
|
1404 |
+
"reference": "451c3cd1418cf640de218914901e51b064abb093"
|
1405 |
+
},
|
1406 |
+
"dist": {
|
1407 |
+
"type": "zip",
|
1408 |
+
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
|
1409 |
+
"reference": "451c3cd1418cf640de218914901e51b064abb093",
|
1410 |
+
"shasum": ""
|
1411 |
+
},
|
1412 |
+
"require": {
|
1413 |
+
"doctrine/instantiator": "^1.0.2",
|
1414 |
+
"php": "^5.3|^7.0",
|
1415 |
+
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
|
1416 |
+
"sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
|
1417 |
+
"sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
|
1418 |
+
},
|
1419 |
+
"require-dev": {
|
1420 |
+
"phpspec/phpspec": "^2.5 || ^3.2",
|
1421 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
|
1422 |
+
},
|
1423 |
+
"time": "2020-03-05T15:02:03+00:00",
|
1424 |
+
"type": "library",
|
1425 |
+
"extra": {
|
1426 |
+
"branch-alias": {
|
1427 |
+
"dev-master": "1.10.x-dev"
|
1428 |
+
}
|
1429 |
+
},
|
1430 |
+
"installation-source": "dist",
|
1431 |
+
"autoload": {
|
1432 |
+
"psr-4": {
|
1433 |
+
"Prophecy\\": "src/Prophecy"
|
1434 |
+
}
|
1435 |
+
},
|
1436 |
+
"notification-url": "https://packagist.org/downloads/",
|
1437 |
+
"license": [
|
1438 |
+
"MIT"
|
1439 |
+
],
|
1440 |
+
"authors": [
|
1441 |
+
{
|
1442 |
+
"name": "Konstantin Kudryashov",
|
1443 |
+
"email": "ever.zet@gmail.com",
|
1444 |
+
"homepage": "http://everzet.com"
|
1445 |
+
},
|
1446 |
+
{
|
1447 |
+
"name": "Marcello Duarte",
|
1448 |
+
"email": "marcello.duarte@gmail.com"
|
1449 |
+
}
|
1450 |
+
],
|
1451 |
+
"description": "Highly opinionated mocking framework for PHP 5.3+",
|
1452 |
+
"homepage": "https://github.com/phpspec/prophecy",
|
1453 |
+
"keywords": [
|
1454 |
+
"Double",
|
1455 |
+
"Dummy",
|
1456 |
+
"fake",
|
1457 |
+
"mock",
|
1458 |
+
"spy",
|
1459 |
+
"stub"
|
1460 |
+
],
|
1461 |
+
"support": {
|
1462 |
+
"issues": "https://github.com/phpspec/prophecy/issues",
|
1463 |
+
"source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
|
1464 |
+
},
|
1465 |
+
"install-path": "../phpspec/prophecy"
|
1466 |
+
},
|
1467 |
+
{
|
1468 |
+
"name": "phpunit/php-code-coverage",
|
1469 |
+
"version": "5.3.2",
|
1470 |
+
"version_normalized": "5.3.2.0",
|
1471 |
+
"source": {
|
1472 |
+
"type": "git",
|
1473 |
+
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
1474 |
+
"reference": "c89677919c5dd6d3b3852f230a663118762218ac"
|
1475 |
+
},
|
1476 |
+
"dist": {
|
1477 |
+
"type": "zip",
|
1478 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
|
1479 |
+
"reference": "c89677919c5dd6d3b3852f230a663118762218ac",
|
1480 |
+
"shasum": ""
|
1481 |
+
},
|
1482 |
+
"require": {
|
1483 |
+
"ext-dom": "*",
|
1484 |
+
"ext-xmlwriter": "*",
|
1485 |
+
"php": "^7.0",
|
1486 |
+
"phpunit/php-file-iterator": "^1.4.2",
|
1487 |
+
"phpunit/php-text-template": "^1.2.1",
|
1488 |
+
"phpunit/php-token-stream": "^2.0.1",
|
1489 |
+
"sebastian/code-unit-reverse-lookup": "^1.0.1",
|
1490 |
+
"sebastian/environment": "^3.0",
|
1491 |
+
"sebastian/version": "^2.0.1",
|
1492 |
+
"theseer/tokenizer": "^1.1"
|
1493 |
+
},
|
1494 |
+
"require-dev": {
|
1495 |
+
"phpunit/phpunit": "^6.0"
|
1496 |
+
},
|
1497 |
+
"suggest": {
|
1498 |
+
"ext-xdebug": "^2.5.5"
|
1499 |
+
},
|
1500 |
+
"time": "2018-04-06T15:36:58+00:00",
|
1501 |
+
"type": "library",
|
1502 |
+
"extra": {
|
1503 |
+
"branch-alias": {
|
1504 |
+
"dev-master": "5.3.x-dev"
|
1505 |
+
}
|
1506 |
+
},
|
1507 |
+
"installation-source": "dist",
|
1508 |
+
"autoload": {
|
1509 |
+
"classmap": [
|
1510 |
+
"src/"
|
1511 |
+
]
|
1512 |
+
},
|
1513 |
+
"notification-url": "https://packagist.org/downloads/",
|
1514 |
+
"license": [
|
1515 |
+
"BSD-3-Clause"
|
1516 |
+
],
|
1517 |
+
"authors": [
|
1518 |
+
{
|
1519 |
+
"name": "Sebastian Bergmann",
|
1520 |
+
"email": "sebastian@phpunit.de",
|
1521 |
+
"role": "lead"
|
1522 |
+
}
|
1523 |
+
],
|
1524 |
+
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
|
1525 |
+
"homepage": "https://github.com/sebastianbergmann/php-code-coverage",
|
1526 |
+
"keywords": [
|
1527 |
+
"coverage",
|
1528 |
+
"testing",
|
1529 |
+
"xunit"
|
1530 |
+
],
|
1531 |
+
"support": {
|
1532 |
+
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
1533 |
+
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3"
|
1534 |
+
},
|
1535 |
+
"install-path": "../phpunit/php-code-coverage"
|
1536 |
+
},
|
1537 |
+
{
|
1538 |
+
"name": "phpunit/php-file-iterator",
|
1539 |
+
"version": "1.4.5",
|
1540 |
+
"version_normalized": "1.4.5.0",
|
1541 |
+
"source": {
|
1542 |
+
"type": "git",
|
1543 |
+
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
1544 |
+
"reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
|
1545 |
+
},
|
1546 |
+
"dist": {
|
1547 |
+
"type": "zip",
|
1548 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
|
1549 |
+
"reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
|
1550 |
+
"shasum": ""
|
1551 |
+
},
|
1552 |
+
"require": {
|
1553 |
+
"php": ">=5.3.3"
|
1554 |
+
},
|
1555 |
+
"time": "2017-11-27T13:52:08+00:00",
|
1556 |
+
"type": "library",
|
1557 |
+
"extra": {
|
1558 |
+
"branch-alias": {
|
1559 |
+
"dev-master": "1.4.x-dev"
|
1560 |
+
}
|
1561 |
+
},
|
1562 |
+
"installation-source": "dist",
|
1563 |
+
"autoload": {
|
1564 |
+
"classmap": [
|
1565 |
+
"src/"
|
1566 |
+
]
|
1567 |
+
},
|
1568 |
+
"notification-url": "https://packagist.org/downloads/",
|
1569 |
+
"license": [
|
1570 |
+
"BSD-3-Clause"
|
1571 |
+
],
|
1572 |
+
"authors": [
|
1573 |
+
{
|
1574 |
+
"name": "Sebastian Bergmann",
|
1575 |
+
"email": "sb@sebastian-bergmann.de",
|
1576 |
+
"role": "lead"
|
1577 |
+
}
|
1578 |
+
],
|
1579 |
+
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
|
1580 |
+
"homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
|
1581 |
+
"keywords": [
|
1582 |
+
"filesystem",
|
1583 |
+
"iterator"
|
1584 |
+
],
|
1585 |
+
"support": {
|
1586 |
+
"irc": "irc://irc.freenode.net/phpunit",
|
1587 |
+
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
1588 |
+
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
|
1589 |
+
},
|
1590 |
+
"install-path": "../phpunit/php-file-iterator"
|
1591 |
+
},
|
1592 |
+
{
|
1593 |
+
"name": "phpunit/php-text-template",
|
1594 |
+
"version": "1.2.1",
|
1595 |
+
"version_normalized": "1.2.1.0",
|
1596 |
+
"source": {
|
1597 |
+
"type": "git",
|
1598 |
+
"url": "https://github.com/sebastianbergmann/php-text-template.git",
|
1599 |
+
"reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
|
1600 |
+
},
|
1601 |
+
"dist": {
|
1602 |
+
"type": "zip",
|
1603 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
|
1604 |
+
"reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
|
1605 |
+
"shasum": ""
|
1606 |
+
},
|
1607 |
+
"require": {
|
1608 |
+
"php": ">=5.3.3"
|
1609 |
+
},
|
1610 |
+
"time": "2015-06-21T13:50:34+00:00",
|
1611 |
+
"type": "library",
|
1612 |
+
"installation-source": "dist",
|
1613 |
+
"autoload": {
|
1614 |
+
"classmap": [
|
1615 |
+
"src/"
|
1616 |
+
]
|
1617 |
+
},
|
1618 |
+
"notification-url": "https://packagist.org/downloads/",
|
1619 |
+
"license": [
|
1620 |
+
"BSD-3-Clause"
|
1621 |
+
],
|
1622 |
+
"authors": [
|
1623 |
+
{
|
1624 |
+
"name": "Sebastian Bergmann",
|
1625 |
+
"email": "sebastian@phpunit.de",
|
1626 |
+
"role": "lead"
|
1627 |
+
}
|
1628 |
+
],
|
1629 |
+
"description": "Simple template engine.",
|
1630 |
+
"homepage": "https://github.com/sebastianbergmann/php-text-template/",
|
1631 |
+
"keywords": [
|
1632 |
+
"template"
|
1633 |
+
],
|
1634 |
+
"support": {
|
1635 |
+
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
|
1636 |
+
"source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
|
1637 |
+
},
|
1638 |
+
"install-path": "../phpunit/php-text-template"
|
1639 |
+
},
|
1640 |
+
{
|
1641 |
+
"name": "phpunit/php-timer",
|
1642 |
+
"version": "1.0.9",
|
1643 |
+
"version_normalized": "1.0.9.0",
|
1644 |
+
"source": {
|
1645 |
+
"type": "git",
|
1646 |
+
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
1647 |
+
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
|
1648 |
+
},
|
1649 |
+
"dist": {
|
1650 |
+
"type": "zip",
|
1651 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
|
1652 |
+
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
|
1653 |
+
"shasum": ""
|
1654 |
+
},
|
1655 |
+
"require": {
|
1656 |
+
"php": "^5.3.3 || ^7.0"
|
1657 |
+
},
|
1658 |
+
"require-dev": {
|
1659 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
|
1660 |
+
},
|
1661 |
+
"time": "2017-02-26T11:10:40+00:00",
|
1662 |
+
"type": "library",
|
1663 |
+
"extra": {
|
1664 |
+
"branch-alias": {
|
1665 |
+
"dev-master": "1.0-dev"
|
1666 |
+
}
|
1667 |
+
},
|
1668 |
+
"installation-source": "dist",
|
1669 |
+
"autoload": {
|
1670 |
+
"classmap": [
|
1671 |
+
"src/"
|
1672 |
+
]
|
1673 |
+
},
|
1674 |
+
"notification-url": "https://packagist.org/downloads/",
|
1675 |
+
"license": [
|
1676 |
+
"BSD-3-Clause"
|
1677 |
+
],
|
1678 |
+
"authors": [
|
1679 |
+
{
|
1680 |
+
"name": "Sebastian Bergmann",
|
1681 |
+
"email": "sb@sebastian-bergmann.de",
|
1682 |
+
"role": "lead"
|
1683 |
+
}
|
1684 |
+
],
|
1685 |
+
"description": "Utility class for timing",
|
1686 |
+
"homepage": "https://github.com/sebastianbergmann/php-timer/",
|
1687 |
+
"keywords": [
|
1688 |
+
"timer"
|
1689 |
+
],
|
1690 |
+
"support": {
|
1691 |
+
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
|
1692 |
+
"source": "https://github.com/sebastianbergmann/php-timer/tree/master"
|
1693 |
+
},
|
1694 |
+
"install-path": "../phpunit/php-timer"
|
1695 |
+
},
|
1696 |
+
{
|
1697 |
+
"name": "phpunit/php-token-stream",
|
1698 |
+
"version": "2.0.2",
|
1699 |
+
"version_normalized": "2.0.2.0",
|
1700 |
+
"source": {
|
1701 |
+
"type": "git",
|
1702 |
+
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
1703 |
+
"reference": "791198a2c6254db10131eecfe8c06670700904db"
|
1704 |
+
},
|
1705 |
+
"dist": {
|
1706 |
+
"type": "zip",
|
1707 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
|
1708 |
+
"reference": "791198a2c6254db10131eecfe8c06670700904db",
|
1709 |
+
"shasum": ""
|
1710 |
+
},
|
1711 |
+
"require": {
|
1712 |
+
"ext-tokenizer": "*",
|
1713 |
+
"php": "^7.0"
|
1714 |
+
},
|
1715 |
+
"require-dev": {
|
1716 |
+
"phpunit/phpunit": "^6.2.4"
|
1717 |
+
},
|
1718 |
+
"time": "2017-11-27T05:48:46+00:00",
|
1719 |
+
"type": "library",
|
1720 |
+
"extra": {
|
1721 |
+
"branch-alias": {
|
1722 |
+
"dev-master": "2.0-dev"
|
1723 |
+
}
|
1724 |
+
},
|
1725 |
+
"installation-source": "dist",
|
1726 |
+
"autoload": {
|
1727 |
+
"classmap": [
|
1728 |
+
"src/"
|
1729 |
+
]
|
1730 |
+
},
|
1731 |
+
"notification-url": "https://packagist.org/downloads/",
|
1732 |
+
"license": [
|
1733 |
+
"BSD-3-Clause"
|
1734 |
+
],
|
1735 |
+
"authors": [
|
1736 |
+
{
|
1737 |
+
"name": "Sebastian Bergmann",
|
1738 |
+
"email": "sebastian@phpunit.de"
|
1739 |
+
}
|
1740 |
+
],
|
1741 |
+
"description": "Wrapper around PHP's tokenizer extension.",
|
1742 |
+
"homepage": "https://github.com/sebastianbergmann/php-token-stream/",
|
1743 |
+
"keywords": [
|
1744 |
+
"tokenizer"
|
1745 |
+
],
|
1746 |
+
"support": {
|
1747 |
+
"issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
|
1748 |
+
"source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
|
1749 |
+
},
|
1750 |
+
"abandoned": true,
|
1751 |
+
"install-path": "../phpunit/php-token-stream"
|
1752 |
+
},
|
1753 |
+
{
|
1754 |
+
"name": "phpunit/phpunit",
|
1755 |
+
"version": "6.5.14",
|
1756 |
+
"version_normalized": "6.5.14.0",
|
1757 |
+
"source": {
|
1758 |
+
"type": "git",
|
1759 |
+
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
1760 |
+
"reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
|
1761 |
+
},
|
1762 |
+
"dist": {
|
1763 |
+
"type": "zip",
|
1764 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
|
1765 |
+
"reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
|
1766 |
+
"shasum": ""
|
1767 |
+
},
|
1768 |
+
"require": {
|
1769 |
+
"ext-dom": "*",
|
1770 |
+
"ext-json": "*",
|
1771 |
+
"ext-libxml": "*",
|
1772 |
+
"ext-mbstring": "*",
|
1773 |
+
"ext-xml": "*",
|
1774 |
+
"myclabs/deep-copy": "^1.6.1",
|
1775 |
+
"phar-io/manifest": "^1.0.1",
|
1776 |
+
"phar-io/version": "^1.0",
|
1777 |
+
"php": "^7.0",
|
1778 |
+
"phpspec/prophecy": "^1.7",
|
1779 |
+
"phpunit/php-code-coverage": "^5.3",
|
1780 |
+
"phpunit/php-file-iterator": "^1.4.3",
|
1781 |
+
"phpunit/php-text-template": "^1.2.1",
|
1782 |
+
"phpunit/php-timer": "^1.0.9",
|
1783 |
+
"phpunit/phpunit-mock-objects": "^5.0.9",
|
1784 |
+
"sebastian/comparator": "^2.1",
|
1785 |
+
"sebastian/diff": "^2.0",
|
1786 |
+
"sebastian/environment": "^3.1",
|
1787 |
+
"sebastian/exporter": "^3.1",
|
1788 |
+
"sebastian/global-state": "^2.0",
|
1789 |
+
"sebastian/object-enumerator": "^3.0.3",
|
1790 |
+
"sebastian/resource-operations": "^1.0",
|
1791 |
+
"sebastian/version": "^2.0.1"
|
1792 |
+
},
|
1793 |
+
"conflict": {
|
1794 |
+
"phpdocumentor/reflection-docblock": "3.0.2",
|
1795 |
+
"phpunit/dbunit": "<3.0"
|
1796 |
+
},
|
1797 |
+
"require-dev": {
|
1798 |
+
"ext-pdo": "*"
|
1799 |
+
},
|
1800 |
+
"suggest": {
|
1801 |
+
"ext-xdebug": "*",
|
1802 |
+
"phpunit/php-invoker": "^1.1"
|
1803 |
+
},
|
1804 |
+
"time": "2019-02-01T05:22:47+00:00",
|
1805 |
+
"bin": [
|
1806 |
+
"phpunit"
|
1807 |
+
],
|
1808 |
+
"type": "library",
|
1809 |
+
"extra": {
|
1810 |
+
"branch-alias": {
|
1811 |
+
"dev-master": "6.5.x-dev"
|
1812 |
+
}
|
1813 |
+
},
|
1814 |
+
"installation-source": "dist",
|
1815 |
+
"autoload": {
|
1816 |
+
"classmap": [
|
1817 |
+
"src/"
|
1818 |
+
]
|
1819 |
+
},
|
1820 |
+
"notification-url": "https://packagist.org/downloads/",
|
1821 |
+
"license": [
|
1822 |
+
"BSD-3-Clause"
|
1823 |
+
],
|
1824 |
+
"authors": [
|
1825 |
+
{
|
1826 |
+
"name": "Sebastian Bergmann",
|
1827 |
+
"email": "sebastian@phpunit.de",
|
1828 |
+
"role": "lead"
|
1829 |
+
}
|
1830 |
+
],
|
1831 |
+
"description": "The PHP Unit Testing framework.",
|
1832 |
+
"homepage": "https://phpunit.de/",
|
1833 |
+
"keywords": [
|
1834 |
+
"phpunit",
|
1835 |
+
"testing",
|
1836 |
+
"xunit"
|
1837 |
+
],
|
1838 |
+
"support": {
|
1839 |
+
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
1840 |
+
"source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14"
|
1841 |
+
},
|
1842 |
+
"install-path": "../phpunit/phpunit"
|
1843 |
+
},
|
1844 |
+
{
|
1845 |
+
"name": "phpunit/phpunit-mock-objects",
|
1846 |
+
"version": "5.0.10",
|
1847 |
+
"version_normalized": "5.0.10.0",
|
1848 |
+
"source": {
|
1849 |
+
"type": "git",
|
1850 |
+
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
|
1851 |
+
"reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
|
1852 |
+
},
|
1853 |
+
"dist": {
|
1854 |
+
"type": "zip",
|
1855 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
|
1856 |
+
"reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
|
1857 |
+
"shasum": ""
|
1858 |
+
},
|
1859 |
+
"require": {
|
1860 |
+
"doctrine/instantiator": "^1.0.5",
|
1861 |
+
"php": "^7.0",
|
1862 |
+
"phpunit/php-text-template": "^1.2.1",
|
1863 |
+
"sebastian/exporter": "^3.1"
|
1864 |
+
},
|
1865 |
+
"conflict": {
|
1866 |
+
"phpunit/phpunit": "<6.0"
|
1867 |
+
},
|
1868 |
+
"require-dev": {
|
1869 |
+
"phpunit/phpunit": "^6.5.11"
|
1870 |
+
},
|
1871 |
+
"suggest": {
|
1872 |
+
"ext-soap": "*"
|
1873 |
+
},
|
1874 |
+
"time": "2018-08-09T05:50:03+00:00",
|
1875 |
+
"type": "library",
|
1876 |
+
"extra": {
|
1877 |
+
"branch-alias": {
|
1878 |
+
"dev-master": "5.0.x-dev"
|
1879 |
+
}
|
1880 |
+
},
|
1881 |
+
"installation-source": "dist",
|
1882 |
+
"autoload": {
|
1883 |
+
"classmap": [
|
1884 |
+
"src/"
|
1885 |
+
]
|
1886 |
+
},
|
1887 |
+
"notification-url": "https://packagist.org/downloads/",
|
1888 |
+
"license": [
|
1889 |
+
"BSD-3-Clause"
|
1890 |
+
],
|
1891 |
+
"authors": [
|
1892 |
+
{
|
1893 |
+
"name": "Sebastian Bergmann",
|
1894 |
+
"email": "sebastian@phpunit.de",
|
1895 |
+
"role": "lead"
|
1896 |
+
}
|
1897 |
+
],
|
1898 |
+
"description": "Mock Object library for PHPUnit",
|
1899 |
+
"homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
|
1900 |
+
"keywords": [
|
1901 |
+
"mock",
|
1902 |
+
"xunit"
|
1903 |
+
],
|
1904 |
+
"support": {
|
1905 |
+
"issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
|
1906 |
+
"source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10"
|
1907 |
+
},
|
1908 |
+
"abandoned": true,
|
1909 |
+
"install-path": "../phpunit/phpunit-mock-objects"
|
1910 |
+
},
|
1911 |
+
{
|
1912 |
+
"name": "psr/http-message",
|
1913 |
+
"version": "1.0.1",
|
1914 |
+
"version_normalized": "1.0.1.0",
|
1915 |
+
"source": {
|
1916 |
+
"type": "git",
|
1917 |
+
"url": "https://github.com/php-fig/http-message.git",
|
1918 |
+
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
1919 |
+
},
|
1920 |
+
"dist": {
|
1921 |
+
"type": "zip",
|
1922 |
+
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
1923 |
+
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
1924 |
+
"shasum": ""
|
1925 |
+
},
|
1926 |
+
"require": {
|
1927 |
+
"php": ">=5.3.0"
|
1928 |
+
},
|
1929 |
+
"time": "2016-08-06T14:39:51+00:00",
|
1930 |
+
"type": "library",
|
1931 |
+
"extra": {
|
1932 |
+
"branch-alias": {
|
1933 |
+
"dev-master": "1.0.x-dev"
|
1934 |
+
}
|
1935 |
+
},
|
1936 |
+
"installation-source": "dist",
|
1937 |
+
"autoload": {
|
1938 |
+
"psr-4": {
|
1939 |
+
"Psr\\Http\\Message\\": "src/"
|
1940 |
+
}
|
1941 |
+
},
|
1942 |
+
"notification-url": "https://packagist.org/downloads/",
|
1943 |
+
"license": [
|
1944 |
+
"MIT"
|
1945 |
+
],
|
1946 |
+
"authors": [
|
1947 |
+
{
|
1948 |
+
"name": "PHP-FIG",
|
1949 |
+
"homepage": "http://www.php-fig.org/"
|
1950 |
+
}
|
1951 |
+
],
|
1952 |
+
"description": "Common interface for HTTP messages",
|
1953 |
+
"homepage": "https://github.com/php-fig/http-message",
|
1954 |
+
"keywords": [
|
1955 |
+
"http",
|
1956 |
+
"http-message",
|
1957 |
+
"psr",
|
1958 |
+
"psr-7",
|
1959 |
+
"request",
|
1960 |
+
"response"
|
1961 |
+
],
|
1962 |
+
"support": {
|
1963 |
+
"source": "https://github.com/php-fig/http-message/tree/master"
|
1964 |
+
},
|
1965 |
+
"install-path": "../psr/http-message"
|
1966 |
+
},
|
1967 |
+
{
|
1968 |
+
"name": "psr/log",
|
1969 |
+
"version": "1.1.3",
|
1970 |
+
"version_normalized": "1.1.3.0",
|
1971 |
+
"source": {
|
1972 |
+
"type": "git",
|
1973 |
+
"url": "https://github.com/php-fig/log.git",
|
1974 |
+
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
|
1975 |
+
},
|
1976 |
+
"dist": {
|
1977 |
+
"type": "zip",
|
1978 |
+
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
|
1979 |
+
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
|
1980 |
+
"shasum": ""
|
1981 |
+
},
|
1982 |
+
"require": {
|
1983 |
+
"php": ">=5.3.0"
|
1984 |
+
},
|
1985 |
+
"time": "2020-03-23T09:12:05+00:00",
|
1986 |
+
"type": "library",
|
1987 |
+
"extra": {
|
1988 |
+
"branch-alias": {
|
1989 |
+
"dev-master": "1.1.x-dev"
|
1990 |
+
}
|
1991 |
+
},
|
1992 |
+
"installation-source": "dist",
|
1993 |
+
"autoload": {
|
1994 |
+
"psr-4": {
|
1995 |
+
"Psr\\Log\\": "Psr/Log/"
|
1996 |
+
}
|
1997 |
+
},
|
1998 |
+
"notification-url": "https://packagist.org/downloads/",
|
1999 |
+
"license": [
|
2000 |
+
"MIT"
|
2001 |
+
],
|
2002 |
+
"authors": [
|
2003 |
+
{
|
2004 |
+
"name": "PHP-FIG",
|
2005 |
+
"homepage": "http://www.php-fig.org/"
|
2006 |
+
}
|
2007 |
+
],
|
2008 |
+
"description": "Common interface for logging libraries",
|
2009 |
+
"homepage": "https://github.com/php-fig/log",
|
2010 |
+
"keywords": [
|
2011 |
+
"log",
|
2012 |
+
"psr",
|
2013 |
+
"psr-3"
|
2014 |
+
],
|
2015 |
+
"support": {
|
2016 |
+
"source": "https://github.com/php-fig/log/tree/1.1.3"
|
2017 |
+
},
|
2018 |
+
"install-path": "../psr/log"
|
2019 |
+
},
|
2020 |
+
{
|
2021 |
+
"name": "ralouphie/getallheaders",
|
2022 |
+
"version": "3.0.3",
|
2023 |
+
"version_normalized": "3.0.3.0",
|
2024 |
+
"source": {
|
2025 |
+
"type": "git",
|
2026 |
+
"url": "https://github.com/ralouphie/getallheaders.git",
|
2027 |
+
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
2028 |
+
},
|
2029 |
+
"dist": {
|
2030 |
+
"type": "zip",
|
2031 |
+
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
2032 |
+
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
2033 |
+
"shasum": ""
|
2034 |
+
},
|
2035 |
+
"require": {
|
2036 |
+
"php": ">=5.6"
|
2037 |
+
},
|
2038 |
+
"require-dev": {
|
2039 |
+
"php-coveralls/php-coveralls": "^2.1",
|
2040 |
+
"phpunit/phpunit": "^5 || ^6.5"
|
2041 |
+
},
|
2042 |
+
"time": "2019-03-08T08:55:37+00:00",
|
2043 |
+
"type": "library",
|
2044 |
+
"installation-source": "dist",
|
2045 |
+
"autoload": {
|
2046 |
+
"files": [
|
2047 |
+
"src/getallheaders.php"
|
2048 |
+
]
|
2049 |
+
},
|
2050 |
+
"notification-url": "https://packagist.org/downloads/",
|
2051 |
+
"license": [
|
2052 |
+
"MIT"
|
2053 |
+
],
|
2054 |
+
"authors": [
|
2055 |
+
{
|
2056 |
+
"name": "Ralph Khattar",
|
2057 |
+
"email": "ralph.khattar@gmail.com"
|
2058 |
+
}
|
2059 |
+
],
|
2060 |
+
"description": "A polyfill for getallheaders.",
|
2061 |
+
"support": {
|
2062 |
+
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
2063 |
+
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
2064 |
+
},
|
2065 |
+
"install-path": "../ralouphie/getallheaders"
|
2066 |
+
},
|
2067 |
+
{
|
2068 |
+
"name": "roave/security-advisories",
|
2069 |
+
"version": "dev-master",
|
2070 |
+
"version_normalized": "dev-master",
|
2071 |
+
"source": {
|
2072 |
+
"type": "git",
|
2073 |
+
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
2074 |
+
"reference": "676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6"
|
2075 |
+
},
|
2076 |
+
"dist": {
|
2077 |
+
"type": "zip",
|
2078 |
+
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6",
|
2079 |
+
"reference": "676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6",
|
2080 |
+
"shasum": ""
|
2081 |
+
},
|
2082 |
+
"conflict": {
|
2083 |
+
"3f/pygmentize": "<1.2",
|
2084 |
+
"adodb/adodb-php": "<5.20.12",
|
2085 |
+
"alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
|
2086 |
+
"amphp/artax": "<1.0.6|>=2,<2.0.6",
|
2087 |
+
"amphp/http": "<1.0.1",
|
2088 |
+
"amphp/http-client": ">=4,<4.4",
|
2089 |
+
"api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
|
2090 |
+
"asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
|
2091 |
+
"aws/aws-sdk-php": ">=3,<3.2.1",
|
2092 |
+
"bagisto/bagisto": "<0.1.5",
|
2093 |
+
"barrelstrength/sprout-base-email": "<1.2.7",
|
2094 |
+
"barrelstrength/sprout-forms": "<3.9",
|
2095 |
+
"baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1",
|
2096 |
+
"bolt/bolt": "<3.7.1",
|
2097 |
+
"brightlocal/phpwhois": "<=4.2.5",
|
2098 |
+
"buddypress/buddypress": "<5.1.2",
|
2099 |
+
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
|
2100 |
+
"cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7",
|
2101 |
+
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
|
2102 |
+
"cartalyst/sentry": "<=2.1.6",
|
2103 |
+
"centreon/centreon": "<18.10.8|>=19,<19.4.5",
|
2104 |
+
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
|
2105 |
+
"codeigniter/framework": "<=3.0.6",
|
2106 |
+
"composer/composer": "<=1-alpha.11",
|
2107 |
+
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
|
2108 |
+
"contao/core": ">=2,<3.5.39",
|
2109 |
+
"contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0",
|
2110 |
+
"contao/listing-bundle": ">=4,<4.4.8",
|
2111 |
+
"datadog/dd-trace": ">=0.30,<0.30.2",
|
2112 |
+
"david-garcia/phpwhois": "<=4.3.1",
|
2113 |
+
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
|
2114 |
+
"doctrine/annotations": ">=1,<1.2.7",
|
2115 |
+
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
|
2116 |
+
"doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
|
2117 |
+
"doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
|
2118 |
+
"doctrine/doctrine-bundle": "<1.5.2",
|
2119 |
+
"doctrine/doctrine-module": "<=0.7.1",
|
2120 |
+
"doctrine/mongodb-odm": ">=1,<1.0.2",
|
2121 |
+
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
|
2122 |
+
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
|
2123 |
+
"dolibarr/dolibarr": "<11.0.4",
|
2124 |
+
"dompdf/dompdf": ">=0.6,<0.6.2",
|
2125 |
+
"drupal/core": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
|
2126 |
+
"drupal/drupal": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
|
2127 |
+
"endroid/qr-code-bundle": "<3.4.2",
|
2128 |
+
"enshrined/svg-sanitize": "<0.13.1",
|
2129 |
+
"erusev/parsedown": "<1.7.2",
|
2130 |
+
"ezsystems/demobundle": ">=5.4,<5.4.6.1",
|
2131 |
+
"ezsystems/ez-support-tools": ">=2.2,<2.2.3",
|
2132 |
+
"ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
|
2133 |
+
"ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1",
|
2134 |
+
"ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4",
|
2135 |
+
"ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6",
|
2136 |
+
"ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
|
2137 |
+
"ezsystems/ezplatform-kernel": ">=1,<1.0.2.1",
|
2138 |
+
"ezsystems/ezplatform-user": ">=1,<1.0.1",
|
2139 |
+
"ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1",
|
2140 |
+
"ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.5.1",
|
2141 |
+
"ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
|
2142 |
+
"ezsystems/repository-forms": ">=2.3,<2.3.2.1",
|
2143 |
+
"ezyang/htmlpurifier": "<4.1.1",
|
2144 |
+
"firebase/php-jwt": "<2",
|
2145 |
+
"fooman/tcpdf": "<6.2.22",
|
2146 |
+
"fossar/tcpdf-parser": "<6.2.22",
|
2147 |
+
"friendsofsymfony/oauth2-php": "<1.3",
|
2148 |
+
"friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
|
2149 |
+
"friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
|
2150 |
+
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
|
2151 |
+
"fuel/core": "<1.8.1",
|
2152 |
+
"getgrav/grav": "<1.7-beta.8",
|
2153 |
+
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
|
2154 |
+
"gree/jose": "<=2.2",
|
2155 |
+
"gregwar/rst": "<1.0.3",
|
2156 |
+
"guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
|
2157 |
+
"illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
|
2158 |
+
"illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
|
2159 |
+
"illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.18.34|>=7,<7.23.2",
|
2160 |
+
"illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
|
2161 |
+
"illuminate/view": ">=7,<7.1.2",
|
2162 |
+
"ivankristianto/phpwhois": "<=4.3",
|
2163 |
+
"james-heinrich/getid3": "<1.9.9",
|
2164 |
+
"joomla/session": "<1.3.1",
|
2165 |
+
"jsmitty12/phpwhois": "<5.1",
|
2166 |
+
"kazist/phpwhois": "<=4.2.6",
|
2167 |
+
"kitodo/presentation": "<3.1.2",
|
2168 |
+
"kreait/firebase-php": ">=3.2,<3.8.1",
|
2169 |
+
"la-haute-societe/tcpdf": "<6.2.22",
|
2170 |
+
"laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.34|>=7,<7.23.2",
|
2171 |
+
"laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
|
2172 |
+
"league/commonmark": "<0.18.3",
|
2173 |
+
"librenms/librenms": "<1.53",
|
2174 |
+
"livewire/livewire": ">2.2.4,<2.2.6",
|
2175 |
+
"magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3",
|
2176 |
+
"magento/magento1ce": "<1.9.4.3",
|
2177 |
+
"magento/magento1ee": ">=1,<1.14.4.3",
|
2178 |
+
"magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
|
2179 |
+
"marcwillmann/turn": "<0.3.3",
|
2180 |
+
"mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
|
2181 |
+
"mittwald/typo3_forum": "<1.2.1",
|
2182 |
+
"monolog/monolog": ">=1.8,<1.12",
|
2183 |
+
"namshi/jose": "<2.2",
|
2184 |
+
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
|
2185 |
+
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
|
2186 |
+
"nystudio107/craft-seomatic": "<3.3",
|
2187 |
+
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
|
2188 |
+
"october/backend": ">=1.0.319,<1.0.470",
|
2189 |
+
"october/cms": "= 1.0.469|>=1.0.319,<1.0.469",
|
2190 |
+
"october/october": ">=1.0.319,<1.0.466",
|
2191 |
+
"october/rain": ">=1.0.319,<1.0.468",
|
2192 |
+
"onelogin/php-saml": "<2.10.4",
|
2193 |
+
"oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
|
2194 |
+
"openid/php-openid": "<2.3",
|
2195 |
+
"openmage/magento-lts": "<19.4.8|>=20,<20.0.4",
|
2196 |
+
"orchid/platform": ">=9,<9.4.4",
|
2197 |
+
"oro/crm": ">=1.7,<1.7.4",
|
2198 |
+
"oro/platform": ">=1.7,<1.7.4",
|
2199 |
+
"padraic/humbug_get_contents": "<1.1.2",
|
2200 |
+
"pagarme/pagarme-php": ">=0,<3",
|
2201 |
+
"paragonie/random_compat": "<2",
|
2202 |
+
"passbolt/passbolt_api": "<2.11",
|
2203 |
+
"paypal/merchant-sdk-php": "<3.12",
|
2204 |
+
"pear/archive_tar": "<1.4.11",
|
2205 |
+
"personnummer/personnummer": "<3.0.2",
|
2206 |
+
"phpfastcache/phpfastcache": ">=5,<5.0.13",
|
2207 |
+
"phpmailer/phpmailer": "<6.1.6",
|
2208 |
+
"phpmussel/phpmussel": ">=1,<1.6",
|
2209 |
+
"phpmyadmin/phpmyadmin": "<4.9.6|>=5,<5.0.3",
|
2210 |
+
"phpoffice/phpexcel": "<1.8.2",
|
2211 |
+
"phpoffice/phpspreadsheet": "<1.8",
|
2212 |
+
"phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
|
2213 |
+
"phpwhois/phpwhois": "<=4.2.5",
|
2214 |
+
"phpxmlrpc/extras": "<0.6.1",
|
2215 |
+
"pimcore/pimcore": "<6.3",
|
2216 |
+
"pocketmine/pocketmine-mp": "<3.15.4",
|
2217 |
+
"prestashop/autoupgrade": ">=4,<4.10.1",
|
2218 |
+
"prestashop/contactform": ">1.0.1,<4.3",
|
2219 |
+
"prestashop/gamification": "<2.3.2",
|
2220 |
+
"prestashop/productcomments": ">=4,<4.2",
|
2221 |
+
"prestashop/ps_facetedsearch": "<3.4.1",
|
2222 |
+
"privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
|
2223 |
+
"propel/propel": ">=2-alpha.1,<=2-alpha.7",
|
2224 |
+
"propel/propel1": ">=1,<=1.7.1",
|
2225 |
+
"pterodactyl/panel": "<0.7.19|>=1-rc.0,<=1-rc.6",
|
2226 |
+
"pusher/pusher-php-server": "<2.2.1",
|
2227 |
+
"rainlab/debugbar-plugin": "<3.1",
|
2228 |
+
"robrichards/xmlseclibs": "<3.0.4",
|
2229 |
+
"sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
|
2230 |
+
"sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
|
2231 |
+
"scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
|
2232 |
+
"sensiolabs/connect": "<4.2.3",
|
2233 |
+
"serluck/phpwhois": "<=4.2.6",
|
2234 |
+
"shopware/core": "<=6.3.2",
|
2235 |
+
"shopware/platform": "<=6.3.2",
|
2236 |
+
"shopware/shopware": "<5.6.9",
|
2237 |
+
"silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1",
|
2238 |
+
"silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2",
|
2239 |
+
"silverstripe/cms": "<4.3.6|>=4.4,<4.4.4",
|
2240 |
+
"silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
|
2241 |
+
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
|
2242 |
+
"silverstripe/framework": "<4.4.7|>=4.5,<4.5.4",
|
2243 |
+
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2|>=3.2,<3.2.4",
|
2244 |
+
"silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
|
2245 |
+
"silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
|
2246 |
+
"silverstripe/subsites": ">=2,<2.1.1",
|
2247 |
+
"silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
|
2248 |
+
"silverstripe/userforms": "<3",
|
2249 |
+
"simple-updates/phpwhois": "<=1",
|
2250 |
+
"simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
|
2251 |
+
"simplesamlphp/simplesamlphp": "<1.18.6",
|
2252 |
+
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
|
2253 |
+
"simplito/elliptic-php": "<1.0.6",
|
2254 |
+
"slim/slim": "<2.6",
|
2255 |
+
"smarty/smarty": "<3.1.33",
|
2256 |
+
"socalnick/scn-social-auth": "<1.15.2",
|
2257 |
+
"spoonity/tcpdf": "<6.2.22",
|
2258 |
+
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
|
2259 |
+
"ssddanbrown/bookstack": "<0.29.2",
|
2260 |
+
"stormpath/sdk": ">=0,<9.9.99",
|
2261 |
+
"studio-42/elfinder": "<2.1.49",
|
2262 |
+
"sulu/sulu": "<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1",
|
2263 |
+
"swiftmailer/swiftmailer": ">=4,<5.4.5",
|
2264 |
+
"sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
|
2265 |
+
"sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
|
2266 |
+
"sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
|
2267 |
+
"sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
|
2268 |
+
"sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3",
|
2269 |
+
"symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
|
2270 |
+
"symbiote/silverstripe-versionedfiles": "<=2.0.3",
|
2271 |
+
"symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
|
2272 |
+
"symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
|
2273 |
+
"symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
|
2274 |
+
"symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
|
2275 |
+
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
|
2276 |
+
"symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
|
2277 |
+
"symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
|
2278 |
+
"symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
|
2279 |
+
"symfony/mime": ">=4.3,<4.3.8",
|
2280 |
+
"symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
|
2281 |
+
"symfony/polyfill": ">=1,<1.10",
|
2282 |
+
"symfony/polyfill-php55": ">=1,<1.10",
|
2283 |
+
"symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
|
2284 |
+
"symfony/routing": ">=2,<2.0.19",
|
2285 |
+
"symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7",
|
2286 |
+
"symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
|
2287 |
+
"symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7",
|
2288 |
+
"symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
|
2289 |
+
"symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
|
2290 |
+
"symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
|
2291 |
+
"symfony/serializer": ">=2,<2.0.11",
|
2292 |
+
"symfony/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
|
2293 |
+
"symfony/translation": ">=2,<2.0.17",
|
2294 |
+
"symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
|
2295 |
+
"symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
|
2296 |
+
"symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
|
2297 |
+
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
|
2298 |
+
"t3g/svg-sanitizer": "<1.0.3",
|
2299 |
+
"tecnickcom/tcpdf": "<6.2.22",
|
2300 |
+
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
|
2301 |
+
"thelia/thelia": ">=2.1-beta.1,<2.1.3",
|
2302 |
+
"theonedemon/phpwhois": "<=4.2.5",
|
2303 |
+
"titon/framework": ">=0,<9.9.99",
|
2304 |
+
"truckersmp/phpwhois": "<=4.3.1",
|
2305 |
+
"twig/twig": "<1.38|>=2,<2.7",
|
2306 |
+
"typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
|
2307 |
+
"typo3/cms-core": ">=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
|
2308 |
+
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5",
|
2309 |
+
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
|
2310 |
+
"typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
|
2311 |
+
"typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
|
2312 |
+
"ua-parser/uap-php": "<3.8",
|
2313 |
+
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
|
2314 |
+
"verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
|
2315 |
+
"wallabag/tcpdf": "<6.2.22",
|
2316 |
+
"willdurand/js-translation-bundle": "<2.1.1",
|
2317 |
+
"yii2mod/yii2-cms": "<1.9.2",
|
2318 |
+
"yiisoft/yii": ">=1.1.14,<1.1.15",
|
2319 |
+
"yiisoft/yii2": "<2.0.38",
|
2320 |
+
"yiisoft/yii2-bootstrap": "<2.0.4",
|
2321 |
+
"yiisoft/yii2-dev": "<2.0.15",
|
2322 |
+
"yiisoft/yii2-elasticsearch": "<2.0.5",
|
2323 |
+
"yiisoft/yii2-gii": "<2.0.4",
|
2324 |
+
"yiisoft/yii2-jui": "<2.0.4",
|
2325 |
+
"yiisoft/yii2-redis": "<2.0.8",
|
2326 |
+
"yourls/yourls": "<1.7.4",
|
2327 |
+
"zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
|
2328 |
+
"zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
|
2329 |
+
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
|
2330 |
+
"zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
|
2331 |
+
"zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
|
2332 |
+
"zendframework/zend-diactoros": ">=1,<1.8.4",
|
2333 |
+
"zendframework/zend-feed": ">=1,<2.10.3",
|
2334 |
+
"zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
|
2335 |
+
"zendframework/zend-http": ">=1,<2.8.1",
|
2336 |
+
"zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
|
2337 |
+
"zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
|
2338 |
+
"zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
|
2339 |
+
"zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
|
2340 |
+
"zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
|
2341 |
+
"zendframework/zend-validator": ">=2.3,<2.3.6",
|
2342 |
+
"zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
|
2343 |
+
"zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
|
2344 |
+
"zendframework/zendframework": "<2.5.1",
|
2345 |
+
"zendframework/zendframework1": "<1.12.20",
|
2346 |
+
"zendframework/zendopenid": ">=2,<2.0.2",
|
2347 |
+
"zendframework/zendxml": ">=1,<1.0.1",
|
2348 |
+
"zetacomponents/mail": "<1.8.2",
|
2349 |
+
"zf-commons/zfc-user": "<1.2.2",
|
2350 |
+
"zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
|
2351 |
+
"zfr/zfr-oauth2-server-module": "<0.1.2"
|
2352 |
+
},
|
2353 |
+
"time": "2020-12-02T06:02:50+00:00",
|
2354 |
+
"type": "metapackage",
|
2355 |
+
"notification-url": "https://packagist.org/downloads/",
|
2356 |
+
"license": [
|
2357 |
+
"MIT"
|
2358 |
+
],
|
2359 |
+
"authors": [
|
2360 |
+
{
|
2361 |
+
"name": "Marco Pivetta",
|
2362 |
+
"email": "ocramius@gmail.com",
|
2363 |
+
"role": "maintainer"
|
2364 |
+
},
|
2365 |
+
{
|
2366 |
+
"name": "Ilya Tribusean",
|
2367 |
+
"email": "slash3b@gmail.com",
|
2368 |
+
"role": "maintainer"
|
2369 |
+
}
|
2370 |
+
],
|
2371 |
+
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
|
2372 |
+
"support": {
|
2373 |
+
"issues": "https://github.com/Roave/SecurityAdvisories/issues",
|
2374 |
+
"source": "https://github.com/Roave/SecurityAdvisories/tree/latest"
|
2375 |
+
},
|
2376 |
+
"funding": [
|
2377 |
+
{
|
2378 |
+
"url": "https://github.com/Ocramius",
|
2379 |
+
"type": "github"
|
2380 |
+
},
|
2381 |
+
{
|
2382 |
+
"url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
|
2383 |
+
"type": "tidelift"
|
2384 |
+
}
|
2385 |
+
],
|
2386 |
+
"install-path": null
|
2387 |
+
},
|
2388 |
+
{
|
2389 |
+
"name": "sebastian/code-unit-reverse-lookup",
|
2390 |
+
"version": "1.0.2",
|
2391 |
+
"version_normalized": "1.0.2.0",
|
2392 |
+
"source": {
|
2393 |
+
"type": "git",
|
2394 |
+
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
|
2395 |
+
"reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
|
2396 |
+
},
|
2397 |
+
"dist": {
|
2398 |
+
"type": "zip",
|
2399 |
+
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
|
2400 |
+
"reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
|
2401 |
+
"shasum": ""
|
2402 |
+
},
|
2403 |
+
"require": {
|
2404 |
+
"php": ">=5.6"
|
2405 |
+
},
|
2406 |
+
"require-dev": {
|
2407 |
+
"phpunit/phpunit": "^8.5"
|
2408 |
+
},
|
2409 |
+
"time": "2020-11-30T08:15:22+00:00",
|
2410 |
+
"type": "library",
|
2411 |
+
"extra": {
|
2412 |
+
"branch-alias": {
|
2413 |
+
"dev-master": "1.0.x-dev"
|
2414 |
+
}
|
2415 |
+
},
|
2416 |
+
"installation-source": "dist",
|
2417 |
+
"autoload": {
|
2418 |
+
"classmap": [
|
2419 |
+
"src/"
|
2420 |
+
]
|
2421 |
+
},
|
2422 |
+
"notification-url": "https://packagist.org/downloads/",
|
2423 |
+
"license": [
|
2424 |
+
"BSD-3-Clause"
|
2425 |
+
],
|
2426 |
+
"authors": [
|
2427 |
+
{
|
2428 |
+
"name": "Sebastian Bergmann",
|
2429 |
+
"email": "sebastian@phpunit.de"
|
2430 |
+
}
|
2431 |
+
],
|
2432 |
+
"description": "Looks up which function or method a line of code belongs to",
|
2433 |
+
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
2434 |
+
"support": {
|
2435 |
+
"issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
|
2436 |
+
"source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
|
2437 |
+
},
|
2438 |
+
"funding": [
|
2439 |
+
{
|
2440 |
+
"url": "https://github.com/sebastianbergmann",
|
2441 |
+
"type": "github"
|
2442 |
+
}
|
2443 |
+
],
|
2444 |
+
"install-path": "../sebastian/code-unit-reverse-lookup"
|
2445 |
+
},
|
2446 |
+
{
|
2447 |
+
"name": "sebastian/comparator",
|
2448 |
+
"version": "2.1.3",
|
2449 |
+
"version_normalized": "2.1.3.0",
|
2450 |
+
"source": {
|
2451 |
+
"type": "git",
|
2452 |
+
"url": "https://github.com/sebastianbergmann/comparator.git",
|
2453 |
+
"reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
|
2454 |
+
},
|
2455 |
+
"dist": {
|
2456 |
+
"type": "zip",
|
2457 |
+
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
|
2458 |
+
"reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
|
2459 |
+
"shasum": ""
|
2460 |
+
},
|
2461 |
+
"require": {
|
2462 |
+
"php": "^7.0",
|
2463 |
+
"sebastian/diff": "^2.0 || ^3.0",
|
2464 |
+
"sebastian/exporter": "^3.1"
|
2465 |
+
},
|
2466 |
+
"require-dev": {
|
2467 |
+
"phpunit/phpunit": "^6.4"
|
2468 |
+
},
|
2469 |
+
"time": "2018-02-01T13:46:46+00:00",
|
2470 |
+
"type": "library",
|
2471 |
+
"extra": {
|
2472 |
+
"branch-alias": {
|
2473 |
+
"dev-master": "2.1.x-dev"
|
2474 |
+
}
|
2475 |
+
},
|
2476 |
+
"installation-source": "dist",
|
2477 |
+
"autoload": {
|
2478 |
+
"classmap": [
|
2479 |
+
"src/"
|
2480 |
+
]
|
2481 |
+
},
|
2482 |
+
"notification-url": "https://packagist.org/downloads/",
|
2483 |
+
"license": [
|
2484 |
+
"BSD-3-Clause"
|
2485 |
+
],
|
2486 |
+
"authors": [
|
2487 |
+
{
|
2488 |
+
"name": "Jeff Welch",
|
2489 |
+
"email": "whatthejeff@gmail.com"
|
2490 |
+
},
|
2491 |
+
{
|
2492 |
+
"name": "Volker Dusch",
|
2493 |
+
"email": "github@wallbash.com"
|
2494 |
+
},
|
2495 |
+
{
|
2496 |
+
"name": "Bernhard Schussek",
|
2497 |
+
"email": "bschussek@2bepublished.at"
|
2498 |
+
},
|
2499 |
+
{
|
2500 |
+
"name": "Sebastian Bergmann",
|
2501 |
+
"email": "sebastian@phpunit.de"
|
2502 |
+
}
|
2503 |
+
],
|
2504 |
+
"description": "Provides the functionality to compare PHP values for equality",
|
2505 |
+
"homepage": "https://github.com/sebastianbergmann/comparator",
|
2506 |
+
"keywords": [
|
2507 |
+
"comparator",
|
2508 |
+
"compare",
|
2509 |
+
"equality"
|
2510 |
+
],
|
2511 |
+
"support": {
|
2512 |
+
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
2513 |
+
"source": "https://github.com/sebastianbergmann/comparator/tree/master"
|
2514 |
+
},
|
2515 |
+
"install-path": "../sebastian/comparator"
|
2516 |
+
},
|
2517 |
+
{
|
2518 |
+
"name": "sebastian/diff",
|
2519 |
+
"version": "2.0.1",
|
2520 |
+
"version_normalized": "2.0.1.0",
|
2521 |
+
"source": {
|
2522 |
+
"type": "git",
|
2523 |
+
"url": "https://github.com/sebastianbergmann/diff.git",
|
2524 |
+
"reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
|
2525 |
+
},
|
2526 |
+
"dist": {
|
2527 |
+
"type": "zip",
|
2528 |
+
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
|
2529 |
+
"reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
|
2530 |
+
"shasum": ""
|
2531 |
+
},
|
2532 |
+
"require": {
|
2533 |
+
"php": "^7.0"
|
2534 |
+
},
|
2535 |
+
"require-dev": {
|
2536 |
+
"phpunit/phpunit": "^6.2"
|
2537 |
+
},
|
2538 |
+
"time": "2017-08-03T08:09:46+00:00",
|
2539 |
+
"type": "library",
|
2540 |
+
"extra": {
|
2541 |
+
"branch-alias": {
|
2542 |
+
"dev-master": "2.0-dev"
|
2543 |
+
}
|
2544 |
+
},
|
2545 |
+
"installation-source": "dist",
|
2546 |
+
"autoload": {
|
2547 |
+
"classmap": [
|
2548 |
+
"src/"
|
2549 |
+
]
|
2550 |
+
},
|
2551 |
+
"notification-url": "https://packagist.org/downloads/",
|
2552 |
+
"license": [
|
2553 |
+
"BSD-3-Clause"
|
2554 |
+
],
|
2555 |
+
"authors": [
|
2556 |
+
{
|
2557 |
+
"name": "Kore Nordmann",
|
2558 |
+
"email": "mail@kore-nordmann.de"
|
2559 |
+
},
|
2560 |
+
{
|
2561 |
+
"name": "Sebastian Bergmann",
|
2562 |
+
"email": "sebastian@phpunit.de"
|
2563 |
+
}
|
2564 |
+
],
|
2565 |
+
"description": "Diff implementation",
|
2566 |
+
"homepage": "https://github.com/sebastianbergmann/diff",
|
2567 |
+
"keywords": [
|
2568 |
+
"diff"
|
2569 |
+
],
|
2570 |
+
"support": {
|
2571 |
+
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
2572 |
+
"source": "https://github.com/sebastianbergmann/diff/tree/master"
|
2573 |
+
},
|
2574 |
+
"install-path": "../sebastian/diff"
|
2575 |
+
},
|
2576 |
+
{
|
2577 |
+
"name": "sebastian/environment",
|
2578 |
+
"version": "3.1.0",
|
2579 |
+
"version_normalized": "3.1.0.0",
|
2580 |
+
"source": {
|
2581 |
+
"type": "git",
|
2582 |
+
"url": "https://github.com/sebastianbergmann/environment.git",
|
2583 |
+
"reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
|
2584 |
+
},
|
2585 |
+
"dist": {
|
2586 |
+
"type": "zip",
|
2587 |
+
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
|
2588 |
+
"reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
|
2589 |
+
"shasum": ""
|
2590 |
+
},
|
2591 |
+
"require": {
|
2592 |
+
"php": "^7.0"
|
2593 |
+
},
|
2594 |
+
"require-dev": {
|
2595 |
+
"phpunit/phpunit": "^6.1"
|
2596 |
+
},
|
2597 |
+
"time": "2017-07-01T08:51:00+00:00",
|
2598 |
+
"type": "library",
|
2599 |
+
"extra": {
|
2600 |
+
"branch-alias": {
|
2601 |
+
"dev-master": "3.1.x-dev"
|
2602 |
+
}
|
2603 |
+
},
|
2604 |
+
"installation-source": "dist",
|
2605 |
+
"autoload": {
|
2606 |
+
"classmap": [
|
2607 |
+
"src/"
|
2608 |
+
]
|
2609 |
+
},
|
2610 |
+
"notification-url": "https://packagist.org/downloads/",
|
2611 |
+
"license": [
|
2612 |
+
"BSD-3-Clause"
|
2613 |
+
],
|
2614 |
+
"authors": [
|
2615 |
+
{
|
2616 |
+
"name": "Sebastian Bergmann",
|
2617 |
+
"email": "sebastian@phpunit.de"
|
2618 |
+
}
|
2619 |
+
],
|
2620 |
+
"description": "Provides functionality to handle HHVM/PHP environments",
|
2621 |
+
"homepage": "http://www.github.com/sebastianbergmann/environment",
|
2622 |
+
"keywords": [
|
2623 |
+
"Xdebug",
|
2624 |
+
"environment",
|
2625 |
+
"hhvm"
|
2626 |
+
],
|
2627 |
+
"support": {
|
2628 |
+
"issues": "https://github.com/sebastianbergmann/environment/issues",
|
2629 |
+
"source": "https://github.com/sebastianbergmann/environment/tree/master"
|
2630 |
+
},
|
2631 |
+
"install-path": "../sebastian/environment"
|
2632 |
+
},
|
2633 |
+
{
|
2634 |
+
"name": "sebastian/exporter",
|
2635 |
+
"version": "3.1.3",
|
2636 |
+
"version_normalized": "3.1.3.0",
|
2637 |
+
"source": {
|
2638 |
+
"type": "git",
|
2639 |
+
"url": "https://github.com/sebastianbergmann/exporter.git",
|
2640 |
+
"reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
|
2641 |
+
},
|
2642 |
+
"dist": {
|
2643 |
+
"type": "zip",
|
2644 |
+
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
|
2645 |
+
"reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
|
2646 |
+
"shasum": ""
|
2647 |
+
},
|
2648 |
+
"require": {
|
2649 |
+
"php": ">=7.0",
|
2650 |
+
"sebastian/recursion-context": "^3.0"
|
2651 |
+
},
|
2652 |
+
"require-dev": {
|
2653 |
+
"ext-mbstring": "*",
|
2654 |
+
"phpunit/phpunit": "^6.0"
|
2655 |
+
},
|
2656 |
+
"time": "2020-11-30T07:47:53+00:00",
|
2657 |
+
"type": "library",
|
2658 |
+
"extra": {
|
2659 |
+
"branch-alias": {
|
2660 |
+
"dev-master": "3.1.x-dev"
|
2661 |
+
}
|
2662 |
+
},
|
2663 |
+
"installation-source": "dist",
|
2664 |
+
"autoload": {
|
2665 |
+
"classmap": [
|
2666 |
+
"src/"
|
2667 |
+
]
|
2668 |
+
},
|
2669 |
+
"notification-url": "https://packagist.org/downloads/",
|
2670 |
+
"license": [
|
2671 |
+
"BSD-3-Clause"
|
2672 |
+
],
|
2673 |
+
"authors": [
|
2674 |
+
{
|
2675 |
+
"name": "Sebastian Bergmann",
|
2676 |
+
"email": "sebastian@phpunit.de"
|
2677 |
+
},
|
2678 |
+
{
|
2679 |
+
"name": "Jeff Welch",
|
2680 |
+
"email": "whatthejeff@gmail.com"
|
2681 |
+
},
|
2682 |
+
{
|
2683 |
+
"name": "Volker Dusch",
|
2684 |
+
"email": "github@wallbash.com"
|
2685 |
+
},
|
2686 |
+
{
|
2687 |
+
"name": "Adam Harvey",
|
2688 |
+
"email": "aharvey@php.net"
|
2689 |
+
},
|
2690 |
+
{
|
2691 |
+
"name": "Bernhard Schussek",
|
2692 |
+
"email": "bschussek@gmail.com"
|
2693 |
+
}
|
2694 |
+
],
|
2695 |
+
"description": "Provides the functionality to export PHP variables for visualization",
|
2696 |
+
"homepage": "http://www.github.com/sebastianbergmann/exporter",
|
2697 |
+
"keywords": [
|
2698 |
+
"export",
|
2699 |
+
"exporter"
|
2700 |
+
],
|
2701 |
+
"support": {
|
2702 |
+
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
2703 |
+
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
|
2704 |
+
},
|
2705 |
+
"funding": [
|
2706 |
+
{
|
2707 |
+
"url": "https://github.com/sebastianbergmann",
|
2708 |
+
"type": "github"
|
2709 |
+
}
|
2710 |
+
],
|
2711 |
+
"install-path": "../sebastian/exporter"
|
2712 |
+
},
|
2713 |
+
{
|
2714 |
+
"name": "sebastian/global-state",
|
2715 |
+
"version": "2.0.0",
|
2716 |
+
"version_normalized": "2.0.0.0",
|
2717 |
+
"source": {
|
2718 |
+
"type": "git",
|
2719 |
+
"url": "https://github.com/sebastianbergmann/global-state.git",
|
2720 |
+
"reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
|
2721 |
+
},
|
2722 |
+
"dist": {
|
2723 |
+
"type": "zip",
|
2724 |
+
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
|
2725 |
+
"reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
|
2726 |
+
"shasum": ""
|
2727 |
+
},
|
2728 |
+
"require": {
|
2729 |
+
"php": "^7.0"
|
2730 |
+
},
|
2731 |
+
"require-dev": {
|
2732 |
+
"phpunit/phpunit": "^6.0"
|
2733 |
+
},
|
2734 |
+
"suggest": {
|
2735 |
+
"ext-uopz": "*"
|
2736 |
+
},
|
2737 |
+
"time": "2017-04-27T15:39:26+00:00",
|
2738 |
+
"type": "library",
|
2739 |
+
"extra": {
|
2740 |
+
"branch-alias": {
|
2741 |
+
"dev-master": "2.0-dev"
|
2742 |
+
}
|
2743 |
+
},
|
2744 |
+
"installation-source": "dist",
|
2745 |
+
"autoload": {
|
2746 |
+
"classmap": [
|
2747 |
+
"src/"
|
2748 |
+
]
|
2749 |
+
},
|
2750 |
+
"notification-url": "https://packagist.org/downloads/",
|
2751 |
+
"license": [
|
2752 |
+
"BSD-3-Clause"
|
2753 |
+
],
|
2754 |
+
"authors": [
|
2755 |
+
{
|
2756 |
+
"name": "Sebastian Bergmann",
|
2757 |
+
"email": "sebastian@phpunit.de"
|
2758 |
+
}
|
2759 |
+
],
|
2760 |
+
"description": "Snapshotting of global state",
|
2761 |
+
"homepage": "http://www.github.com/sebastianbergmann/global-state",
|
2762 |
+
"keywords": [
|
2763 |
+
"global state"
|
2764 |
+
],
|
2765 |
+
"support": {
|
2766 |
+
"issues": "https://github.com/sebastianbergmann/global-state/issues",
|
2767 |
+
"source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0"
|
2768 |
+
},
|
2769 |
+
"install-path": "../sebastian/global-state"
|
2770 |
+
},
|
2771 |
+
{
|
2772 |
+
"name": "sebastian/object-enumerator",
|
2773 |
+
"version": "3.0.4",
|
2774 |
+
"version_normalized": "3.0.4.0",
|
2775 |
+
"source": {
|
2776 |
+
"type": "git",
|
2777 |
+
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
|
2778 |
+
"reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
|
2779 |
+
},
|
2780 |
+
"dist": {
|
2781 |
+
"type": "zip",
|
2782 |
+
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
|
2783 |
+
"reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
|
2784 |
+
"shasum": ""
|
2785 |
+
},
|
2786 |
+
"require": {
|
2787 |
+
"php": ">=7.0",
|
2788 |
+
"sebastian/object-reflector": "^1.1.1",
|
2789 |
+
"sebastian/recursion-context": "^3.0"
|
2790 |
+
},
|
2791 |
+
"require-dev": {
|
2792 |
+
"phpunit/phpunit": "^6.0"
|
2793 |
+
},
|
2794 |
+
"time": "2020-11-30T07:40:27+00:00",
|
2795 |
+
"type": "library",
|
2796 |
+
"extra": {
|
2797 |
+
"branch-alias": {
|
2798 |
+
"dev-master": "3.0.x-dev"
|
2799 |
+
}
|
2800 |
+
},
|
2801 |
+
"installation-source": "dist",
|
2802 |
+
"autoload": {
|
2803 |
+
"classmap": [
|
2804 |
+
"src/"
|
2805 |
+
]
|
2806 |
+
},
|
2807 |
+
"notification-url": "https://packagist.org/downloads/",
|
2808 |
+
"license": [
|
2809 |
+
"BSD-3-Clause"
|
2810 |
+
],
|
2811 |
+
"authors": [
|
2812 |
+
{
|
2813 |
+
"name": "Sebastian Bergmann",
|
2814 |
+
"email": "sebastian@phpunit.de"
|
2815 |
+
}
|
2816 |
+
],
|
2817 |
+
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
2818 |
+
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
2819 |
+
"support": {
|
2820 |
+
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
|
2821 |
+
"source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
|
2822 |
+
},
|
2823 |
+
"funding": [
|
2824 |
+
{
|
2825 |
+
"url": "https://github.com/sebastianbergmann",
|
2826 |
+
"type": "github"
|
2827 |
+
}
|
2828 |
+
],
|
2829 |
+
"install-path": "../sebastian/object-enumerator"
|
2830 |
+
},
|
2831 |
+
{
|
2832 |
+
"name": "sebastian/object-reflector",
|
2833 |
+
"version": "1.1.2",
|
2834 |
+
"version_normalized": "1.1.2.0",
|
2835 |
+
"source": {
|
2836 |
+
"type": "git",
|
2837 |
+
"url": "https://github.com/sebastianbergmann/object-reflector.git",
|
2838 |
+
"reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
|
2839 |
+
},
|
2840 |
+
"dist": {
|
2841 |
+
"type": "zip",
|
2842 |
+
"url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
|
2843 |
+
"reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
|
2844 |
+
"shasum": ""
|
2845 |
+
},
|
2846 |
+
"require": {
|
2847 |
+
"php": ">=7.0"
|
2848 |
+
},
|
2849 |
+
"require-dev": {
|
2850 |
+
"phpunit/phpunit": "^6.0"
|
2851 |
+
},
|
2852 |
+
"time": "2020-11-30T07:37:18+00:00",
|
2853 |
+
"type": "library",
|
2854 |
+
"extra": {
|
2855 |
+
"branch-alias": {
|
2856 |
+
"dev-master": "1.1-dev"
|
2857 |
+
}
|
2858 |
+
},
|
2859 |
+
"installation-source": "dist",
|
2860 |
+
"autoload": {
|
2861 |
+
"classmap": [
|
2862 |
+
"src/"
|
2863 |
+
]
|
2864 |
+
},
|
2865 |
+
"notification-url": "https://packagist.org/downloads/",
|
2866 |
+
"license": [
|
2867 |
+
"BSD-3-Clause"
|
2868 |
+
],
|
2869 |
+
"authors": [
|
2870 |
+
{
|
2871 |
+
"name": "Sebastian Bergmann",
|
2872 |
+
"email": "sebastian@phpunit.de"
|
2873 |
+
}
|
2874 |
+
],
|
2875 |
+
"description": "Allows reflection of object attributes, including inherited and non-public ones",
|
2876 |
+
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
|
2877 |
+
"support": {
|
2878 |
+
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
|
2879 |
+
"source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
|
2880 |
+
},
|
2881 |
+
"funding": [
|
2882 |
+
{
|
2883 |
+
"url": "https://github.com/sebastianbergmann",
|
2884 |
+
"type": "github"
|
2885 |
+
}
|
2886 |
+
],
|
2887 |
+
"install-path": "../sebastian/object-reflector"
|
2888 |
+
},
|
2889 |
+
{
|
2890 |
+
"name": "sebastian/recursion-context",
|
2891 |
+
"version": "3.0.1",
|
2892 |
+
"version_normalized": "3.0.1.0",
|
2893 |
+
"source": {
|
2894 |
+
"type": "git",
|
2895 |
+
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
2896 |
+
"reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
|
2897 |
+
},
|
2898 |
+
"dist": {
|
2899 |
+
"type": "zip",
|
2900 |
+
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
|
2901 |
+
"reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
|
2902 |
+
"shasum": ""
|
2903 |
+
},
|
2904 |
+
"require": {
|
2905 |
+
"php": ">=7.0"
|
2906 |
+
},
|
2907 |
+
"require-dev": {
|
2908 |
+
"phpunit/phpunit": "^6.0"
|
2909 |
+
},
|
2910 |
+
"time": "2020-11-30T07:34:24+00:00",
|
2911 |
+
"type": "library",
|
2912 |
+
"extra": {
|
2913 |
+
"branch-alias": {
|
2914 |
+
"dev-master": "3.0.x-dev"
|
2915 |
+
}
|
2916 |
+
},
|
2917 |
+
"installation-source": "dist",
|
2918 |
+
"autoload": {
|
2919 |
+
"classmap": [
|
2920 |
+
"src/"
|
2921 |
+
]
|
2922 |
+
},
|
2923 |
+
"notification-url": "https://packagist.org/downloads/",
|
2924 |
+
"license": [
|
2925 |
+
"BSD-3-Clause"
|
2926 |
+
],
|
2927 |
+
"authors": [
|
2928 |
+
{
|
2929 |
+
"name": "Sebastian Bergmann",
|
2930 |
+
"email": "sebastian@phpunit.de"
|
2931 |
+
},
|
2932 |
+
{
|
2933 |
+
"name": "Jeff Welch",
|
2934 |
+
"email": "whatthejeff@gmail.com"
|
2935 |
+
},
|
2936 |
+
{
|
2937 |
+
"name": "Adam Harvey",
|
2938 |
+
"email": "aharvey@php.net"
|
2939 |
+
}
|
2940 |
+
],
|
2941 |
+
"description": "Provides functionality to recursively process PHP variables",
|
2942 |
+
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
2943 |
+
"support": {
|
2944 |
+
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
|
2945 |
+
"source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
|
2946 |
+
},
|
2947 |
+
"funding": [
|
2948 |
+
{
|
2949 |
+
"url": "https://github.com/sebastianbergmann",
|
2950 |
+
"type": "github"
|
2951 |
+
}
|
2952 |
+
],
|
2953 |
+
"install-path": "../sebastian/recursion-context"
|
2954 |
+
},
|
2955 |
+
{
|
2956 |
+
"name": "sebastian/resource-operations",
|
2957 |
+
"version": "1.0.0",
|
2958 |
+
"version_normalized": "1.0.0.0",
|
2959 |
+
"source": {
|
2960 |
+
"type": "git",
|
2961 |
+
"url": "https://github.com/sebastianbergmann/resource-operations.git",
|
2962 |
+
"reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
|
2963 |
+
},
|
2964 |
+
"dist": {
|
2965 |
+
"type": "zip",
|
2966 |
+
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
|
2967 |
+
"reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
|
2968 |
+
"shasum": ""
|
2969 |
+
},
|
2970 |
+
"require": {
|
2971 |
+
"php": ">=5.6.0"
|
2972 |
+
},
|
2973 |
+
"time": "2015-07-28T20:34:47+00:00",
|
2974 |
+
"type": "library",
|
2975 |
+
"extra": {
|
2976 |
+
"branch-alias": {
|
2977 |
+
"dev-master": "1.0.x-dev"
|
2978 |
+
}
|
2979 |
+
},
|
2980 |
+
"installation-source": "dist",
|
2981 |
+
"autoload": {
|
2982 |
+
"classmap": [
|
2983 |
+
"src/"
|
2984 |
+
]
|
2985 |
+
},
|
2986 |
+
"notification-url": "https://packagist.org/downloads/",
|
2987 |
+
"license": [
|
2988 |
+
"BSD-3-Clause"
|
2989 |
+
],
|
2990 |
+
"authors": [
|
2991 |
+
{
|
2992 |
+
"name": "Sebastian Bergmann",
|
2993 |
+
"email": "sebastian@phpunit.de"
|
2994 |
+
}
|
2995 |
+
],
|
2996 |
+
"description": "Provides a list of PHP built-in functions that operate on resources",
|
2997 |
+
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
2998 |
+
"support": {
|
2999 |
+
"issues": "https://github.com/sebastianbergmann/resource-operations/issues",
|
3000 |
+
"source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
|
3001 |
+
},
|
3002 |
+
"install-path": "../sebastian/resource-operations"
|
3003 |
+
},
|
3004 |
+
{
|
3005 |
+
"name": "sebastian/version",
|
3006 |
+
"version": "2.0.1",
|
3007 |
+
"version_normalized": "2.0.1.0",
|
3008 |
+
"source": {
|
3009 |
+
"type": "git",
|
3010 |
+
"url": "https://github.com/sebastianbergmann/version.git",
|
3011 |
+
"reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
|
3012 |
+
},
|
3013 |
+
"dist": {
|
3014 |
+
"type": "zip",
|
3015 |
+
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
|
3016 |
+
"reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
|
3017 |
+
"shasum": ""
|
3018 |
+
},
|
3019 |
+
"require": {
|
3020 |
+
"php": ">=5.6"
|
3021 |
+
},
|
3022 |
+
"time": "2016-10-03T07:35:21+00:00",
|
3023 |
+
"type": "library",
|
3024 |
+
"extra": {
|
3025 |
+
"branch-alias": {
|
3026 |
+
"dev-master": "2.0.x-dev"
|
3027 |
+
}
|
3028 |
+
},
|
3029 |
+
"installation-source": "dist",
|
3030 |
+
"autoload": {
|
3031 |
+
"classmap": [
|
3032 |
+
"src/"
|
3033 |
+
]
|
3034 |
+
},
|
3035 |
+
"notification-url": "https://packagist.org/downloads/",
|
3036 |
+
"license": [
|
3037 |
+
"BSD-3-Clause"
|
3038 |
+
],
|
3039 |
+
"authors": [
|
3040 |
+
{
|
3041 |
+
"name": "Sebastian Bergmann",
|
3042 |
+
"email": "sebastian@phpunit.de",
|
3043 |
+
"role": "lead"
|
3044 |
+
}
|
3045 |
+
],
|
3046 |
+
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
3047 |
+
"homepage": "https://github.com/sebastianbergmann/version",
|
3048 |
+
"support": {
|
3049 |
+
"issues": "https://github.com/sebastianbergmann/version/issues",
|
3050 |
+
"source": "https://github.com/sebastianbergmann/version/tree/master"
|
3051 |
+
},
|
3052 |
+
"install-path": "../sebastian/version"
|
3053 |
+
},
|
3054 |
+
{
|
3055 |
+
"name": "squizlabs/php_codesniffer",
|
3056 |
+
"version": "3.5.8",
|
3057 |
+
"version_normalized": "3.5.8.0",
|
3058 |
+
"source": {
|
3059 |
+
"type": "git",
|
3060 |
+
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
3061 |
+
"reference": "9d583721a7157ee997f235f327de038e7ea6dac4"
|
3062 |
+
},
|
3063 |
+
"dist": {
|
3064 |
+
"type": "zip",
|
3065 |
+
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4",
|
3066 |
+
"reference": "9d583721a7157ee997f235f327de038e7ea6dac4",
|
3067 |
+
"shasum": ""
|
3068 |
+
},
|
3069 |
+
"require": {
|
3070 |
+
"ext-simplexml": "*",
|
3071 |
+
"ext-tokenizer": "*",
|
3072 |
+
"ext-xmlwriter": "*",
|
3073 |
+
"php": ">=5.4.0"
|
3074 |
+
},
|
3075 |
+
"require-dev": {
|
3076 |
+
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
|
3077 |
+
},
|
3078 |
+
"time": "2020-10-23T02:01:07+00:00",
|
3079 |
+
"bin": [
|
3080 |
+
"bin/phpcs",
|
3081 |
+
"bin/phpcbf"
|
3082 |
+
],
|
3083 |
+
"type": "library",
|
3084 |
+
"extra": {
|
3085 |
+
"branch-alias": {
|
3086 |
+
"dev-master": "3.x-dev"
|
3087 |
+
}
|
3088 |
+
},
|
3089 |
+
"installation-source": "dist",
|
3090 |
+
"notification-url": "https://packagist.org/downloads/",
|
3091 |
+
"license": [
|
3092 |
+
"BSD-3-Clause"
|
3093 |
+
],
|
3094 |
+
"authors": [
|
3095 |
+
{
|
3096 |
+
"name": "Greg Sherwood",
|
3097 |
+
"role": "lead"
|
3098 |
+
}
|
3099 |
+
],
|
3100 |
+
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
|
3101 |
+
"homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
|
3102 |
+
"keywords": [
|
3103 |
+
"phpcs",
|
3104 |
+
"standards"
|
3105 |
+
],
|
3106 |
+
"support": {
|
3107 |
+
"issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
|
3108 |
+
"source": "https://github.com/squizlabs/PHP_CodeSniffer",
|
3109 |
+
"wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
|
3110 |
+
},
|
3111 |
+
"install-path": "../squizlabs/php_codesniffer"
|
3112 |
+
},
|
3113 |
+
{
|
3114 |
+
"name": "symfony/config",
|
3115 |
+
"version": "v3.3.6",
|
3116 |
+
"version_normalized": "3.3.6.0",
|
3117 |
+
"source": {
|
3118 |
+
"type": "git",
|
3119 |
+
"url": "https://github.com/symfony/config.git",
|
3120 |
+
"reference": "54ee12b0dd60f294132cabae6f5da9573d2e5297"
|
3121 |
+
},
|
3122 |
+
"dist": {
|
3123 |
+
"type": "zip",
|
3124 |
+
"url": "https://api.github.com/repos/symfony/config/zipball/54ee12b0dd60f294132cabae6f5da9573d2e5297",
|
3125 |
+
"reference": "54ee12b0dd60f294132cabae6f5da9573d2e5297",
|
3126 |
+
"shasum": ""
|
3127 |
+
},
|
3128 |
+
"require": {
|
3129 |
+
"php": ">=5.5.9",
|
3130 |
+
"symfony/filesystem": "~2.8|~3.0"
|
3131 |
+
},
|
3132 |
+
"conflict": {
|
3133 |
+
"symfony/dependency-injection": "<3.3",
|
3134 |
+
"symfony/finder": "<3.3"
|
3135 |
+
},
|
3136 |
+
"require-dev": {
|
3137 |
+
"symfony/dependency-injection": "~3.3",
|
3138 |
+
"symfony/finder": "~3.3",
|
3139 |
+
"symfony/yaml": "~3.0"
|
3140 |
+
},
|
3141 |
+
"suggest": {
|
3142 |
+
"symfony/yaml": "To use the yaml reference dumper"
|
3143 |
+
},
|
3144 |
+
"time": "2017-07-19T07:37:29+00:00",
|
3145 |
+
"type": "library",
|
3146 |
+
"extra": {
|
3147 |
+
"branch-alias": {
|
3148 |
+
"dev-master": "3.3-dev"
|
3149 |
+
}
|
3150 |
+
},
|
3151 |
+
"installation-source": "dist",
|
3152 |
+
"autoload": {
|
3153 |
+
"psr-4": {
|
3154 |
+
"Symfony\\Component\\Config\\": ""
|
3155 |
+
},
|
3156 |
+
"exclude-from-classmap": [
|
3157 |
+
"/Tests/"
|
3158 |
+
]
|
3159 |
+
},
|
3160 |
+
"notification-url": "https://packagist.org/downloads/",
|
3161 |
+
"license": [
|
3162 |
+
"MIT"
|
3163 |
+
],
|
3164 |
+
"authors": [
|
3165 |
+
{
|
3166 |
+
"name": "Fabien Potencier",
|
3167 |
+
"email": "fabien@symfony.com"
|
3168 |
+
},
|
3169 |
+
{
|
3170 |
+
"name": "Symfony Community",
|
3171 |
+
"homepage": "https://symfony.com/contributors"
|
3172 |
+
}
|
3173 |
+
],
|
3174 |
+
"description": "Symfony Config Component",
|
3175 |
+
"homepage": "https://symfony.com",
|
3176 |
+
"support": {
|
3177 |
+
"source": "https://github.com/symfony/config/tree/3.3"
|
3178 |
+
},
|
3179 |
+
"install-path": "../symfony/config"
|
3180 |
+
},
|
3181 |
+
{
|
3182 |
+
"name": "symfony/console",
|
3183 |
+
"version": "v3.3.6",
|
3184 |
+
"version_normalized": "3.3.6.0",
|
3185 |
+
"source": {
|
3186 |
+
"type": "git",
|
3187 |
+
"url": "https://github.com/symfony/console.git",
|
3188 |
+
"reference": "b0878233cb5c4391347e5495089c7af11b8e6201"
|
3189 |
+
},
|
3190 |
+
"dist": {
|
3191 |
+
"type": "zip",
|
3192 |
+
"url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201",
|
3193 |
+
"reference": "b0878233cb5c4391347e5495089c7af11b8e6201",
|
3194 |
+
"shasum": ""
|
3195 |
+
},
|
3196 |
+
"require": {
|
3197 |
+
"php": ">=5.5.9",
|
3198 |
+
"symfony/debug": "~2.8|~3.0",
|
3199 |
+
"symfony/polyfill-mbstring": "~1.0"
|
3200 |
+
},
|
3201 |
+
"conflict": {
|
3202 |
+
"symfony/dependency-injection": "<3.3"
|
3203 |
+
},
|
3204 |
+
"require-dev": {
|
3205 |
+
"psr/log": "~1.0",
|
3206 |
+
"symfony/config": "~3.3",
|
3207 |
+
"symfony/dependency-injection": "~3.3",
|
3208 |
+
"symfony/event-dispatcher": "~2.8|~3.0",
|
3209 |
+
"symfony/filesystem": "~2.8|~3.0",
|
3210 |
+
"symfony/http-kernel": "~2.8|~3.0",
|
3211 |
+
"symfony/process": "~2.8|~3.0"
|
3212 |
+
},
|
3213 |
+
"suggest": {
|
3214 |
+
"psr/log": "For using the console logger",
|
3215 |
+
"symfony/event-dispatcher": "",
|
3216 |
+
"symfony/filesystem": "",
|
3217 |
+
"symfony/process": ""
|
3218 |
+
},
|
3219 |
+
"time": "2017-07-29T21:27:59+00:00",
|
3220 |
+
"type": "library",
|
3221 |
+
"extra": {
|
3222 |
+
"branch-alias": {
|
3223 |
+
"dev-master": "3.3-dev"
|
3224 |
+
}
|
3225 |
+
},
|
3226 |
+
"installation-source": "dist",
|
3227 |
+
"autoload": {
|
3228 |
+
"psr-4": {
|
3229 |
+
"Symfony\\Component\\Console\\": ""
|
3230 |
+
},
|
3231 |
+
"exclude-from-classmap": [
|
3232 |
+
"/Tests/"
|
3233 |
+
]
|
3234 |
+
},
|
3235 |
+
"notification-url": "https://packagist.org/downloads/",
|
3236 |
+
"license": [
|
3237 |
+
"MIT"
|
3238 |
+
],
|
3239 |
+
"authors": [
|
3240 |
+
{
|
3241 |
+
"name": "Fabien Potencier",
|
3242 |
+
"email": "fabien@symfony.com"
|
3243 |
+
},
|
3244 |
+
{
|
3245 |
+
"name": "Symfony Community",
|
3246 |
+
"homepage": "https://symfony.com/contributors"
|
3247 |
+
}
|
3248 |
+
],
|
3249 |
+
"description": "Symfony Console Component",
|
3250 |
+
"homepage": "https://symfony.com",
|
3251 |
+
"support": {
|
3252 |
+
"source": "https://github.com/symfony/console/tree/3.3"
|
3253 |
+
},
|
3254 |
+
"install-path": "../symfony/console"
|
3255 |
+
},
|
3256 |
+
{
|
3257 |
+
"name": "symfony/debug",
|
3258 |
+
"version": "v3.3.6",
|
3259 |
+
"version_normalized": "3.3.6.0",
|
3260 |
+
"source": {
|
3261 |
+
"type": "git",
|
3262 |
+
"url": "https://github.com/symfony/debug.git",
|
3263 |
+
"reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13"
|
3264 |
+
},
|
3265 |
+
"dist": {
|
3266 |
+
"type": "zip",
|
3267 |
+
"url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
|
3268 |
+
"reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
|
3269 |
+
"shasum": ""
|
3270 |
+
},
|
3271 |
+
"require": {
|
3272 |
+
"php": ">=5.5.9",
|
3273 |
+
"psr/log": "~1.0"
|
3274 |
+
},
|
3275 |
+
"conflict": {
|
3276 |
+
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
3277 |
+
},
|
3278 |
+
"require-dev": {
|
3279 |
+
"symfony/http-kernel": "~2.8|~3.0"
|
3280 |
+
},
|
3281 |
+
"time": "2017-07-28T15:27:31+00:00",
|
3282 |
+
"type": "library",
|
3283 |
+
"extra": {
|
3284 |
+
"branch-alias": {
|
3285 |
+
"dev-master": "3.3-dev"
|
3286 |
+
}
|
3287 |
+
},
|
3288 |
+
"installation-source": "dist",
|
3289 |
+
"autoload": {
|
3290 |
+
"psr-4": {
|
3291 |
+
"Symfony\\Component\\Debug\\": ""
|
3292 |
+
},
|
3293 |
+
"exclude-from-classmap": [
|
3294 |
+
"/Tests/"
|
3295 |
+
]
|
3296 |
+
},
|
3297 |
+
"notification-url": "https://packagist.org/downloads/",
|
3298 |
+
"license": [
|
3299 |
+
"MIT"
|
3300 |
+
],
|
3301 |
+
"authors": [
|
3302 |
+
{
|
3303 |
+
"name": "Fabien Potencier",
|
3304 |
+
"email": "fabien@symfony.com"
|
3305 |
+
},
|
3306 |
+
{
|
3307 |
+
"name": "Symfony Community",
|
3308 |
+
"homepage": "https://symfony.com/contributors"
|
3309 |
+
}
|
3310 |
+
],
|
3311 |
+
"description": "Symfony Debug Component",
|
3312 |
+
"homepage": "https://symfony.com",
|
3313 |
+
"support": {
|
3314 |
+
"source": "https://github.com/symfony/debug/tree/3.3"
|
3315 |
+
},
|
3316 |
+
"install-path": "../symfony/debug"
|
3317 |
+
},
|
3318 |
+
{
|
3319 |
+
"name": "symfony/filesystem",
|
3320 |
+
"version": "v3.3.6",
|
3321 |
+
"version_normalized": "3.3.6.0",
|
3322 |
+
"source": {
|
3323 |
+
"type": "git",
|
3324 |
+
"url": "https://github.com/symfony/filesystem.git",
|
3325 |
+
"reference": "427987eb4eed764c3b6e38d52a0f87989e010676"
|
3326 |
+
},
|
3327 |
+
"dist": {
|
3328 |
+
"type": "zip",
|
3329 |
+
"url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676",
|
3330 |
+
"reference": "427987eb4eed764c3b6e38d52a0f87989e010676",
|
3331 |
+
"shasum": ""
|
3332 |
+
},
|
3333 |
+
"require": {
|
3334 |
+
"php": ">=5.5.9"
|
3335 |
+
},
|
3336 |
+
"time": "2017-07-11T07:17:58+00:00",
|
3337 |
+
"type": "library",
|
3338 |
+
"extra": {
|
3339 |
+
"branch-alias": {
|
3340 |
+
"dev-master": "3.3-dev"
|
3341 |
+
}
|
3342 |
+
},
|
3343 |
+
"installation-source": "dist",
|
3344 |
+
"autoload": {
|
3345 |
+
"psr-4": {
|
3346 |
+
"Symfony\\Component\\Filesystem\\": ""
|
3347 |
+
},
|
3348 |
+
"exclude-from-classmap": [
|
3349 |
+
"/Tests/"
|
3350 |
+
]
|
3351 |
+
},
|
3352 |
+
"notification-url": "https://packagist.org/downloads/",
|
3353 |
+
"license": [
|
3354 |
+
"MIT"
|
3355 |
+
],
|
3356 |
+
"authors": [
|
3357 |
+
{
|
3358 |
+
"name": "Fabien Potencier",
|
3359 |
+
"email": "fabien@symfony.com"
|
3360 |
+
},
|
3361 |
+
{
|
3362 |
+
"name": "Symfony Community",
|
3363 |
+
"homepage": "https://symfony.com/contributors"
|
3364 |
+
}
|
3365 |
+
],
|
3366 |
+
"description": "Symfony Filesystem Component",
|
3367 |
+
"homepage": "https://symfony.com",
|
3368 |
+
"support": {
|
3369 |
+
"source": "https://github.com/symfony/filesystem/tree/3.3"
|
3370 |
+
},
|
3371 |
+
"install-path": "../symfony/filesystem"
|
3372 |
+
},
|
3373 |
+
{
|
3374 |
+
"name": "symfony/polyfill-ctype",
|
3375 |
+
"version": "v1.19.0",
|
3376 |
+
"version_normalized": "1.19.0.0",
|
3377 |
+
"source": {
|
3378 |
+
"type": "git",
|
3379 |
+
"url": "https://github.com/symfony/polyfill-ctype.git",
|
3380 |
+
"reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
|
3381 |
+
},
|
3382 |
+
"dist": {
|
3383 |
+
"type": "zip",
|
3384 |
+
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
|
3385 |
+
"reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
|
3386 |
+
"shasum": ""
|
3387 |
+
},
|
3388 |
+
"require": {
|
3389 |
+
"php": ">=5.3.3"
|
3390 |
+
},
|
3391 |
+
"suggest": {
|
3392 |
+
"ext-ctype": "For best performance"
|
3393 |
+
},
|
3394 |
+
"time": "2020-10-23T09:01:57+00:00",
|
3395 |
+
"type": "library",
|
3396 |
+
"extra": {
|
3397 |
+
"branch-alias": {
|
3398 |
+
"dev-main": "1.19-dev"
|
3399 |
+
},
|
3400 |
+
"thanks": {
|
3401 |
+
"name": "symfony/polyfill",
|
3402 |
+
"url": "https://github.com/symfony/polyfill"
|
3403 |
+
}
|
3404 |
+
},
|
3405 |
+
"installation-source": "dist",
|
3406 |
+
"autoload": {
|
3407 |
+
"psr-4": {
|
3408 |
+
"Symfony\\Polyfill\\Ctype\\": ""
|
3409 |
+
},
|
3410 |
+
"files": [
|
3411 |
+
"bootstrap.php"
|
3412 |
+
]
|
3413 |
+
},
|
3414 |
+
"notification-url": "https://packagist.org/downloads/",
|
3415 |
+
"license": [
|
3416 |
+
"MIT"
|
3417 |
+
],
|
3418 |
+
"authors": [
|
3419 |
+
{
|
3420 |
+
"name": "Gert de Pagter",
|
3421 |
+
"email": "BackEndTea@gmail.com"
|
3422 |
+
},
|
3423 |
+
{
|
3424 |
+
"name": "Symfony Community",
|
3425 |
+
"homepage": "https://symfony.com/contributors"
|
3426 |
+
}
|
3427 |
+
],
|
3428 |
+
"description": "Symfony polyfill for ctype functions",
|
3429 |
+
"homepage": "https://symfony.com",
|
3430 |
+
"keywords": [
|
3431 |
+
"compatibility",
|
3432 |
+
"ctype",
|
3433 |
+
"polyfill",
|
3434 |
+
"portable"
|
3435 |
+
],
|
3436 |
+
"support": {
|
3437 |
+
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
|
3438 |
+
},
|
3439 |
+
"funding": [
|
3440 |
+
{
|
3441 |
+
"url": "https://symfony.com/sponsor",
|
3442 |
+
"type": "custom"
|
3443 |
+
},
|
3444 |
+
{
|
3445 |
+
"url": "https://github.com/fabpot",
|
3446 |
+
"type": "github"
|
3447 |
+
},
|
3448 |
+
{
|
3449 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
3450 |
+
"type": "tidelift"
|
3451 |
+
}
|
3452 |
+
],
|
3453 |
+
"install-path": "../symfony/polyfill-ctype"
|
3454 |
+
},
|
3455 |
+
{
|
3456 |
+
"name": "symfony/polyfill-intl-idn",
|
3457 |
+
"version": "v1.19.0",
|
3458 |
+
"version_normalized": "1.19.0.0",
|
3459 |
+
"source": {
|
3460 |
+
"type": "git",
|
3461 |
+
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
3462 |
+
"reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826"
|
3463 |
+
},
|
3464 |
+
"dist": {
|
3465 |
+
"type": "zip",
|
3466 |
+
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/4ad5115c0f5d5172a9fe8147675ec6de266d8826",
|
3467 |
+
"reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826",
|
3468 |
+
"shasum": ""
|
3469 |
+
},
|
3470 |
+
"require": {
|
3471 |
+
"php": ">=5.3.3",
|
3472 |
+
"symfony/polyfill-intl-normalizer": "^1.10",
|
3473 |
+
"symfony/polyfill-php70": "^1.10",
|
3474 |
+
"symfony/polyfill-php72": "^1.10"
|
3475 |
+
},
|
3476 |
+
"suggest": {
|
3477 |
+
"ext-intl": "For best performance"
|
3478 |
+
},
|
3479 |
+
"time": "2020-10-21T09:57:48+00:00",
|
3480 |
+
"type": "library",
|
3481 |
+
"extra": {
|
3482 |
+
"branch-alias": {
|
3483 |
+
"dev-main": "1.19-dev"
|
3484 |
+
},
|
3485 |
+
"thanks": {
|
3486 |
+
"name": "symfony/polyfill",
|
3487 |
+
"url": "https://github.com/symfony/polyfill"
|
3488 |
+
}
|
3489 |
+
},
|
3490 |
+
"installation-source": "dist",
|
3491 |
+
"autoload": {
|
3492 |
+
"psr-4": {
|
3493 |
+
"Symfony\\Polyfill\\Intl\\Idn\\": ""
|
3494 |
+
},
|
3495 |
+
"files": [
|
3496 |
+
"bootstrap.php"
|
3497 |
+
]
|
3498 |
+
},
|
3499 |
+
"notification-url": "https://packagist.org/downloads/",
|
3500 |
+
"license": [
|
3501 |
+
"MIT"
|
3502 |
+
],
|
3503 |
+
"authors": [
|
3504 |
+
{
|
3505 |
+
"name": "Laurent Bassin",
|
3506 |
+
"email": "laurent@bassin.info"
|
3507 |
+
},
|
3508 |
+
{
|
3509 |
+
"name": "Trevor Rowbotham",
|
3510 |
+
"email": "trevor.rowbotham@pm.me"
|
3511 |
+
},
|
3512 |
+
{
|
3513 |
+
"name": "Symfony Community",
|
3514 |
+
"homepage": "https://symfony.com/contributors"
|
3515 |
+
}
|
3516 |
+
],
|
3517 |
+
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
|
3518 |
+
"homepage": "https://symfony.com",
|
3519 |
+
"keywords": [
|
3520 |
+
"compatibility",
|
3521 |
+
"idn",
|
3522 |
+
"intl",
|
3523 |
+
"polyfill",
|
3524 |
+
"portable",
|
3525 |
+
"shim"
|
3526 |
+
],
|
3527 |
+
"support": {
|
3528 |
+
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.19.0"
|
3529 |
+
},
|
3530 |
+
"funding": [
|
3531 |
+
{
|
3532 |
+
"url": "https://symfony.com/sponsor",
|
3533 |
+
"type": "custom"
|
3534 |
+
},
|
3535 |
+
{
|
3536 |
+
"url": "https://github.com/fabpot",
|
3537 |
+
"type": "github"
|
3538 |
+
},
|
3539 |
+
{
|
3540 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
3541 |
+
"type": "tidelift"
|
3542 |
+
}
|
3543 |
+
],
|
3544 |
+
"install-path": "../symfony/polyfill-intl-idn"
|
3545 |
+
},
|
3546 |
+
{
|
3547 |
+
"name": "symfony/polyfill-intl-normalizer",
|
3548 |
+
"version": "v1.19.0",
|
3549 |
+
"version_normalized": "1.19.0.0",
|
3550 |
+
"source": {
|
3551 |
+
"type": "git",
|
3552 |
+
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
3553 |
+
"reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27"
|
3554 |
+
},
|
3555 |
+
"dist": {
|
3556 |
+
"type": "zip",
|
3557 |
+
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27",
|
3558 |
+
"reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27",
|
3559 |
+
"shasum": ""
|
3560 |
+
},
|
3561 |
+
"require": {
|
3562 |
+
"php": ">=5.3.3"
|
3563 |
+
},
|
3564 |
+
"suggest": {
|
3565 |
+
"ext-intl": "For best performance"
|
3566 |
+
},
|
3567 |
+
"time": "2020-10-23T09:01:57+00:00",
|
3568 |
+
"type": "library",
|
3569 |
+
"extra": {
|
3570 |
+
"branch-alias": {
|
3571 |
+
"dev-main": "1.19-dev"
|
3572 |
+
},
|
3573 |
+
"thanks": {
|
3574 |
+
"name": "symfony/polyfill",
|
3575 |
+
"url": "https://github.com/symfony/polyfill"
|
3576 |
+
}
|
3577 |
+
},
|
3578 |
+
"installation-source": "dist",
|
3579 |
+
"autoload": {
|
3580 |
+
"psr-4": {
|
3581 |
+
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
|
3582 |
+
},
|
3583 |
+
"files": [
|
3584 |
+
"bootstrap.php"
|
3585 |
+
],
|
3586 |
+
"classmap": [
|
3587 |
+
"Resources/stubs"
|
3588 |
+
]
|
3589 |
+
},
|
3590 |
+
"notification-url": "https://packagist.org/downloads/",
|
3591 |
+
"license": [
|
3592 |
+
"MIT"
|
3593 |
+
],
|
3594 |
+
"authors": [
|
3595 |
+
{
|
3596 |
+
"name": "Nicolas Grekas",
|
3597 |
+
"email": "p@tchwork.com"
|
3598 |
+
},
|
3599 |
+
{
|
3600 |
+
"name": "Symfony Community",
|
3601 |
+
"homepage": "https://symfony.com/contributors"
|
3602 |
+
}
|
3603 |
+
],
|
3604 |
+
"description": "Symfony polyfill for intl's Normalizer class and related functions",
|
3605 |
+
"homepage": "https://symfony.com",
|
3606 |
+
"keywords": [
|
3607 |
+
"compatibility",
|
3608 |
+
"intl",
|
3609 |
+
"normalizer",
|
3610 |
+
"polyfill",
|
3611 |
+
"portable",
|
3612 |
+
"shim"
|
3613 |
+
],
|
3614 |
+
"support": {
|
3615 |
+
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.19.0"
|
3616 |
+
},
|
3617 |
+
"funding": [
|
3618 |
+
{
|
3619 |
+
"url": "https://symfony.com/sponsor",
|
3620 |
+
"type": "custom"
|
3621 |
+
},
|
3622 |
+
{
|
3623 |
+
"url": "https://github.com/fabpot",
|
3624 |
+
"type": "github"
|
3625 |
+
},
|
3626 |
+
{
|
3627 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
3628 |
+
"type": "tidelift"
|
3629 |
+
}
|
3630 |
+
],
|
3631 |
+
"install-path": "../symfony/polyfill-intl-normalizer"
|
3632 |
+
},
|
3633 |
+
{
|
3634 |
+
"name": "symfony/polyfill-mbstring",
|
3635 |
+
"version": "v1.13.1",
|
3636 |
+
"version_normalized": "1.13.1.0",
|
3637 |
+
"source": {
|
3638 |
+
"type": "git",
|
3639 |
+
"url": "git@github.com:kagg-design/polyfill-mbstring.git",
|
3640 |
+
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
|
3641 |
+
},
|
3642 |
+
"dist": {
|
3643 |
+
"type": "zip",
|
3644 |
+
"url": "https://api.github.com/repos/kagg-design/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
|
3645 |
+
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
|
3646 |
+
"shasum": ""
|
3647 |
+
},
|
3648 |
+
"require": {
|
3649 |
+
"php": ">=5.3.3"
|
3650 |
+
},
|
3651 |
+
"suggest": {
|
3652 |
+
"ext-mbstring": "For best performance"
|
3653 |
+
},
|
3654 |
+
"time": "2019-11-27T14:18:11+00:00",
|
3655 |
+
"type": "library",
|
3656 |
+
"extra": {
|
3657 |
+
"branch-alias": {
|
3658 |
+
"dev-master": "1.13-dev"
|
3659 |
+
}
|
3660 |
+
},
|
3661 |
+
"installation-source": "dist",
|
3662 |
+
"autoload": {
|
3663 |
+
"psr-4": {
|
3664 |
+
"Symfony\\Polyfill\\Mbstring\\": ""
|
3665 |
+
},
|
3666 |
+
"files": [
|
3667 |
+
"bootstrap.php"
|
3668 |
+
]
|
3669 |
+
},
|
3670 |
+
"license": [
|
3671 |
+
"MIT"
|
3672 |
+
],
|
3673 |
+
"authors": [
|
3674 |
+
{
|
3675 |
+
"name": "Nicolas Grekas",
|
3676 |
+
"email": "p@tchwork.com"
|
3677 |
+
},
|
3678 |
+
{
|
3679 |
+
"name": "Symfony Community",
|
3680 |
+
"homepage": "https://symfony.com/contributors"
|
3681 |
+
}
|
3682 |
+
],
|
3683 |
+
"description": "Symfony polyfill for the Mbstring extension",
|
3684 |
+
"homepage": "https://symfony.com",
|
3685 |
+
"keywords": [
|
3686 |
+
"compatibility",
|
3687 |
+
"mbstring",
|
3688 |
+
"polyfill",
|
3689 |
+
"portable",
|
3690 |
+
"shim"
|
3691 |
+
],
|
3692 |
+
"install-path": "../symfony/polyfill-mbstring"
|
3693 |
+
},
|
3694 |
+
{
|
3695 |
+
"name": "symfony/polyfill-php70",
|
3696 |
+
"version": "v1.19.0",
|
3697 |
+
"version_normalized": "1.19.0.0",
|
3698 |
+
"source": {
|
3699 |
+
"type": "git",
|
3700 |
+
"url": "https://github.com/symfony/polyfill-php70.git",
|
3701 |
+
"reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
|
3702 |
+
},
|
3703 |
+
"dist": {
|
3704 |
+
"type": "zip",
|
3705 |
+
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
|
3706 |
+
"reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
|
3707 |
+
"shasum": ""
|
3708 |
+
},
|
3709 |
+
"require": {
|
3710 |
+
"paragonie/random_compat": "~1.0|~2.0|~9.99",
|
3711 |
+
"php": ">=5.3.3"
|
3712 |
+
},
|
3713 |
+
"time": "2020-10-23T09:01:57+00:00",
|
3714 |
+
"type": "library",
|
3715 |
+
"extra": {
|
3716 |
+
"branch-alias": {
|
3717 |
+
"dev-main": "1.19-dev"
|
3718 |
+
},
|
3719 |
+
"thanks": {
|
3720 |
+
"name": "symfony/polyfill",
|
3721 |
+
"url": "https://github.com/symfony/polyfill"
|
3722 |
+
}
|
3723 |
+
},
|
3724 |
+
"installation-source": "dist",
|
3725 |
+
"autoload": {
|
3726 |
+
"psr-4": {
|
3727 |
+
"Symfony\\Polyfill\\Php70\\": ""
|
3728 |
+
},
|
3729 |
+
"files": [
|
3730 |
+
"bootstrap.php"
|
3731 |
+
],
|
3732 |
+
"classmap": [
|
3733 |
+
"Resources/stubs"
|
3734 |
+
]
|
3735 |
+
},
|
3736 |
+
"notification-url": "https://packagist.org/downloads/",
|
3737 |
+
"license": [
|
3738 |
+
"MIT"
|
3739 |
+
],
|
3740 |
+
"authors": [
|
3741 |
+
{
|
3742 |
+
"name": "Nicolas Grekas",
|
3743 |
+
"email": "p@tchwork.com"
|
3744 |
+
},
|
3745 |
+
{
|
3746 |
+
"name": "Symfony Community",
|
3747 |
+
"homepage": "https://symfony.com/contributors"
|
3748 |
+
}
|
3749 |
+
],
|
3750 |
+
"description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
|
3751 |
+
"homepage": "https://symfony.com",
|
3752 |
+
"keywords": [
|
3753 |
+
"compatibility",
|
3754 |
+
"polyfill",
|
3755 |
+
"portable",
|
3756 |
+
"shim"
|
3757 |
+
],
|
3758 |
+
"support": {
|
3759 |
+
"source": "https://github.com/symfony/polyfill-php70/tree/v1.19.0"
|
3760 |
+
},
|
3761 |
+
"funding": [
|
3762 |
+
{
|
3763 |
+
"url": "https://symfony.com/sponsor",
|
3764 |
+
"type": "custom"
|
3765 |
+
},
|
3766 |
+
{
|
3767 |
+
"url": "https://github.com/fabpot",
|
3768 |
+
"type": "github"
|
3769 |
+
},
|
3770 |
+
{
|
3771 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
3772 |
+
"type": "tidelift"
|
3773 |
+
}
|
3774 |
+
],
|
3775 |
+
"install-path": "../symfony/polyfill-php70"
|
3776 |
+
},
|
3777 |
+
{
|
3778 |
+
"name": "symfony/polyfill-php72",
|
3779 |
+
"version": "v1.19.0",
|
3780 |
+
"version_normalized": "1.19.0.0",
|
3781 |
+
"source": {
|
3782 |
+
"type": "git",
|
3783 |
+
"url": "https://github.com/symfony/polyfill-php72.git",
|
3784 |
+
"reference": "beecef6b463b06954638f02378f52496cb84bacc"
|
3785 |
+
},
|
3786 |
+
"dist": {
|
3787 |
+
"type": "zip",
|
3788 |
+
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
|
3789 |
+
"reference": "beecef6b463b06954638f02378f52496cb84bacc",
|
3790 |
+
"shasum": ""
|
3791 |
+
},
|
3792 |
+
"require": {
|
3793 |
+
"php": ">=5.3.3"
|
3794 |
+
},
|
3795 |
+
"time": "2020-10-23T09:01:57+00:00",
|
3796 |
+
"type": "library",
|
3797 |
+
"extra": {
|
3798 |
+
"branch-alias": {
|
3799 |
+
"dev-main": "1.19-dev"
|
3800 |
+
},
|
3801 |
+
"thanks": {
|
3802 |
+
"name": "symfony/polyfill",
|
3803 |
+
"url": "https://github.com/symfony/polyfill"
|
3804 |
+
}
|
3805 |
+
},
|
3806 |
+
"installation-source": "dist",
|
3807 |
+
"autoload": {
|
3808 |
+
"psr-4": {
|
3809 |
+
"Symfony\\Polyfill\\Php72\\": ""
|
3810 |
+
},
|
3811 |
+
"files": [
|
3812 |
+
"bootstrap.php"
|
3813 |
+
]
|
3814 |
+
},
|
3815 |
+
"notification-url": "https://packagist.org/downloads/",
|
3816 |
+
"license": [
|
3817 |
+
"MIT"
|
3818 |
+
],
|
3819 |
+
"authors": [
|
3820 |
+
{
|
3821 |
+
"name": "Nicolas Grekas",
|
3822 |
+
"email": "p@tchwork.com"
|
3823 |
+
},
|
3824 |
+
{
|
3825 |
+
"name": "Symfony Community",
|
3826 |
+
"homepage": "https://symfony.com/contributors"
|
3827 |
+
}
|
3828 |
+
],
|
3829 |
+
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
|
3830 |
+
"homepage": "https://symfony.com",
|
3831 |
+
"keywords": [
|
3832 |
+
"compatibility",
|
3833 |
+
"polyfill",
|
3834 |
+
"portable",
|
3835 |
+
"shim"
|
3836 |
+
],
|
3837 |
+
"support": {
|
3838 |
+
"source": "https://github.com/symfony/polyfill-php72/tree/v1.19.0"
|
3839 |
+
},
|
3840 |
+
"funding": [
|
3841 |
+
{
|
3842 |
+
"url": "https://symfony.com/sponsor",
|
3843 |
+
"type": "custom"
|
3844 |
+
},
|
3845 |
+
{
|
3846 |
+
"url": "https://github.com/fabpot",
|
3847 |
+
"type": "github"
|
3848 |
+
},
|
3849 |
+
{
|
3850 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
3851 |
+
"type": "tidelift"
|
3852 |
+
}
|
3853 |
+
],
|
3854 |
+
"install-path": "../symfony/polyfill-php72"
|
3855 |
+
},
|
3856 |
+
{
|
3857 |
+
"name": "symfony/stopwatch",
|
3858 |
+
"version": "v3.3.6",
|
3859 |
+
"version_normalized": "3.3.6.0",
|
3860 |
+
"source": {
|
3861 |
+
"type": "git",
|
3862 |
+
"url": "https://github.com/symfony/stopwatch.git",
|
3863 |
+
"reference": "602a15299dc01556013b07167d4f5d3a60e90d15"
|
3864 |
+
},
|
3865 |
+
"dist": {
|
3866 |
+
"type": "zip",
|
3867 |
+
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/602a15299dc01556013b07167d4f5d3a60e90d15",
|
3868 |
+
"reference": "602a15299dc01556013b07167d4f5d3a60e90d15",
|
3869 |
+
"shasum": ""
|
3870 |
+
},
|
3871 |
+
"require": {
|
3872 |
+
"php": ">=5.5.9"
|
3873 |
+
},
|
3874 |
+
"time": "2017-04-12T14:14:56+00:00",
|
3875 |
+
"type": "library",
|
3876 |
+
"extra": {
|
3877 |
+
"branch-alias": {
|
3878 |
+
"dev-master": "3.3-dev"
|
3879 |
+
}
|
3880 |
+
},
|
3881 |
+
"installation-source": "dist",
|
3882 |
+
"autoload": {
|
3883 |
+
"psr-4": {
|
3884 |
+
"Symfony\\Component\\Stopwatch\\": ""
|
3885 |
+
},
|
3886 |
+
"exclude-from-classmap": [
|
3887 |
+
"/Tests/"
|
3888 |
+
]
|
3889 |
+
},
|
3890 |
+
"notification-url": "https://packagist.org/downloads/",
|
3891 |
+
"license": [
|
3892 |
+
"MIT"
|
3893 |
+
],
|
3894 |
+
"authors": [
|
3895 |
+
{
|
3896 |
+
"name": "Fabien Potencier",
|
3897 |
+
"email": "fabien@symfony.com"
|
3898 |
+
},
|
3899 |
+
{
|
3900 |
+
"name": "Symfony Community",
|
3901 |
+
"homepage": "https://symfony.com/contributors"
|
3902 |
+
}
|
3903 |
+
],
|
3904 |
+
"description": "Symfony Stopwatch Component",
|
3905 |
+
"homepage": "https://symfony.com",
|
3906 |
+
"support": {
|
3907 |
+
"source": "https://github.com/symfony/stopwatch/tree/master"
|
3908 |
+
},
|
3909 |
+
"install-path": "../symfony/stopwatch"
|
3910 |
+
},
|
3911 |
+
{
|
3912 |
+
"name": "symfony/yaml",
|
3913 |
+
"version": "v3.3.6",
|
3914 |
+
"version_normalized": "3.3.6.0",
|
3915 |
+
"source": {
|
3916 |
+
"type": "git",
|
3917 |
+
"url": "https://github.com/symfony/yaml.git",
|
3918 |
+
"reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed"
|
3919 |
+
},
|
3920 |
+
"dist": {
|
3921 |
+
"type": "zip",
|
3922 |
+
"url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
|
3923 |
+
"reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
|
3924 |
+
"shasum": ""
|
3925 |
+
},
|
3926 |
+
"require": {
|
3927 |
+
"php": ">=5.5.9"
|
3928 |
+
},
|
3929 |
+
"require-dev": {
|
3930 |
+
"symfony/console": "~2.8|~3.0"
|
3931 |
+
},
|
3932 |
+
"suggest": {
|
3933 |
+
"symfony/console": "For validating YAML files using the lint command"
|
3934 |
+
},
|
3935 |
+
"time": "2017-07-23T12:43:26+00:00",
|
3936 |
+
"type": "library",
|
3937 |
+
"extra": {
|
3938 |
+
"branch-alias": {
|
3939 |
+
"dev-master": "3.3-dev"
|
3940 |
+
}
|
3941 |
+
},
|
3942 |
+
"installation-source": "dist",
|
3943 |
+
"autoload": {
|
3944 |
+
"psr-4": {
|
3945 |
+
"Symfony\\Component\\Yaml\\": ""
|
3946 |
+
},
|
3947 |
+
"exclude-from-classmap": [
|
3948 |
+
"/Tests/"
|
3949 |
+
]
|
3950 |
+
},
|
3951 |
+
"notification-url": "https://packagist.org/downloads/",
|
3952 |
+
"license": [
|
3953 |
+
"MIT"
|
3954 |
+
],
|
3955 |
+
"authors": [
|
3956 |
+
{
|
3957 |
+
"name": "Fabien Potencier",
|
3958 |
+
"email": "fabien@symfony.com"
|
3959 |
+
},
|
3960 |
+
{
|
3961 |
+
"name": "Symfony Community",
|
3962 |
+
"homepage": "https://symfony.com/contributors"
|
3963 |
+
}
|
3964 |
+
],
|
3965 |
+
"description": "Symfony Yaml Component",
|
3966 |
+
"homepage": "https://symfony.com",
|
3967 |
+
"support": {
|
3968 |
+
"source": "https://github.com/symfony/yaml/tree/3.3"
|
3969 |
+
},
|
3970 |
+
"install-path": "../symfony/yaml"
|
3971 |
+
},
|
3972 |
+
{
|
3973 |
+
"name": "theseer/tokenizer",
|
3974 |
+
"version": "1.1.3",
|
3975 |
+
"version_normalized": "1.1.3.0",
|
3976 |
+
"source": {
|
3977 |
+
"type": "git",
|
3978 |
+
"url": "https://github.com/theseer/tokenizer.git",
|
3979 |
+
"reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
|
3980 |
+
},
|
3981 |
+
"dist": {
|
3982 |
+
"type": "zip",
|
3983 |
+
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
|
3984 |
+
"reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
|
3985 |
+
"shasum": ""
|
3986 |
+
},
|
3987 |
+
"require": {
|
3988 |
+
"ext-dom": "*",
|
3989 |
+
"ext-tokenizer": "*",
|
3990 |
+
"ext-xmlwriter": "*",
|
3991 |
+
"php": "^7.0"
|
3992 |
+
},
|
3993 |
+
"time": "2019-06-13T22:48:21+00:00",
|
3994 |
+
"type": "library",
|
3995 |
+
"installation-source": "dist",
|
3996 |
+
"autoload": {
|
3997 |
+
"classmap": [
|
3998 |
+
"src/"
|
3999 |
+
]
|
4000 |
+
},
|
4001 |
+
"notification-url": "https://packagist.org/downloads/",
|
4002 |
+
"license": [
|
4003 |
+
"BSD-3-Clause"
|
4004 |
+
],
|
4005 |
+
"authors": [
|
4006 |
+
{
|
4007 |
+
"name": "Arne Blankerts",
|
4008 |
+
"email": "arne@blankerts.de",
|
4009 |
+
"role": "Developer"
|
4010 |
+
}
|
4011 |
+
],
|
4012 |
+
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
|
4013 |
+
"support": {
|
4014 |
+
"issues": "https://github.com/theseer/tokenizer/issues",
|
4015 |
+
"source": "https://github.com/theseer/tokenizer/tree/master"
|
4016 |
+
},
|
4017 |
+
"install-path": "../theseer/tokenizer"
|
4018 |
+
},
|
4019 |
+
{
|
4020 |
+
"name": "webmozart/assert",
|
4021 |
+
"version": "1.9.1",
|
4022 |
+
"version_normalized": "1.9.1.0",
|
4023 |
+
"source": {
|
4024 |
+
"type": "git",
|
4025 |
+
"url": "https://github.com/webmozart/assert.git",
|
4026 |
+
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
|
4027 |
+
},
|
4028 |
+
"dist": {
|
4029 |
+
"type": "zip",
|
4030 |
+
"url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
4031 |
+
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
4032 |
+
"shasum": ""
|
4033 |
+
},
|
4034 |
+
"require": {
|
4035 |
+
"php": "^5.3.3 || ^7.0 || ^8.0",
|
4036 |
+
"symfony/polyfill-ctype": "^1.8"
|
4037 |
+
},
|
4038 |
+
"conflict": {
|
4039 |
+
"phpstan/phpstan": "<0.12.20",
|
4040 |
+
"vimeo/psalm": "<3.9.1"
|
4041 |
+
},
|
4042 |
+
"require-dev": {
|
4043 |
+
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
|
4044 |
+
},
|
4045 |
+
"time": "2020-07-08T17:02:28+00:00",
|
4046 |
+
"type": "library",
|
4047 |
+
"installation-source": "dist",
|
4048 |
+
"autoload": {
|
4049 |
+
"psr-4": {
|
4050 |
+
"Webmozart\\Assert\\": "src/"
|
4051 |
+
}
|
4052 |
+
},
|
4053 |
+
"notification-url": "https://packagist.org/downloads/",
|
4054 |
+
"license": [
|
4055 |
+
"MIT"
|
4056 |
+
],
|
4057 |
+
"authors": [
|
4058 |
+
{
|
4059 |
+
"name": "Bernhard Schussek",
|
4060 |
+
"email": "bschussek@gmail.com"
|
4061 |
+
}
|
4062 |
+
],
|
4063 |
+
"description": "Assertions to validate method input/output with nice error messages.",
|
4064 |
+
"keywords": [
|
4065 |
+
"assert",
|
4066 |
+
"check",
|
4067 |
+
"validate"
|
4068 |
+
],
|
4069 |
+
"support": {
|
4070 |
+
"issues": "https://github.com/webmozart/assert/issues",
|
4071 |
+
"source": "https://github.com/webmozart/assert/tree/master"
|
4072 |
+
},
|
4073 |
+
"install-path": "../webmozart/assert"
|
4074 |
+
},
|
4075 |
+
{
|
4076 |
+
"name": "wp-coding-standards/wpcs",
|
4077 |
+
"version": "2.3.0",
|
4078 |
+
"version_normalized": "2.3.0.0",
|
4079 |
+
"source": {
|
4080 |
+
"type": "git",
|
4081 |
+
"url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
|
4082 |
+
"reference": "7da1894633f168fe244afc6de00d141f27517b62"
|
4083 |
+
},
|
4084 |
+
"dist": {
|
4085 |
+
"type": "zip",
|
4086 |
+
"url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
|
4087 |
+
"reference": "7da1894633f168fe244afc6de00d141f27517b62",
|
4088 |
+
"shasum": ""
|
4089 |
+
},
|
4090 |
+
"require": {
|
4091 |
+
"php": ">=5.4",
|
4092 |
+
"squizlabs/php_codesniffer": "^3.3.1"
|
4093 |
+
},
|
4094 |
+
"require-dev": {
|
4095 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
|
4096 |
+
"phpcompatibility/php-compatibility": "^9.0",
|
4097 |
+
"phpcsstandards/phpcsdevtools": "^1.0",
|
4098 |
+
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
|
4099 |
+
},
|
4100 |
+
"suggest": {
|
4101 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
|
4102 |
+
},
|
4103 |
+
"time": "2020-05-13T23:57:56+00:00",
|
4104 |
+
"type": "phpcodesniffer-standard",
|
4105 |
+
"installation-source": "dist",
|
4106 |
+
"notification-url": "https://packagist.org/downloads/",
|
4107 |
+
"license": [
|
4108 |
+
"MIT"
|
4109 |
+
],
|
4110 |
+
"authors": [
|
4111 |
+
{
|
4112 |
+
"name": "Contributors",
|
4113 |
+
"homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
|
4114 |
+
}
|
4115 |
+
],
|
4116 |
+
"description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
|
4117 |
+
"keywords": [
|
4118 |
+
"phpcs",
|
4119 |
+
"standards",
|
4120 |
+
"wordpress"
|
4121 |
+
],
|
4122 |
+
"support": {
|
4123 |
+
"issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues",
|
4124 |
+
"source": "https://github.com/WordPress/WordPress-Coding-Standards",
|
4125 |
+
"wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki"
|
4126 |
+
},
|
4127 |
+
"install-path": "../wp-coding-standards/wpcs"
|
4128 |
+
},
|
4129 |
+
{
|
4130 |
+
"name": "xrstf/composer-php52",
|
4131 |
+
"version": "v1.0.20",
|
4132 |
+
"version_normalized": "1.0.20.0",
|
4133 |
+
"source": {
|
4134 |
+
"type": "git",
|
4135 |
+
"url": "https://github.com/composer-php52/composer-php52.git",
|
4136 |
+
"reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
|
4137 |
+
},
|
4138 |
+
"dist": {
|
4139 |
+
"type": "zip",
|
4140 |
+
"url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
|
4141 |
+
"reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
|
4142 |
+
"shasum": ""
|
4143 |
+
},
|
4144 |
+
"time": "2016-04-16T21:52:24+00:00",
|
4145 |
+
"type": "library",
|
4146 |
+
"extra": {
|
4147 |
+
"branch-alias": {
|
4148 |
+
"dev-default": "1.x-dev"
|
4149 |
+
}
|
4150 |
+
},
|
4151 |
+
"installation-source": "dist",
|
4152 |
+
"autoload": {
|
4153 |
+
"psr-0": {
|
4154 |
+
"xrstf\\Composer52": "lib/"
|
4155 |
+
}
|
4156 |
+
},
|
4157 |
+
"notification-url": "https://packagist.org/downloads/",
|
4158 |
+
"license": [
|
4159 |
+
"MIT"
|
4160 |
+
],
|
4161 |
+
"support": {
|
4162 |
+
"issues": "https://github.com/composer-php52/composer-php52/issues",
|
4163 |
+
"source": "https://github.com/composer-php52/composer-php52"
|
4164 |
+
},
|
4165 |
+
"install-path": "../xrstf/composer-php52"
|
4166 |
+
}
|
4167 |
+
],
|
4168 |
+
"dev": true,
|
4169 |
+
"dev-package-names": [
|
4170 |
+
"10up/wp_mock",
|
4171 |
+
"antecedent/patchwork",
|
4172 |
+
"doctrine/instantiator",
|
4173 |
+
"guzzlehttp/guzzle",
|
4174 |
+
"guzzlehttp/promises",
|
4175 |
+
"guzzlehttp/psr7",
|
4176 |
+
"hamcrest/hamcrest-php",
|
4177 |
+
"lucatume/args",
|
4178 |
+
"lucatume/function-mocker",
|
4179 |
+
"mockery/mockery",
|
4180 |
+
"myclabs/deep-copy",
|
4181 |
+
"paragonie/random_compat",
|
4182 |
+
"phar-io/manifest",
|
4183 |
+
"phar-io/version",
|
4184 |
+
"php-coveralls/php-coveralls",
|
4185 |
+
"phpcompatibility/php-compatibility",
|
4186 |
+
"phpcompatibility/phpcompatibility-paragonie",
|
4187 |
+
"phpcompatibility/phpcompatibility-wp",
|
4188 |
+
"phpdocumentor/reflection-common",
|
4189 |
+
"phpdocumentor/reflection-docblock",
|
4190 |
+
"phpdocumentor/type-resolver",
|
4191 |
+
"phpspec/prophecy",
|
4192 |
+
"phpunit/php-code-coverage",
|
4193 |
+
"phpunit/php-file-iterator",
|
4194 |
+
"phpunit/php-text-template",
|
4195 |
+
"phpunit/php-timer",
|
4196 |
+
"phpunit/php-token-stream",
|
4197 |
+
"phpunit/phpunit",
|
4198 |
+
"phpunit/phpunit-mock-objects",
|
4199 |
+
"psr/http-message",
|
4200 |
+
"psr/log",
|
4201 |
+
"ralouphie/getallheaders",
|
4202 |
+
"roave/security-advisories",
|
4203 |
+
"sebastian/code-unit-reverse-lookup",
|
4204 |
+
"sebastian/comparator",
|
4205 |
+
"sebastian/diff",
|
4206 |
+
"sebastian/environment",
|
4207 |
+
"sebastian/exporter",
|
4208 |
+
"sebastian/global-state",
|
4209 |
+
"sebastian/object-enumerator",
|
4210 |
+
"sebastian/object-reflector",
|
4211 |
+
"sebastian/recursion-context",
|
4212 |
+
"sebastian/resource-operations",
|
4213 |
+
"sebastian/version",
|
4214 |
+
"squizlabs/php_codesniffer",
|
4215 |
+
"symfony/config",
|
4216 |
+
"symfony/console",
|
4217 |
+
"symfony/debug",
|
4218 |
+
"symfony/filesystem",
|
4219 |
+
"symfony/polyfill-ctype",
|
4220 |
+
"symfony/polyfill-intl-idn",
|
4221 |
+
"symfony/polyfill-intl-normalizer",
|
4222 |
+
"symfony/polyfill-mbstring",
|
4223 |
+
"symfony/polyfill-php70",
|
4224 |
+
"symfony/polyfill-php72",
|
4225 |
+
"symfony/stopwatch",
|
4226 |
+
"symfony/yaml",
|
4227 |
+
"theseer/tokenizer",
|
4228 |
+
"webmozart/assert",
|
4229 |
+
"wp-coding-standards/wpcs",
|
4230 |
+
"xrstf/composer-php52"
|
4231 |
+
]
|
4232 |
+
}
|
vendor/composer/installed.php
ADDED
@@ -0,0 +1,624 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php return array (
|
2 |
+
'root' =>
|
3 |
+
array (
|
4 |
+
'pretty_version' => '4.5.1',
|
5 |
+
'version' => '4.5.1.0',
|
6 |
+
'aliases' =>
|
7 |
+
array (
|
8 |
+
),
|
9 |
+
'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
|
10 |
+
'name' => 'mihdan/cyr2lat',
|
11 |
+
),
|
12 |
+
'versions' =>
|
13 |
+
array (
|
14 |
+
'10up/wp_mock' =>
|
15 |
+
array (
|
16 |
+
'pretty_version' => '0.3.0',
|
17 |
+
'version' => '0.3.0.0',
|
18 |
+
'aliases' =>
|
19 |
+
array (
|
20 |
+
),
|
21 |
+
'reference' => '64956557e98ee4c8c56cd1e396e822adb4673714',
|
22 |
+
),
|
23 |
+
'antecedent/patchwork' =>
|
24 |
+
array (
|
25 |
+
'pretty_version' => '2.1.12',
|
26 |
+
'version' => '2.1.12.0',
|
27 |
+
'aliases' =>
|
28 |
+
array (
|
29 |
+
),
|
30 |
+
'reference' => 'b98e046dd4c0acc34a0846604f06f6111654d9ea',
|
31 |
+
),
|
32 |
+
'composer/installers' =>
|
33 |
+
array (
|
34 |
+
'pretty_version' => 'v1.9.0',
|
35 |
+
'version' => '1.9.0.0',
|
36 |
+
'aliases' =>
|
37 |
+
array (
|
38 |
+
),
|
39 |
+
'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
|
40 |
+
),
|
41 |
+
'cordoval/hamcrest-php' =>
|
42 |
+
array (
|
43 |
+
'replaced' =>
|
44 |
+
array (
|
45 |
+
0 => '*',
|
46 |
+
),
|
47 |
+
),
|
48 |
+
'davedevelopment/hamcrest-php' =>
|
49 |
+
array (
|
50 |
+
'replaced' =>
|
51 |
+
array (
|
52 |
+
0 => '*',
|
53 |
+
),
|
54 |
+
),
|
55 |
+
'doctrine/instantiator' =>
|
56 |
+
array (
|
57 |
+
'pretty_version' => '1.0.5',
|
58 |
+
'version' => '1.0.5.0',
|
59 |
+
'aliases' =>
|
60 |
+
array (
|
61 |
+
),
|
62 |
+
'reference' => '8e884e78f9f0eb1329e445619e04456e64d8051d',
|
63 |
+
),
|
64 |
+
'guzzlehttp/guzzle' =>
|
65 |
+
array (
|
66 |
+
'pretty_version' => '6.5.5',
|
67 |
+
'version' => '6.5.5.0',
|
68 |
+
'aliases' =>
|
69 |
+
array (
|
70 |
+
),
|
71 |
+
'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
|
72 |
+
),
|
73 |
+
'guzzlehttp/promises' =>
|
74 |
+
array (
|
75 |
+
'pretty_version' => '1.4.0',
|
76 |
+
'version' => '1.4.0.0',
|
77 |
+
'aliases' =>
|
78 |
+
array (
|
79 |
+
),
|
80 |
+
'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
|
81 |
+
),
|
82 |
+
'guzzlehttp/psr7' =>
|
83 |
+
array (
|
84 |
+
'pretty_version' => '1.7.0',
|
85 |
+
'version' => '1.7.0.0',
|
86 |
+
'aliases' =>
|
87 |
+
array (
|
88 |
+
),
|
89 |
+
'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
|
90 |
+
),
|
91 |
+
'hamcrest/hamcrest-php' =>
|
92 |
+
array (
|
93 |
+
'pretty_version' => 'v2.0.1',
|
94 |
+
'version' => '2.0.1.0',
|
95 |
+
'aliases' =>
|
96 |
+
array (
|
97 |
+
),
|
98 |
+
'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3',
|
99 |
+
),
|
100 |
+
'kodova/hamcrest-php' =>
|
101 |
+
array (
|
102 |
+
'replaced' =>
|
103 |
+
array (
|
104 |
+
0 => '*',
|
105 |
+
),
|
106 |
+
),
|
107 |
+
'lucatume/args' =>
|
108 |
+
array (
|
109 |
+
'pretty_version' => '1.0.1.1',
|
110 |
+
'version' => '1.0.1.1',
|
111 |
+
'aliases' =>
|
112 |
+
array (
|
113 |
+
),
|
114 |
+
'reference' => '9ab69f5c995813b2dfbb067100ada500ee2893e8',
|
115 |
+
),
|
116 |
+
'lucatume/function-mocker' =>
|
117 |
+
array (
|
118 |
+
'pretty_version' => 'dev-test-on-windows',
|
119 |
+
'version' => 'dev-test-on-windows',
|
120 |
+
'aliases' =>
|
121 |
+
array (
|
122 |
+
),
|
123 |
+
'reference' => '0383729be9af2f1dba5e553b29c899f10aba8932',
|
124 |
+
),
|
125 |
+
'mihdan/cyr2lat' =>
|
126 |
+
array (
|
127 |
+
'pretty_version' => '4.5.1',
|
128 |
+
'version' => '4.5.1.0',
|
129 |
+
'aliases' =>
|
130 |
+
array (
|
131 |
+
),
|
132 |
+
'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
|
133 |
+
),
|
134 |
+
'mockery/mockery' =>
|
135 |
+
array (
|
136 |
+
'pretty_version' => '1.3.3',
|
137 |
+
'version' => '1.3.3.0',
|
138 |
+
'aliases' =>
|
139 |
+
array (
|
140 |
+
),
|
141 |
+
'reference' => '60fa2f67f6e4d3634bb4a45ff3171fa52215800d',
|
142 |
+
),
|
143 |
+
'myclabs/deep-copy' =>
|
144 |
+
array (
|
145 |
+
'pretty_version' => '1.7.0',
|
146 |
+
'version' => '1.7.0.0',
|
147 |
+
'aliases' =>
|
148 |
+
array (
|
149 |
+
),
|
150 |
+
'reference' => '3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e',
|
151 |
+
),
|
152 |
+
'paragonie/random_compat' =>
|
153 |
+
array (
|
154 |
+
'pretty_version' => 'v9.99.100',
|
155 |
+
'version' => '9.99.100.0',
|
156 |
+
'aliases' =>
|
157 |
+
array (
|
158 |
+
),
|
159 |
+
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
160 |
+
),
|
161 |
+
'phar-io/manifest' =>
|
162 |
+
array (
|
163 |
+
'pretty_version' => '1.0.1',
|
164 |
+
'version' => '1.0.1.0',
|
165 |
+
'aliases' =>
|
166 |
+
array (
|
167 |
+
),
|
168 |
+
'reference' => '2df402786ab5368a0169091f61a7c1e0eb6852d0',
|
169 |
+
),
|
170 |
+
'phar-io/version' =>
|
171 |
+
array (
|
172 |
+
'pretty_version' => '1.0.1',
|
173 |
+
'version' => '1.0.1.0',
|
174 |
+
'aliases' =>
|
175 |
+
array (
|
176 |
+
),
|
177 |
+
'reference' => 'a70c0ced4be299a63d32fa96d9281d03e94041df',
|
178 |
+
),
|
179 |
+
'php-coveralls/php-coveralls' =>
|
180 |
+
array (
|
181 |
+
'pretty_version' => 'v2.4.2',
|
182 |
+
'version' => '2.4.2.0',
|
183 |
+
'aliases' =>
|
184 |
+
array (
|
185 |
+
),
|
186 |
+
'reference' => '8a33ae229da63a0bd22dadae1512af663ce5e559',
|
187 |
+
),
|
188 |
+
'phpcompatibility/php-compatibility' =>
|
189 |
+
array (
|
190 |
+
'pretty_version' => '9.3.5',
|
191 |
+
'version' => '9.3.5.0',
|
192 |
+
'aliases' =>
|
193 |
+
array (
|
194 |
+
),
|
195 |
+
'reference' => '9fb324479acf6f39452e0655d2429cc0d3914243',
|
196 |
+
),
|
197 |
+
'phpcompatibility/phpcompatibility-paragonie' =>
|
198 |
+
array (
|
199 |
+
'pretty_version' => '1.3.0',
|
200 |
+
'version' => '1.3.0.0',
|
201 |
+
'aliases' =>
|
202 |
+
array (
|
203 |
+
),
|
204 |
+
'reference' => 'b862bc32f7e860d0b164b199bd995e690b4b191c',
|
205 |
+
),
|
206 |
+
'phpcompatibility/phpcompatibility-wp' =>
|
207 |
+
array (
|
208 |
+
'pretty_version' => '2.1.0',
|
209 |
+
'version' => '2.1.0.0',
|
210 |
+
'aliases' =>
|
211 |
+
array (
|
212 |
+
),
|
213 |
+
'reference' => '41bef18ba688af638b7310666db28e1ea9158b2f',
|
214 |
+
),
|
215 |
+
'phpdocumentor/reflection-common' =>
|
216 |
+
array (
|
217 |
+
'pretty_version' => '1.0.1',
|
218 |
+
'version' => '1.0.1.0',
|
219 |
+
'aliases' =>
|
220 |
+
array (
|
221 |
+
),
|
222 |
+
'reference' => '21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6',
|
223 |
+
),
|
224 |
+
'phpdocumentor/reflection-docblock' =>
|
225 |
+
array (
|
226 |
+
'pretty_version' => '4.3.4',
|
227 |
+
'version' => '4.3.4.0',
|
228 |
+
'aliases' =>
|
229 |
+
array (
|
230 |
+
),
|
231 |
+
'reference' => 'da3fd972d6bafd628114f7e7e036f45944b62e9c',
|
232 |
+
),
|
233 |
+
'phpdocumentor/type-resolver' =>
|
234 |
+
array (
|
235 |
+
'pretty_version' => '0.5.1',
|
236 |
+
'version' => '0.5.1.0',
|
237 |
+
'aliases' =>
|
238 |
+
array (
|
239 |
+
),
|
240 |
+
'reference' => 'cf842904952e64e703800d094cdf34e715a8a3ae',
|
241 |
+
),
|
242 |
+
'phpspec/prophecy' =>
|
243 |
+
array (
|
244 |
+
'pretty_version' => 'v1.10.3',
|
245 |
+
'version' => '1.10.3.0',
|
246 |
+
'aliases' =>
|
247 |
+
array (
|
248 |
+
),
|
249 |
+
'reference' => '451c3cd1418cf640de218914901e51b064abb093',
|
250 |
+
),
|
251 |
+
'phpunit/php-code-coverage' =>
|
252 |
+
array (
|
253 |
+
'pretty_version' => '5.3.2',
|
254 |
+
'version' => '5.3.2.0',
|
255 |
+
'aliases' =>
|
256 |
+
array (
|
257 |
+
),
|
258 |
+
'reference' => 'c89677919c5dd6d3b3852f230a663118762218ac',
|
259 |
+
),
|
260 |
+
'phpunit/php-file-iterator' =>
|
261 |
+
array (
|
262 |
+
'pretty_version' => '1.4.5',
|
263 |
+
'version' => '1.4.5.0',
|
264 |
+
'aliases' =>
|
265 |
+
array (
|
266 |
+
),
|
267 |
+
'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
|
268 |
+
),
|
269 |
+
'phpunit/php-text-template' =>
|
270 |
+
array (
|
271 |
+
'pretty_version' => '1.2.1',
|
272 |
+
'version' => '1.2.1.0',
|
273 |
+
'aliases' =>
|
274 |
+
array (
|
275 |
+
),
|
276 |
+
'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
|
277 |
+
),
|
278 |
+
'phpunit/php-timer' =>
|
279 |
+
array (
|
280 |
+
'pretty_version' => '1.0.9',
|
281 |
+
'version' => '1.0.9.0',
|
282 |
+
'aliases' =>
|
283 |
+
array (
|
284 |
+
),
|
285 |
+
'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
|
286 |
+
),
|
287 |
+
'phpunit/php-token-stream' =>
|
288 |
+
array (
|
289 |
+
'pretty_version' => '2.0.2',
|
290 |
+
'version' => '2.0.2.0',
|
291 |
+
'aliases' =>
|
292 |
+
array (
|
293 |
+
),
|
294 |
+
'reference' => '791198a2c6254db10131eecfe8c06670700904db',
|
295 |
+
),
|
296 |
+
'phpunit/phpunit' =>
|
297 |
+
array (
|
298 |
+
'pretty_version' => '6.5.14',
|
299 |
+
'version' => '6.5.14.0',
|
300 |
+
'aliases' =>
|
301 |
+
array (
|
302 |
+
),
|
303 |
+
'reference' => 'bac23fe7ff13dbdb461481f706f0e9fe746334b7',
|
304 |
+
),
|
305 |
+
'phpunit/phpunit-mock-objects' =>
|
306 |
+
array (
|
307 |
+
'pretty_version' => '5.0.10',
|
308 |
+
'version' => '5.0.10.0',
|
309 |
+
'aliases' =>
|
310 |
+
array (
|
311 |
+
),
|
312 |
+
'reference' => 'cd1cf05c553ecfec36b170070573e540b67d3f1f',
|
313 |
+
),
|
314 |
+
'psr/http-message' =>
|
315 |
+
array (
|
316 |
+
'pretty_version' => '1.0.1',
|
317 |
+
'version' => '1.0.1.0',
|
318 |
+
'aliases' =>
|
319 |
+
array (
|
320 |
+
),
|
321 |
+
'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
|
322 |
+
),
|
323 |
+
'psr/http-message-implementation' =>
|
324 |
+
array (
|
325 |
+
'provided' =>
|
326 |
+
array (
|
327 |
+
0 => '1.0',
|
328 |
+
),
|
329 |
+
),
|
330 |
+
'psr/log' =>
|
331 |
+
array (
|
332 |
+
'pretty_version' => '1.1.3',
|
333 |
+
'version' => '1.1.3.0',
|
334 |
+
'aliases' =>
|
335 |
+
array (
|
336 |
+
),
|
337 |
+
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
|
338 |
+
),
|
339 |
+
'ralouphie/getallheaders' =>
|
340 |
+
array (
|
341 |
+
'pretty_version' => '3.0.3',
|
342 |
+
'version' => '3.0.3.0',
|
343 |
+
'aliases' =>
|
344 |
+
array (
|
345 |
+
),
|
346 |
+
'reference' => '120b605dfeb996808c31b6477290a714d356e822',
|
347 |
+
),
|
348 |
+
'roave/security-advisories' =>
|
349 |
+
array (
|
350 |
+
'pretty_version' => 'dev-master',
|
351 |
+
'version' => 'dev-master',
|
352 |
+
'aliases' =>
|
353 |
+
array (
|
354 |
+
),
|
355 |
+
'reference' => '676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6',
|
356 |
+
),
|
357 |
+
'roundcube/plugin-installer' =>
|
358 |
+
array (
|
359 |
+
'replaced' =>
|
360 |
+
array (
|
361 |
+
0 => '*',
|
362 |
+
),
|
363 |
+
),
|
364 |
+
'sebastian/code-unit-reverse-lookup' =>
|
365 |
+
array (
|
366 |
+
'pretty_version' => '1.0.2',
|
367 |
+
'version' => '1.0.2.0',
|
368 |
+
'aliases' =>
|
369 |
+
array (
|
370 |
+
),
|
371 |
+
'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
|
372 |
+
),
|
373 |
+
'sebastian/comparator' =>
|
374 |
+
array (
|
375 |
+
'pretty_version' => '2.1.3',
|
376 |
+
'version' => '2.1.3.0',
|
377 |
+
'aliases' =>
|
378 |
+
array (
|
379 |
+
),
|
380 |
+
'reference' => '34369daee48eafb2651bea869b4b15d75ccc35f9',
|
381 |
+
),
|
382 |
+
'sebastian/diff' =>
|
383 |
+
array (
|
384 |
+
'pretty_version' => '2.0.1',
|
385 |
+
'version' => '2.0.1.0',
|
386 |
+
'aliases' =>
|
387 |
+
array (
|
388 |
+
),
|
389 |
+
'reference' => '347c1d8b49c5c3ee30c7040ea6fc446790e6bddd',
|
390 |
+
),
|
391 |
+
'sebastian/environment' =>
|
392 |
+
array (
|
393 |
+
'pretty_version' => '3.1.0',
|
394 |
+
'version' => '3.1.0.0',
|
395 |
+
'aliases' =>
|
396 |
+
array (
|
397 |
+
),
|
398 |
+
'reference' => 'cd0871b3975fb7fc44d11314fd1ee20925fce4f5',
|
399 |
+
),
|
400 |
+
'sebastian/exporter' =>
|
401 |
+
array (
|
402 |
+
'pretty_version' => '3.1.3',
|
403 |
+
'version' => '3.1.3.0',
|
404 |
+
'aliases' =>
|
405 |
+
array (
|
406 |
+
),
|
407 |
+
'reference' => '6b853149eab67d4da22291d36f5b0631c0fd856e',
|
408 |
+
),
|
409 |
+
'sebastian/global-state' =>
|
410 |
+
array (
|
411 |
+
'pretty_version' => '2.0.0',
|
412 |
+
'version' => '2.0.0.0',
|
413 |
+
'aliases' =>
|
414 |
+
array (
|
415 |
+
),
|
416 |
+
'reference' => 'e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4',
|
417 |
+
),
|
418 |
+
'sebastian/object-enumerator' =>
|
419 |
+
array (
|
420 |
+
'pretty_version' => '3.0.4',
|
421 |
+
'version' => '3.0.4.0',
|
422 |
+
'aliases' =>
|
423 |
+
array (
|
424 |
+
),
|
425 |
+
'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2',
|
426 |
+
),
|
427 |
+
'sebastian/object-reflector' =>
|
428 |
+
array (
|
429 |
+
'pretty_version' => '1.1.2',
|
430 |
+
'version' => '1.1.2.0',
|
431 |
+
'aliases' =>
|
432 |
+
array (
|
433 |
+
),
|
434 |
+
'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d',
|
435 |
+
),
|
436 |
+
'sebastian/recursion-context' =>
|
437 |
+
array (
|
438 |
+
'pretty_version' => '3.0.1',
|
439 |
+
'version' => '3.0.1.0',
|
440 |
+
'aliases' =>
|
441 |
+
array (
|
442 |
+
),
|
443 |
+
'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb',
|
444 |
+
),
|
445 |
+
'sebastian/resource-operations' =>
|
446 |
+
array (
|
447 |
+
'pretty_version' => '1.0.0',
|
448 |
+
'version' => '1.0.0.0',
|
449 |
+
'aliases' =>
|
450 |
+
array (
|
451 |
+
),
|
452 |
+
'reference' => 'ce990bb21759f94aeafd30209e8cfcdfa8bc3f52',
|
453 |
+
),
|
454 |
+
'sebastian/version' =>
|
455 |
+
array (
|
456 |
+
'pretty_version' => '2.0.1',
|
457 |
+
'version' => '2.0.1.0',
|
458 |
+
'aliases' =>
|
459 |
+
array (
|
460 |
+
),
|
461 |
+
'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
|
462 |
+
),
|
463 |
+
'shama/baton' =>
|
464 |
+
array (
|
465 |
+
'replaced' =>
|
466 |
+
array (
|
467 |
+
0 => '*',
|
468 |
+
),
|
469 |
+
),
|
470 |
+
'squizlabs/php_codesniffer' =>
|
471 |
+
array (
|
472 |
+
'pretty_version' => '3.5.8',
|
473 |
+
'version' => '3.5.8.0',
|
474 |
+
'aliases' =>
|
475 |
+
array (
|
476 |
+
),
|
477 |
+
'reference' => '9d583721a7157ee997f235f327de038e7ea6dac4',
|
478 |
+
),
|
479 |
+
'symfony/config' =>
|
480 |
+
array (
|
481 |
+
'pretty_version' => 'v3.3.6',
|
482 |
+
'version' => '3.3.6.0',
|
483 |
+
'aliases' =>
|
484 |
+
array (
|
485 |
+
),
|
486 |
+
'reference' => '54ee12b0dd60f294132cabae6f5da9573d2e5297',
|
487 |
+
),
|
488 |
+
'symfony/console' =>
|
489 |
+
array (
|
490 |
+
'pretty_version' => 'v3.3.6',
|
491 |
+
'version' => '3.3.6.0',
|
492 |
+
'aliases' =>
|
493 |
+
array (
|
494 |
+
),
|
495 |
+
'reference' => 'b0878233cb5c4391347e5495089c7af11b8e6201',
|
496 |
+
),
|
497 |
+
'symfony/debug' =>
|
498 |
+
array (
|
499 |
+
'pretty_version' => 'v3.3.6',
|
500 |
+
'version' => '3.3.6.0',
|
501 |
+
'aliases' =>
|
502 |
+
array (
|
503 |
+
),
|
504 |
+
'reference' => '7c13ae8ce1e2adbbd574fc39de7be498e1284e13',
|
505 |
+
),
|
506 |
+
'symfony/filesystem' =>
|
507 |
+
array (
|
508 |
+
'pretty_version' => 'v3.3.6',
|
509 |
+
'version' => '3.3.6.0',
|
510 |
+
'aliases' =>
|
511 |
+
array (
|
512 |
+
),
|
513 |
+
'reference' => '427987eb4eed764c3b6e38d52a0f87989e010676',
|
514 |
+
),
|
515 |
+
'symfony/polyfill-ctype' =>
|
516 |
+
array (
|
517 |
+
'pretty_version' => 'v1.19.0',
|
518 |
+
'version' => '1.19.0.0',
|
519 |
+
'aliases' =>
|
520 |
+
array (
|
521 |
+
),
|
522 |
+
'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
|
523 |
+
),
|
524 |
+
'symfony/polyfill-intl-idn' =>
|
525 |
+
array (
|
526 |
+
'pretty_version' => 'v1.19.0',
|
527 |
+
'version' => '1.19.0.0',
|
528 |
+
'aliases' =>
|
529 |
+
array (
|
530 |
+
),
|
531 |
+
'reference' => '4ad5115c0f5d5172a9fe8147675ec6de266d8826',
|
532 |
+
),
|
533 |
+
'symfony/polyfill-intl-normalizer' =>
|
534 |
+
array (
|
535 |
+
'pretty_version' => 'v1.19.0',
|
536 |
+
'version' => '1.19.0.0',
|
537 |
+
'aliases' =>
|
538 |
+
array (
|
539 |
+
),
|
540 |
+
'reference' => '8db0ae7936b42feb370840cf24de1a144fb0ef27',
|
541 |
+
),
|
542 |
+
'symfony/polyfill-mbstring' =>
|
543 |
+
array (
|
544 |
+
'pretty_version' => 'v1.13.1',
|
545 |
+
'version' => '1.13.1.0',
|
546 |
+
'aliases' =>
|
547 |
+
array (
|
548 |
+
),
|
549 |
+
'reference' => '7b4aab9743c30be783b73de055d24a39cf4b954f',
|
550 |
+
),
|
551 |
+
'symfony/polyfill-php70' =>
|
552 |
+
array (
|
553 |
+
'pretty_version' => 'v1.19.0',
|
554 |
+
'version' => '1.19.0.0',
|
555 |
+
'aliases' =>
|
556 |
+
array (
|
557 |
+
),
|
558 |
+
'reference' => '3fe414077251a81a1b15b1c709faf5c2fbae3d4e',
|
559 |
+
),
|
560 |
+
'symfony/polyfill-php72' =>
|
561 |
+
array (
|
562 |
+
'pretty_version' => 'v1.19.0',
|
563 |
+
'version' => '1.19.0.0',
|
564 |
+
'aliases' =>
|
565 |
+
array (
|
566 |
+
),
|
567 |
+
'reference' => 'beecef6b463b06954638f02378f52496cb84bacc',
|
568 |
+
),
|
569 |
+
'symfony/stopwatch' =>
|
570 |
+
array (
|
571 |
+
'pretty_version' => 'v3.3.6',
|
572 |
+
'version' => '3.3.6.0',
|
573 |
+
'aliases' =>
|
574 |
+
array (
|
575 |
+
),
|
576 |
+
'reference' => '602a15299dc01556013b07167d4f5d3a60e90d15',
|
577 |
+
),
|
578 |
+
'symfony/yaml' =>
|
579 |
+
array (
|
580 |
+
'pretty_version' => 'v3.3.6',
|
581 |
+
'version' => '3.3.6.0',
|
582 |
+
'aliases' =>
|
583 |
+
array (
|
584 |
+
),
|
585 |
+
'reference' => 'ddc23324e6cfe066f3dd34a37ff494fa80b617ed',
|
586 |
+
),
|
587 |
+
'theseer/tokenizer' =>
|
588 |
+
array (
|
589 |
+
'pretty_version' => '1.1.3',
|
590 |
+
'version' => '1.1.3.0',
|
591 |
+
'aliases' =>
|
592 |
+
array (
|
593 |
+
),
|
594 |
+
'reference' => '11336f6f84e16a720dae9d8e6ed5019efa85a0f9',
|
595 |
+
),
|
596 |
+
'webmozart/assert' =>
|
597 |
+
array (
|
598 |
+
'pretty_version' => '1.9.1',
|
599 |
+
'version' => '1.9.1.0',
|
600 |
+
'aliases' =>
|
601 |
+
array (
|
602 |
+
),
|
603 |
+
'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
|
604 |
+
),
|
605 |
+
'wp-coding-standards/wpcs' =>
|
606 |
+
array (
|
607 |
+
'pretty_version' => '2.3.0',
|
608 |
+
'version' => '2.3.0.0',
|
609 |
+
'aliases' =>
|
610 |
+
array (
|
611 |
+
),
|
612 |
+
'reference' => '7da1894633f168fe244afc6de00d141f27517b62',
|
613 |
+
),
|
614 |
+
'xrstf/composer-php52' =>
|
615 |
+
array (
|
616 |
+
'pretty_version' => 'v1.0.20',
|
617 |
+
'version' => '1.0.20.0',
|
618 |
+
'aliases' =>
|
619 |
+
array (
|
620 |
+
),
|
621 |
+
'reference' => 'bd41459d5e27df8d33057842b32377c39e97a5a8',
|
622 |
+
),
|
623 |
+
),
|
624 |
+
);
|
vendor/doctrine/instantiator/.scrutinizer.yml
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
before_commands:
|
2 |
+
- "composer install --prefer-source"
|
3 |
+
|
4 |
+
tools:
|
5 |
+
external_code_coverage:
|
6 |
+
timeout: 600
|
7 |
+
php_code_coverage:
|
8 |
+
enabled: true
|
9 |
+
test_command: ./vendor/bin/phpunit
|
10 |
+
php_code_sniffer:
|
11 |
+
enabled: true
|
12 |
+
config:
|
13 |
+
standard: PSR2
|
14 |
+
filter:
|
15 |
+
paths: ["src/*", "tests/*"]
|
16 |
+
php_cpd:
|
17 |
+
enabled: true
|
18 |
+
excluded_dirs: ["build/*", "tests", "vendor"]
|
19 |
+
php_cs_fixer:
|
20 |
+
enabled: true
|
21 |
+
config:
|
22 |
+
level: all
|
23 |
+
filter:
|
24 |
+
paths: ["src/*", "tests/*"]
|
25 |
+
php_loc:
|
26 |
+
enabled: true
|
27 |
+
excluded_dirs: ["build", "tests", "vendor"]
|
28 |
+
php_mess_detector:
|
29 |
+
enabled: true
|
30 |
+
config:
|
31 |
+
ruleset: phpmd.xml.dist
|
32 |
+
design_rules: { eval_expression: false }
|
33 |
+
filter:
|
34 |
+
paths: ["src/*"]
|
35 |
+
php_pdepend:
|
36 |
+
enabled: true
|
37 |
+
excluded_dirs: ["build", "tests", "vendor"]
|
38 |
+
php_analyzer:
|
39 |
+
enabled: true
|
40 |
+
filter:
|
41 |
+
paths: ["src/*", "tests/*"]
|
42 |
+
php_hhvm:
|
43 |
+
enabled: true
|
44 |
+
filter:
|
45 |
+
paths: ["src/*", "tests/*"]
|
46 |
+
sensiolabs_security_checker: true
|
vendor/doctrine/instantiator/.travis.install.sh
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/sh
|
2 |
+
set -x
|
3 |
+
if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then
|
4 |
+
curl -sS https://getcomposer.org/installer > composer-installer.php
|
5 |
+
hhvm composer-installer.php
|
6 |
+
hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source
|
7 |
+
elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then
|
8 |
+
composer self-update
|
9 |
+
composer update --prefer-source --no-dev
|
10 |
+
composer dump-autoload
|
11 |
+
else
|
12 |
+
composer self-update
|
13 |
+
composer update --prefer-source
|
14 |
+
fi
|
vendor/doctrine/instantiator/CONTRIBUTING.md
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Contributing
|
2 |
+
|
3 |
+
* Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
|
4 |
+
* The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
|
5 |
+
* Any contribution must provide tests for additional introduced conditions
|
6 |
+
* Any un-confirmed issue needs a failing test case before being accepted
|
7 |
+
* Pull requests must be sent from a new hotfix/feature branch, not from `master`.
|
8 |
+
|
9 |
+
## Installation
|
10 |
+
|
11 |
+
To install the project and run the tests, you need to clone it first:
|
12 |
+
|
13 |
+
```sh
|
14 |
+
$ git clone git://github.com/doctrine/instantiator.git
|
15 |
+
```
|
16 |
+
|
17 |
+
You will then need to run a composer installation:
|
18 |
+
|
19 |
+
```sh
|
20 |
+
$ cd Instantiator
|
21 |
+
$ curl -s https://getcomposer.org/installer | php
|
22 |
+
$ php composer.phar update
|
23 |
+
```
|
24 |
+
|
25 |
+
## Testing
|
26 |
+
|
27 |
+
The PHPUnit version to be used is the one installed as a dev- dependency via composer:
|
28 |
+
|
29 |
+
```sh
|
30 |
+
$ ./vendor/bin/phpunit
|
31 |
+
```
|
32 |
+
|
33 |
+
Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
|
34 |
+
won't be merged.
|
35 |
+
|
vendor/doctrine/instantiator/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2014 Doctrine Project
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4 |
+
this software and associated documentation files (the "Software"), to deal in
|
5 |
+
the Software without restriction, including without limitation the rights to
|
6 |
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
7 |
+
of the Software, and to permit persons to whom the Software is furnished to do
|
8 |
+
so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in all
|
11 |
+
copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19 |
+
SOFTWARE.
|
vendor/doctrine/instantiator/phpmd.xml.dist
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2 |
+
<ruleset
|
3 |
+
name="Instantiator rules"
|
4 |
+
xmlns="http://pmd.sf.net/ruleset/1.0.0"
|
5 |
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
6 |
+
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
|
7 |
+
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
|
8 |
+
>
|
9 |
+
<rule ref="rulesets/cleancode.xml">
|
10 |
+
<!-- static access is used for caching purposes -->
|
11 |
+
<exclude name="StaticAccess"/>
|
12 |
+
</rule>
|
13 |
+
<rule ref="rulesets/codesize.xml"/>
|
14 |
+
<rule ref="rulesets/controversial.xml"/>
|
15 |
+
<rule ref="rulesets/design.xml"/>
|
16 |
+
<rule ref="rulesets/naming.xml"/>
|
17 |
+
<rule ref="rulesets/unusedcode.xml"/>
|
18 |
+
<rule
|
19 |
+
name="NPathComplexity"
|
20 |
+
message="The {0} {1}() has an NPath complexity of {2}. The configured NPath complexity threshold is {3}."
|
21 |
+
class="PHP_PMD_Rule_Design_NpathComplexity"
|
22 |
+
>
|
23 |
+
<properties>
|
24 |
+
<property name="minimum" description="The npath reporting threshold" value="10"/>
|
25 |
+
</properties>
|
26 |
+
</rule>
|
27 |
+
</ruleset>
|
vendor/doctrine/instantiator/phpunit.xml.dist
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<phpunit
|
3 |
+
bootstrap="./vendor/autoload.php"
|
4 |
+
colors="true"
|
5 |
+
convertErrorsToExceptions="true"
|
6 |
+
convertNoticesToExceptions="true"
|
7 |
+
convertWarningsToExceptions="true"
|
8 |
+
verbose="true"
|
9 |
+
stopOnFailure="false"
|
10 |
+
processIsolation="false"
|
11 |
+
backupGlobals="false"
|
12 |
+
syntaxCheck="true"
|
13 |
+
>
|
14 |
+
<testsuite name="Doctrine\Instantiator tests">
|
15 |
+
<directory>./tests/DoctrineTest/InstantiatorTest</directory>
|
16 |
+
</testsuite>
|
17 |
+
<filter>
|
18 |
+
<whitelist addUncoveredFilesFromWhitelist="true">
|
19 |
+
<directory suffix=".php">./src</directory>
|
20 |
+
</whitelist>
|
21 |
+
</filter>
|
22 |
+
</phpunit>
|
vendor/guzzlehttp/guzzle/.php_cs
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$config = PhpCsFixer\Config::create()
|
4 |
+
->setRiskyAllowed(true)
|
5 |
+
->setRules([
|
6 |
+
'@PSR2' => true,
|
7 |
+
'array_syntax' => ['syntax' => 'short'],
|
8 |
+
'declare_strict_types' => false,
|
9 |
+
'concat_space' => ['spacing'=>'one'],
|
10 |
+
'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
|
11 |
+
'ordered_imports' => true,
|
12 |
+
// 'phpdoc_align' => ['align'=>'vertical'],
|
13 |
+
// 'native_function_invocation' => true,
|
14 |
+
])
|
15 |
+
->setFinder(
|
16 |
+
PhpCsFixer\Finder::create()
|
17 |
+
->in(__DIR__.'/src')
|
18 |
+
->in(__DIR__.'/tests')
|
19 |
+
->name('*.php')
|
20 |
+
)
|
21 |
+
;
|
22 |
+
|
23 |
+
return $config;
|
vendor/guzzlehttp/guzzle/Dockerfile
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM composer:latest as setup
|
2 |
+
|
3 |
+
RUN mkdir /guzzle
|
4 |
+
|
5 |
+
WORKDIR /guzzle
|
6 |
+
|
7 |
+
RUN set -xe \
|
8 |
+
&& composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <mark.sagikazar@gmail.com>" --no-interaction \
|
9 |
+
&& composer require guzzlehttp/guzzle
|
10 |
+
|
11 |
+
|
12 |
+
FROM php:7.3
|
13 |
+
|
14 |
+
RUN mkdir /guzzle
|
15 |
+
|
16 |
+
WORKDIR /guzzle
|
17 |
+
|
18 |
+
COPY --from=setup /guzzle /guzzle
|
vendor/guzzlehttp/guzzle/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is
|
8 |
+
furnished to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in
|
11 |
+
all copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
vendor/guzzlehttp/guzzle/UPGRADING.md
ADDED
@@ -0,0 +1,1203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Guzzle Upgrade Guide
|
2 |
+
====================
|
3 |
+
|
4 |
+
5.0 to 6.0
|
5 |
+
----------
|
6 |
+
|
7 |
+
Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
|
8 |
+
Due to the fact that these messages are immutable, this prompted a refactoring
|
9 |
+
of Guzzle to use a middleware based system rather than an event system. Any
|
10 |
+
HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
|
11 |
+
updated to work with the new immutable PSR-7 request and response objects. Any
|
12 |
+
event listeners or subscribers need to be updated to become middleware
|
13 |
+
functions that wrap handlers (or are injected into a
|
14 |
+
`GuzzleHttp\HandlerStack`).
|
15 |
+
|
16 |
+
- Removed `GuzzleHttp\BatchResults`
|
17 |
+
- Removed `GuzzleHttp\Collection`
|
18 |
+
- Removed `GuzzleHttp\HasDataTrait`
|
19 |
+
- Removed `GuzzleHttp\ToArrayInterface`
|
20 |
+
- The `guzzlehttp/streams` dependency has been removed. Stream functionality
|
21 |
+
is now present in the `GuzzleHttp\Psr7` namespace provided by the
|
22 |
+
`guzzlehttp/psr7` package.
|
23 |
+
- Guzzle no longer uses ReactPHP promises and now uses the
|
24 |
+
`guzzlehttp/promises` library. We use a custom promise library for three
|
25 |
+
significant reasons:
|
26 |
+
1. React promises (at the time of writing this) are recursive. Promise
|
27 |
+
chaining and promise resolution will eventually blow the stack. Guzzle
|
28 |
+
promises are not recursive as they use a sort of trampolining technique.
|
29 |
+
Note: there has been movement in the React project to modify promises to
|
30 |
+
no longer utilize recursion.
|
31 |
+
2. Guzzle needs to have the ability to synchronously block on a promise to
|
32 |
+
wait for a result. Guzzle promises allows this functionality (and does
|
33 |
+
not require the use of recursion).
|
34 |
+
3. Because we need to be able to wait on a result, doing so using React
|
35 |
+
promises requires wrapping react promises with RingPHP futures. This
|
36 |
+
overhead is no longer needed, reducing stack sizes, reducing complexity,
|
37 |
+
and improving performance.
|
38 |
+
- `GuzzleHttp\Mimetypes` has been moved to a function in
|
39 |
+
`GuzzleHttp\Psr7\mimetype_from_extension` and
|
40 |
+
`GuzzleHttp\Psr7\mimetype_from_filename`.
|
41 |
+
- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query
|
42 |
+
strings must now be passed into request objects as strings, or provided to
|
43 |
+
the `query` request option when creating requests with clients. The `query`
|
44 |
+
option uses PHP's `http_build_query` to convert an array to a string. If you
|
45 |
+
need a different serialization technique, you will need to pass the query
|
46 |
+
string in as a string. There are a couple helper functions that will make
|
47 |
+
working with query strings easier: `GuzzleHttp\Psr7\parse_query` and
|
48 |
+
`GuzzleHttp\Psr7\build_query`.
|
49 |
+
- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware
|
50 |
+
system based on PSR-7, using RingPHP and it's middleware system as well adds
|
51 |
+
more complexity than the benefits it provides. All HTTP handlers that were
|
52 |
+
present in RingPHP have been modified to work directly with PSR-7 messages
|
53 |
+
and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces
|
54 |
+
complexity in Guzzle, removes a dependency, and improves performance. RingPHP
|
55 |
+
will be maintained for Guzzle 5 support, but will no longer be a part of
|
56 |
+
Guzzle 6.
|
57 |
+
- As Guzzle now uses a middleware based systems the event system and RingPHP
|
58 |
+
integration has been removed. Note: while the event system has been removed,
|
59 |
+
it is possible to add your own type of event system that is powered by the
|
60 |
+
middleware system.
|
61 |
+
- Removed the `Event` namespace.
|
62 |
+
- Removed the `Subscriber` namespace.
|
63 |
+
- Removed `Transaction` class
|
64 |
+
- Removed `RequestFsm`
|
65 |
+
- Removed `RingBridge`
|
66 |
+
- `GuzzleHttp\Subscriber\Cookie` is now provided by
|
67 |
+
`GuzzleHttp\Middleware::cookies`
|
68 |
+
- `GuzzleHttp\Subscriber\HttpError` is now provided by
|
69 |
+
`GuzzleHttp\Middleware::httpError`
|
70 |
+
- `GuzzleHttp\Subscriber\History` is now provided by
|
71 |
+
`GuzzleHttp\Middleware::history`
|
72 |
+
- `GuzzleHttp\Subscriber\Mock` is now provided by
|
73 |
+
`GuzzleHttp\Handler\MockHandler`
|
74 |
+
- `GuzzleHttp\Subscriber\Prepare` is now provided by
|
75 |
+
`GuzzleHttp\PrepareBodyMiddleware`
|
76 |
+
- `GuzzleHttp\Subscriber\Redirect` is now provided by
|
77 |
+
`GuzzleHttp\RedirectMiddleware`
|
78 |
+
- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in
|
79 |
+
`GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone.
|
80 |
+
- Static functions in `GuzzleHttp\Utils` have been moved to namespaced
|
81 |
+
functions under the `GuzzleHttp` namespace. This requires either a Composer
|
82 |
+
based autoloader or you to include functions.php.
|
83 |
+
- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to
|
84 |
+
`GuzzleHttp\ClientInterface::getConfig`.
|
85 |
+
- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed.
|
86 |
+
- The `json` and `xml` methods of response objects has been removed. With the
|
87 |
+
migration to strictly adhering to PSR-7 as the interface for Guzzle messages,
|
88 |
+
adding methods to message interfaces would actually require Guzzle messages
|
89 |
+
to extend from PSR-7 messages rather then work with them directly.
|
90 |
+
|
91 |
+
## Migrating to middleware
|
92 |
+
|
93 |
+
The change to PSR-7 unfortunately required significant refactoring to Guzzle
|
94 |
+
due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event
|
95 |
+
system from plugins. The event system relied on mutability of HTTP messages and
|
96 |
+
side effects in order to work. With immutable messages, you have to change your
|
97 |
+
workflow to become more about either returning a value (e.g., functional
|
98 |
+
middlewares) or setting a value on an object. Guzzle v6 has chosen the
|
99 |
+
functional middleware approach.
|
100 |
+
|
101 |
+
Instead of using the event system to listen for things like the `before` event,
|
102 |
+
you now create a stack based middleware function that intercepts a request on
|
103 |
+
the way in and the promise of the response on the way out. This is a much
|
104 |
+
simpler and more predictable approach than the event system and works nicely
|
105 |
+
with PSR-7 middleware. Due to the use of promises, the middleware system is
|
106 |
+
also asynchronous.
|
107 |
+
|
108 |
+
v5:
|
109 |
+
|
110 |
+
```php
|
111 |
+
use GuzzleHttp\Event\BeforeEvent;
|
112 |
+
$client = new GuzzleHttp\Client();
|
113 |
+
// Get the emitter and listen to the before event.
|
114 |
+
$client->getEmitter()->on('before', function (BeforeEvent $e) {
|
115 |
+
// Guzzle v5 events relied on mutation
|
116 |
+
$e->getRequest()->setHeader('X-Foo', 'Bar');
|
117 |
+
});
|
118 |
+
```
|
119 |
+
|
120 |
+
v6:
|
121 |
+
|
122 |
+
In v6, you can modify the request before it is sent using the `mapRequest`
|
123 |
+
middleware. The idiomatic way in v6 to modify the request/response lifecycle is
|
124 |
+
to setup a handler middleware stack up front and inject the handler into a
|
125 |
+
client.
|
126 |
+
|
127 |
+
```php
|
128 |
+
use GuzzleHttp\Middleware;
|
129 |
+
// Create a handler stack that has all of the default middlewares attached
|
130 |
+
$handler = GuzzleHttp\HandlerStack::create();
|
131 |
+
// Push the handler onto the handler stack
|
132 |
+
$handler->push(Middleware::mapRequest(function (RequestInterface $request) {
|
133 |
+
// Notice that we have to return a request object
|
134 |
+
return $request->withHeader('X-Foo', 'Bar');
|
135 |
+
}));
|
136 |
+
// Inject the handler into the client
|
137 |
+
$client = new GuzzleHttp\Client(['handler' => $handler]);
|
138 |
+
```
|
139 |
+
|
140 |
+
## POST Requests
|
141 |
+
|
142 |
+
This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params)
|
143 |
+
and `multipart` request options. `form_params` is an associative array of
|
144 |
+
strings or array of strings and is used to serialize an
|
145 |
+
`application/x-www-form-urlencoded` POST request. The
|
146 |
+
[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart)
|
147 |
+
option is now used to send a multipart/form-data POST request.
|
148 |
+
|
149 |
+
`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add
|
150 |
+
POST files to a multipart/form-data request.
|
151 |
+
|
152 |
+
The `body` option no longer accepts an array to send POST requests. Please use
|
153 |
+
`multipart` or `form_params` instead.
|
154 |
+
|
155 |
+
The `base_url` option has been renamed to `base_uri`.
|
156 |
+
|
157 |
+
4.x to 5.0
|
158 |
+
----------
|
159 |
+
|
160 |
+
## Rewritten Adapter Layer
|
161 |
+
|
162 |
+
Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send
|
163 |
+
HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor
|
164 |
+
is still supported, but it has now been renamed to `handler`. Instead of
|
165 |
+
passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
|
166 |
+
`callable` that follows the RingPHP specification.
|
167 |
+
|
168 |
+
## Removed Fluent Interfaces
|
169 |
+
|
170 |
+
[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
|
171 |
+
from the following classes:
|
172 |
+
|
173 |
+
- `GuzzleHttp\Collection`
|
174 |
+
- `GuzzleHttp\Url`
|
175 |
+
- `GuzzleHttp\Query`
|
176 |
+
- `GuzzleHttp\Post\PostBody`
|
177 |
+
- `GuzzleHttp\Cookie\SetCookie`
|
178 |
+
|
179 |
+
## Removed functions.php
|
180 |
+
|
181 |
+
Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following
|
182 |
+
functions can be used as replacements.
|
183 |
+
|
184 |
+
- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode`
|
185 |
+
- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath`
|
186 |
+
- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path`
|
187 |
+
- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however,
|
188 |
+
deprecated in favor of using `GuzzleHttp\Pool::batch()`.
|
189 |
+
|
190 |
+
The "procedural" global client has been removed with no replacement (e.g.,
|
191 |
+
`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client`
|
192 |
+
object as a replacement.
|
193 |
+
|
194 |
+
## `throwImmediately` has been removed
|
195 |
+
|
196 |
+
The concept of "throwImmediately" has been removed from exceptions and error
|
197 |
+
events. This control mechanism was used to stop a transfer of concurrent
|
198 |
+
requests from completing. This can now be handled by throwing the exception or
|
199 |
+
by cancelling a pool of requests or each outstanding future request
|
200 |
+
individually.
|
201 |
+
|
202 |
+
## headers event has been removed
|
203 |
+
|
204 |
+
Removed the "headers" event. This event was only useful for changing the
|
205 |
+
body a response once the headers of the response were known. You can implement
|
206 |
+
a similar behavior in a number of ways. One example might be to use a
|
207 |
+
FnStream that has access to the transaction being sent. For example, when the
|
208 |
+
first byte is written, you could check if the response headers match your
|
209 |
+
expectations, and if so, change the actual stream body that is being
|
210 |
+
written to.
|
211 |
+
|
212 |
+
## Updates to HTTP Messages
|
213 |
+
|
214 |
+
Removed the `asArray` parameter from
|
215 |
+
`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
|
216 |
+
value as an array, then use the newly added `getHeaderAsArray()` method of
|
217 |
+
`MessageInterface`. This change makes the Guzzle interfaces compatible with
|
218 |
+
the PSR-7 interfaces.
|
219 |
+
|
220 |
+
3.x to 4.0
|
221 |
+
----------
|
222 |
+
|
223 |
+
## Overarching changes:
|
224 |
+
|
225 |
+
- Now requires PHP 5.4 or greater.
|
226 |
+
- No longer requires cURL to send requests.
|
227 |
+
- Guzzle no longer wraps every exception it throws. Only exceptions that are
|
228 |
+
recoverable are now wrapped by Guzzle.
|
229 |
+
- Various namespaces have been removed or renamed.
|
230 |
+
- No longer requiring the Symfony EventDispatcher. A custom event dispatcher
|
231 |
+
based on the Symfony EventDispatcher is
|
232 |
+
now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant
|
233 |
+
speed and functionality improvements).
|
234 |
+
|
235 |
+
Changes per Guzzle 3.x namespace are described below.
|
236 |
+
|
237 |
+
## Batch
|
238 |
+
|
239 |
+
The `Guzzle\Batch` namespace has been removed. This is best left to
|
240 |
+
third-parties to implement on top of Guzzle's core HTTP library.
|
241 |
+
|
242 |
+
## Cache
|
243 |
+
|
244 |
+
The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement
|
245 |
+
has been implemented yet, but hoping to utilize a PSR cache interface).
|
246 |
+
|
247 |
+
## Common
|
248 |
+
|
249 |
+
- Removed all of the wrapped exceptions. It's better to use the standard PHP
|
250 |
+
library for unrecoverable exceptions.
|
251 |
+
- `FromConfigInterface` has been removed.
|
252 |
+
- `Guzzle\Common\Version` has been removed. The VERSION constant can be found
|
253 |
+
at `GuzzleHttp\ClientInterface::VERSION`.
|
254 |
+
|
255 |
+
### Collection
|
256 |
+
|
257 |
+
- `getAll` has been removed. Use `toArray` to convert a collection to an array.
|
258 |
+
- `inject` has been removed.
|
259 |
+
- `keySearch` has been removed.
|
260 |
+
- `getPath` no longer supports wildcard expressions. Use something better like
|
261 |
+
JMESPath for this.
|
262 |
+
- `setPath` now supports appending to an existing array via the `[]` notation.
|
263 |
+
|
264 |
+
### Events
|
265 |
+
|
266 |
+
Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses
|
267 |
+
`GuzzleHttp\Event\Emitter`.
|
268 |
+
|
269 |
+
- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by
|
270 |
+
`GuzzleHttp\Event\EmitterInterface`.
|
271 |
+
- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by
|
272 |
+
`GuzzleHttp\Event\Emitter`.
|
273 |
+
- `Symfony\Component\EventDispatcher\Event` is replaced by
|
274 |
+
`GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in
|
275 |
+
`GuzzleHttp\Event\EventInterface`.
|
276 |
+
- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and
|
277 |
+
`HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the
|
278 |
+
event emitter of a request, client, etc. now uses the `getEmitter` method
|
279 |
+
rather than the `getDispatcher` method.
|
280 |
+
|
281 |
+
#### Emitter
|
282 |
+
|
283 |
+
- Use the `once()` method to add a listener that automatically removes itself
|
284 |
+
the first time it is invoked.
|
285 |
+
- Use the `listeners()` method to retrieve a list of event listeners rather than
|
286 |
+
the `getListeners()` method.
|
287 |
+
- Use `emit()` instead of `dispatch()` to emit an event from an emitter.
|
288 |
+
- Use `attach()` instead of `addSubscriber()` and `detach()` instead of
|
289 |
+
`removeSubscriber()`.
|
290 |
+
|
291 |
+
```php
|
292 |
+
$mock = new Mock();
|
293 |
+
// 3.x
|
294 |
+
$request->getEventDispatcher()->addSubscriber($mock);
|
295 |
+
$request->getEventDispatcher()->removeSubscriber($mock);
|
296 |
+
// 4.x
|
297 |
+
$request->getEmitter()->attach($mock);
|
298 |
+
$request->getEmitter()->detach($mock);
|
299 |
+
```
|
300 |
+
|
301 |
+
Use the `on()` method to add a listener rather than the `addListener()` method.
|
302 |
+
|
303 |
+
```php
|
304 |
+
// 3.x
|
305 |
+
$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } );
|
306 |
+
// 4.x
|
307 |
+
$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } );
|
308 |
+
```
|
309 |
+
|
310 |
+
## Http
|
311 |
+
|
312 |
+
### General changes
|
313 |
+
|
314 |
+
- The cacert.pem certificate has been moved to `src/cacert.pem`.
|
315 |
+
- Added the concept of adapters that are used to transfer requests over the
|
316 |
+
wire.
|
317 |
+
- Simplified the event system.
|
318 |
+
- Sending requests in parallel is still possible, but batching is no longer a
|
319 |
+
concept of the HTTP layer. Instead, you must use the `complete` and `error`
|
320 |
+
events to asynchronously manage parallel request transfers.
|
321 |
+
- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`.
|
322 |
+
- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`.
|
323 |
+
- QueryAggregators have been rewritten so that they are simply callable
|
324 |
+
functions.
|
325 |
+
- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in
|
326 |
+
`functions.php` for an easy to use static client instance.
|
327 |
+
- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from
|
328 |
+
`GuzzleHttp\Exception\TransferException`.
|
329 |
+
|
330 |
+
### Client
|
331 |
+
|
332 |
+
Calling methods like `get()`, `post()`, `head()`, etc. no longer create and
|
333 |
+
return a request, but rather creates a request, sends the request, and returns
|
334 |
+
the response.
|
335 |
+
|
336 |
+
```php
|
337 |
+
// 3.0
|
338 |
+
$request = $client->get('/');
|
339 |
+
$response = $request->send();
|
340 |
+
|
341 |
+
// 4.0
|
342 |
+
$response = $client->get('/');
|
343 |
+
|
344 |
+
// or, to mirror the previous behavior
|
345 |
+
$request = $client->createRequest('GET', '/');
|
346 |
+
$response = $client->send($request);
|
347 |
+
```
|
348 |
+
|
349 |
+
`GuzzleHttp\ClientInterface` has changed.
|
350 |
+
|
351 |
+
- The `send` method no longer accepts more than one request. Use `sendAll` to
|
352 |
+
send multiple requests in parallel.
|
353 |
+
- `setUserAgent()` has been removed. Use a default request option instead. You
|
354 |
+
could, for example, do something like:
|
355 |
+
`$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`.
|
356 |
+
- `setSslVerification()` has been removed. Use default request options instead,
|
357 |
+
like `$client->setConfig('defaults/verify', true)`.
|
358 |
+
|
359 |
+
`GuzzleHttp\Client` has changed.
|
360 |
+
|
361 |
+
- The constructor now accepts only an associative array. You can include a
|
362 |
+
`base_url` string or array to use a URI template as the base URL of a client.
|
363 |
+
You can also specify a `defaults` key that is an associative array of default
|
364 |
+
request options. You can pass an `adapter` to use a custom adapter,
|
365 |
+
`batch_adapter` to use a custom adapter for sending requests in parallel, or
|
366 |
+
a `message_factory` to change the factory used to create HTTP requests and
|
367 |
+
responses.
|
368 |
+
- The client no longer emits a `client.create_request` event.
|
369 |
+
- Creating requests with a client no longer automatically utilize a URI
|
370 |
+
template. You must pass an array into a creational method (e.g.,
|
371 |
+
`createRequest`, `get`, `put`, etc.) in order to expand a URI template.
|
372 |
+
|
373 |
+
### Messages
|
374 |
+
|
375 |
+
Messages no longer have references to their counterparts (i.e., a request no
|
376 |
+
longer has a reference to it's response, and a response no loger has a
|
377 |
+
reference to its request). This association is now managed through a
|
378 |
+
`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to
|
379 |
+
these transaction objects using request events that are emitted over the
|
380 |
+
lifecycle of a request.
|
381 |
+
|
382 |
+
#### Requests with a body
|
383 |
+
|
384 |
+
- `GuzzleHttp\Message\EntityEnclosingRequest` and
|
385 |
+
`GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The
|
386 |
+
separation between requests that contain a body and requests that do not
|
387 |
+
contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface`
|
388 |
+
handles both use cases.
|
389 |
+
- Any method that previously accepts a `GuzzleHttp\Response` object now accept a
|
390 |
+
`GuzzleHttp\Message\ResponseInterface`.
|
391 |
+
- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to
|
392 |
+
`GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create
|
393 |
+
both requests and responses and is implemented in
|
394 |
+
`GuzzleHttp\Message\MessageFactory`.
|
395 |
+
- POST field and file methods have been removed from the request object. You
|
396 |
+
must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface`
|
397 |
+
to control the format of a POST body. Requests that are created using a
|
398 |
+
standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use
|
399 |
+
a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if
|
400 |
+
the method is POST and no body is provided.
|
401 |
+
|
402 |
+
```php
|
403 |
+
$request = $client->createRequest('POST', '/');
|
404 |
+
$request->getBody()->setField('foo', 'bar');
|
405 |
+
$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r')));
|
406 |
+
```
|
407 |
+
|
408 |
+
#### Headers
|
409 |
+
|
410 |
+
- `GuzzleHttp\Message\Header` has been removed. Header values are now simply
|
411 |
+
represented by an array of values or as a string. Header values are returned
|
412 |
+
as a string by default when retrieving a header value from a message. You can
|
413 |
+
pass an optional argument of `true` to retrieve a header value as an array
|
414 |
+
of strings instead of a single concatenated string.
|
415 |
+
- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to
|
416 |
+
`GuzzleHttp\Post`. This interface has been simplified and now allows the
|
417 |
+
addition of arbitrary headers.
|
418 |
+
- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most
|
419 |
+
of the custom headers are now handled separately in specific
|
420 |
+
subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has
|
421 |
+
been updated to properly handle headers that contain parameters (like the
|
422 |
+
`Link` header).
|
423 |
+
|
424 |
+
#### Responses
|
425 |
+
|
426 |
+
- `GuzzleHttp\Message\Response::getInfo()` and
|
427 |
+
`GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event
|
428 |
+
system to retrieve this type of information.
|
429 |
+
- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed.
|
430 |
+
- `GuzzleHttp\Message\Response::getMessage()` has been removed.
|
431 |
+
- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific
|
432 |
+
methods have moved to the CacheSubscriber.
|
433 |
+
- Header specific helper functions like `getContentMd5()` have been removed.
|
434 |
+
Just use `getHeader('Content-MD5')` instead.
|
435 |
+
- `GuzzleHttp\Message\Response::setRequest()` and
|
436 |
+
`GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event
|
437 |
+
system to work with request and response objects as a transaction.
|
438 |
+
- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the
|
439 |
+
Redirect subscriber instead.
|
440 |
+
- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have
|
441 |
+
been removed. Use `getStatusCode()` instead.
|
442 |
+
|
443 |
+
#### Streaming responses
|
444 |
+
|
445 |
+
Streaming requests can now be created by a client directly, returning a
|
446 |
+
`GuzzleHttp\Message\ResponseInterface` object that contains a body stream
|
447 |
+
referencing an open PHP HTTP stream.
|
448 |
+
|
449 |
+
```php
|
450 |
+
// 3.0
|
451 |
+
use Guzzle\Stream\PhpStreamRequestFactory;
|
452 |
+
$request = $client->get('/');
|
453 |
+
$factory = new PhpStreamRequestFactory();
|
454 |
+
$stream = $factory->fromRequest($request);
|
455 |
+
$data = $stream->read(1024);
|
456 |
+
|
457 |
+
// 4.0
|
458 |
+
$response = $client->get('/', ['stream' => true]);
|
459 |
+
// Read some data off of the stream in the response body
|
460 |
+
$data = $response->getBody()->read(1024);
|
461 |
+
```
|
462 |
+
|
463 |
+
#### Redirects
|
464 |
+
|
465 |
+
The `configureRedirects()` method has been removed in favor of a
|
466 |
+
`allow_redirects` request option.
|
467 |
+
|
468 |
+
```php
|
469 |
+
// Standard redirects with a default of a max of 5 redirects
|
470 |
+
$request = $client->createRequest('GET', '/', ['allow_redirects' => true]);
|
471 |
+
|
472 |
+
// Strict redirects with a custom number of redirects
|
473 |
+
$request = $client->createRequest('GET', '/', [
|
474 |
+
'allow_redirects' => ['max' => 5, 'strict' => true]
|
475 |
+
]);
|
476 |
+
```
|
477 |
+
|
478 |
+
#### EntityBody
|
479 |
+
|
480 |
+
EntityBody interfaces and classes have been removed or moved to
|
481 |
+
`GuzzleHttp\Stream`. All classes and interfaces that once required
|
482 |
+
`GuzzleHttp\EntityBodyInterface` now require
|
483 |
+
`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no
|
484 |
+
longer uses `GuzzleHttp\EntityBody::factory` but now uses
|
485 |
+
`GuzzleHttp\Stream\Stream::factory` or even better:
|
486 |
+
`GuzzleHttp\Stream\create()`.
|
487 |
+
|
488 |
+
- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface`
|
489 |
+
- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream`
|
490 |
+
- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream`
|
491 |
+
- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream`
|
492 |
+
- `Guzzle\Http\IoEmittyinEntityBody` has been removed.
|
493 |
+
|
494 |
+
#### Request lifecycle events
|
495 |
+
|
496 |
+
Requests previously submitted a large number of requests. The number of events
|
497 |
+
emitted over the lifecycle of a request has been significantly reduced to make
|
498 |
+
it easier to understand how to extend the behavior of a request. All events
|
499 |
+
emitted during the lifecycle of a request now emit a custom
|
500 |
+
`GuzzleHttp\Event\EventInterface` object that contains context providing
|
501 |
+
methods and a way in which to modify the transaction at that specific point in
|
502 |
+
time (e.g., intercept the request and set a response on the transaction).
|
503 |
+
|
504 |
+
- `request.before_send` has been renamed to `before` and now emits a
|
505 |
+
`GuzzleHttp\Event\BeforeEvent`
|
506 |
+
- `request.complete` has been renamed to `complete` and now emits a
|
507 |
+
`GuzzleHttp\Event\CompleteEvent`.
|
508 |
+
- `request.sent` has been removed. Use `complete`.
|
509 |
+
- `request.success` has been removed. Use `complete`.
|
510 |
+
- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`.
|
511 |
+
- `request.exception` has been removed. Use `error`.
|
512 |
+
- `request.receive.status_line` has been removed.
|
513 |
+
- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to
|
514 |
+
maintain a status update.
|
515 |
+
- `curl.callback.write` has been removed. Use a custom `StreamInterface` to
|
516 |
+
intercept writes.
|
517 |
+
- `curl.callback.read` has been removed. Use a custom `StreamInterface` to
|
518 |
+
intercept reads.
|
519 |
+
|
520 |
+
`headers` is a new event that is emitted after the response headers of a
|
521 |
+
request have been received before the body of the response is downloaded. This
|
522 |
+
event emits a `GuzzleHttp\Event\HeadersEvent`.
|
523 |
+
|
524 |
+
You can intercept a request and inject a response using the `intercept()` event
|
525 |
+
of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and
|
526 |
+
`GuzzleHttp\Event\ErrorEvent` event.
|
527 |
+
|
528 |
+
See: http://docs.guzzlephp.org/en/latest/events.html
|
529 |
+
|
530 |
+
## Inflection
|
531 |
+
|
532 |
+
The `Guzzle\Inflection` namespace has been removed. This is not a core concern
|
533 |
+
of Guzzle.
|
534 |
+
|
535 |
+
## Iterator
|
536 |
+
|
537 |
+
The `Guzzle\Iterator` namespace has been removed.
|
538 |
+
|
539 |
+
- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and
|
540 |
+
`Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of
|
541 |
+
Guzzle itself.
|
542 |
+
- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent
|
543 |
+
class is shipped with PHP 5.4.
|
544 |
+
- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because
|
545 |
+
it's easier to just wrap an iterator in a generator that maps values.
|
546 |
+
|
547 |
+
For a replacement of these iterators, see https://github.com/nikic/iter
|
548 |
+
|
549 |
+
## Log
|
550 |
+
|
551 |
+
The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The
|
552 |
+
`Guzzle\Log` namespace has been removed. Guzzle now relies on
|
553 |
+
`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been
|
554 |
+
moved to `GuzzleHttp\Subscriber\Log\Formatter`.
|
555 |
+
|
556 |
+
## Parser
|
557 |
+
|
558 |
+
The `Guzzle\Parser` namespace has been removed. This was previously used to
|
559 |
+
make it possible to plug in custom parsers for cookies, messages, URI
|
560 |
+
templates, and URLs; however, this level of complexity is not needed in Guzzle
|
561 |
+
so it has been removed.
|
562 |
+
|
563 |
+
- Cookie: Cookie parsing logic has been moved to
|
564 |
+
`GuzzleHttp\Cookie\SetCookie::fromString`.
|
565 |
+
- Message: Message parsing logic for both requests and responses has been moved
|
566 |
+
to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only
|
567 |
+
used in debugging or deserializing messages, so it doesn't make sense for
|
568 |
+
Guzzle as a library to add this level of complexity to parsing messages.
|
569 |
+
- UriTemplate: URI template parsing has been moved to
|
570 |
+
`GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL
|
571 |
+
URI template library if it is installed.
|
572 |
+
- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously
|
573 |
+
it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary,
|
574 |
+
then developers are free to subclass `GuzzleHttp\Url`.
|
575 |
+
|
576 |
+
## Plugin
|
577 |
+
|
578 |
+
The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`.
|
579 |
+
Several plugins are shipping with the core Guzzle library under this namespace.
|
580 |
+
|
581 |
+
- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar
|
582 |
+
code has moved to `GuzzleHttp\Cookie`.
|
583 |
+
- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin.
|
584 |
+
- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is
|
585 |
+
received.
|
586 |
+
- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin.
|
587 |
+
- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before
|
588 |
+
sending. This subscriber is attached to all requests by default.
|
589 |
+
- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin.
|
590 |
+
|
591 |
+
The following plugins have been removed (third-parties are free to re-implement
|
592 |
+
these if needed):
|
593 |
+
|
594 |
+
- `GuzzleHttp\Plugin\Async` has been removed.
|
595 |
+
- `GuzzleHttp\Plugin\CurlAuth` has been removed.
|
596 |
+
- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This
|
597 |
+
functionality should instead be implemented with event listeners that occur
|
598 |
+
after normal response parsing occurs in the guzzle/command package.
|
599 |
+
|
600 |
+
The following plugins are not part of the core Guzzle package, but are provided
|
601 |
+
in separate repositories:
|
602 |
+
|
603 |
+
- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler
|
604 |
+
to build custom retry policies using simple functions rather than various
|
605 |
+
chained classes. See: https://github.com/guzzle/retry-subscriber
|
606 |
+
- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to
|
607 |
+
https://github.com/guzzle/cache-subscriber
|
608 |
+
- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to
|
609 |
+
https://github.com/guzzle/log-subscriber
|
610 |
+
- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to
|
611 |
+
https://github.com/guzzle/message-integrity-subscriber
|
612 |
+
- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to
|
613 |
+
`GuzzleHttp\Subscriber\MockSubscriber`.
|
614 |
+
- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to
|
615 |
+
https://github.com/guzzle/oauth-subscriber
|
616 |
+
|
617 |
+
## Service
|
618 |
+
|
619 |
+
The service description layer of Guzzle has moved into two separate packages:
|
620 |
+
|
621 |
+
- http://github.com/guzzle/command Provides a high level abstraction over web
|
622 |
+
services by representing web service operations using commands.
|
623 |
+
- http://github.com/guzzle/guzzle-services Provides an implementation of
|
624 |
+
guzzle/command that provides request serialization and response parsing using
|
625 |
+
Guzzle service descriptions.
|
626 |
+
|
627 |
+
## Stream
|
628 |
+
|
629 |
+
Stream have moved to a separate package available at
|
630 |
+
https://github.com/guzzle/streams.
|
631 |
+
|
632 |
+
`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take
|
633 |
+
on the responsibilities of `Guzzle\Http\EntityBody` and
|
634 |
+
`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number
|
635 |
+
of methods implemented by the `StreamInterface` has been drastically reduced to
|
636 |
+
allow developers to more easily extend and decorate stream behavior.
|
637 |
+
|
638 |
+
## Removed methods from StreamInterface
|
639 |
+
|
640 |
+
- `getStream` and `setStream` have been removed to better encapsulate streams.
|
641 |
+
- `getMetadata` and `setMetadata` have been removed in favor of
|
642 |
+
`GuzzleHttp\Stream\MetadataStreamInterface`.
|
643 |
+
- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been
|
644 |
+
removed. This data is accessible when
|
645 |
+
using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`.
|
646 |
+
- `rewind` has been removed. Use `seek(0)` for a similar behavior.
|
647 |
+
|
648 |
+
## Renamed methods
|
649 |
+
|
650 |
+
- `detachStream` has been renamed to `detach`.
|
651 |
+
- `feof` has been renamed to `eof`.
|
652 |
+
- `ftell` has been renamed to `tell`.
|
653 |
+
- `readLine` has moved from an instance method to a static class method of
|
654 |
+
`GuzzleHttp\Stream\Stream`.
|
655 |
+
|
656 |
+
## Metadata streams
|
657 |
+
|
658 |
+
`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams
|
659 |
+
that contain additional metadata accessible via `getMetadata()`.
|
660 |
+
`GuzzleHttp\Stream\StreamInterface::getMetadata` and
|
661 |
+
`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed.
|
662 |
+
|
663 |
+
## StreamRequestFactory
|
664 |
+
|
665 |
+
The entire concept of the StreamRequestFactory has been removed. The way this
|
666 |
+
was used in Guzzle 3 broke the actual interface of sending streaming requests
|
667 |
+
(instead of getting back a Response, you got a StreamInterface). Streaming
|
668 |
+
PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`.
|
669 |
+
|
670 |
+
3.6 to 3.7
|
671 |
+
----------
|
672 |
+
|
673 |
+
### Deprecations
|
674 |
+
|
675 |
+
- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
|
676 |
+
|
677 |
+
```php
|
678 |
+
\Guzzle\Common\Version::$emitWarnings = true;
|
679 |
+
```
|
680 |
+
|
681 |
+
The following APIs and options have been marked as deprecated:
|
682 |
+
|
683 |
+
- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
|
684 |
+
- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
|
685 |
+
- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
|
686 |
+
- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
|
687 |
+
- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
|
688 |
+
- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
|
689 |
+
- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
|
690 |
+
- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
|
691 |
+
- Marked `Guzzle\Common\Collection::inject()` as deprecated.
|
692 |
+
- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
|
693 |
+
`$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
|
694 |
+
`$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
|
695 |
+
|
696 |
+
3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
|
697 |
+
request methods. When paired with a client's configuration settings, these options allow you to specify default settings
|
698 |
+
for various aspects of a request. Because these options make other previous configuration options redundant, several
|
699 |
+
configuration options and methods of a client and AbstractCommand have been deprecated.
|
700 |
+
|
701 |
+
- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
|
702 |
+
- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
|
703 |
+
- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
|
704 |
+
- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
|
705 |
+
|
706 |
+
$command = $client->getCommand('foo', array(
|
707 |
+
'command.headers' => array('Test' => '123'),
|
708 |
+
'command.response_body' => '/path/to/file'
|
709 |
+
));
|
710 |
+
|
711 |
+
// Should be changed to:
|
712 |
+
|
713 |
+
$command = $client->getCommand('foo', array(
|
714 |
+
'command.request_options' => array(
|
715 |
+
'headers' => array('Test' => '123'),
|
716 |
+
'save_as' => '/path/to/file'
|
717 |
+
)
|
718 |
+
));
|
719 |
+
|
720 |
+
### Interface changes
|
721 |
+
|
722 |
+
Additions and changes (you will need to update any implementations or subclasses you may have created):
|
723 |
+
|
724 |
+
- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
|
725 |
+
createRequest, head, delete, put, patch, post, options, prepareRequest
|
726 |
+
- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
|
727 |
+
- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
|
728 |
+
- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
|
729 |
+
`Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
|
730 |
+
resource, string, or EntityBody into the $options parameter to specify the download location of the response.
|
731 |
+
- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
|
732 |
+
default `array()`
|
733 |
+
- Added `Guzzle\Stream\StreamInterface::isRepeatable`
|
734 |
+
- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
|
735 |
+
|
736 |
+
The following methods were removed from interfaces. All of these methods are still available in the concrete classes
|
737 |
+
that implement them, but you should update your code to use alternative methods:
|
738 |
+
|
739 |
+
- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
|
740 |
+
`$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
|
741 |
+
`$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
|
742 |
+
`$client->setDefaultOption('headers/{header_name}', 'value')`. or
|
743 |
+
`$client->setDefaultOption('headers', array('header_name' => 'value'))`.
|
744 |
+
- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
|
745 |
+
- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
|
746 |
+
- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
|
747 |
+
- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
|
748 |
+
- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
|
749 |
+
- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
|
750 |
+
- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
|
751 |
+
|
752 |
+
### Cache plugin breaking changes
|
753 |
+
|
754 |
+
- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
|
755 |
+
CacheStorageInterface. These two objects and interface will be removed in a future version.
|
756 |
+
- Always setting X-cache headers on cached responses
|
757 |
+
- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
|
758 |
+
- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
|
759 |
+
$request, Response $response);`
|
760 |
+
- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
|
761 |
+
- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
|
762 |
+
- Added `CacheStorageInterface::purge($url)`
|
763 |
+
- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
|
764 |
+
$plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
|
765 |
+
CanCacheStrategyInterface $canCache = null)`
|
766 |
+
- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
|
767 |
+
|
768 |
+
3.5 to 3.6
|
769 |
+
----------
|
770 |
+
|
771 |
+
* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
|
772 |
+
* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
|
773 |
+
* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
|
774 |
+
For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
|
775 |
+
Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
|
776 |
+
* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
|
777 |
+
HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
|
778 |
+
CacheControl header implementation.
|
779 |
+
* Moved getLinks() from Response to just be used on a Link header object.
|
780 |
+
|
781 |
+
If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
|
782 |
+
HeaderInterface (e.g. toArray(), getAll(), etc.).
|
783 |
+
|
784 |
+
### Interface changes
|
785 |
+
|
786 |
+
* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
|
787 |
+
* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
|
788 |
+
* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
|
789 |
+
Guzzle\Http\Curl\RequestMediator
|
790 |
+
* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
|
791 |
+
* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
|
792 |
+
* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
|
793 |
+
|
794 |
+
### Removed deprecated functions
|
795 |
+
|
796 |
+
* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
|
797 |
+
* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
|
798 |
+
|
799 |
+
### Deprecations
|
800 |
+
|
801 |
+
* The ability to case-insensitively search for header values
|
802 |
+
* Guzzle\Http\Message\Header::hasExactHeader
|
803 |
+
* Guzzle\Http\Message\Header::raw. Use getAll()
|
804 |
+
* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
|
805 |
+
instead.
|
806 |
+
|
807 |
+
### Other changes
|
808 |
+
|
809 |
+
* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
|
810 |
+
* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
|
811 |
+
directly via interfaces
|
812 |
+
* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
|
813 |
+
but are a no-op until removed.
|
814 |
+
* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
|
815 |
+
`Guzzle\Service\Command\ArrayCommandInterface`.
|
816 |
+
* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
|
817 |
+
on a request while the request is still being transferred
|
818 |
+
* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
|
819 |
+
|
820 |
+
3.3 to 3.4
|
821 |
+
----------
|
822 |
+
|
823 |
+
Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
|
824 |
+
|
825 |
+
3.2 to 3.3
|
826 |
+
----------
|
827 |
+
|
828 |
+
### Response::getEtag() quote stripping removed
|
829 |
+
|
830 |
+
`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
|
831 |
+
|
832 |
+
### Removed `Guzzle\Http\Utils`
|
833 |
+
|
834 |
+
The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
|
835 |
+
|
836 |
+
### Stream wrapper and type
|
837 |
+
|
838 |
+
`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase.
|
839 |
+
|
840 |
+
### curl.emit_io became emit_io
|
841 |
+
|
842 |
+
Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
|
843 |
+
'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
|
844 |
+
|
845 |
+
3.1 to 3.2
|
846 |
+
----------
|
847 |
+
|
848 |
+
### CurlMulti is no longer reused globally
|
849 |
+
|
850 |
+
Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
|
851 |
+
to a single client can pollute requests dispatched from other clients.
|
852 |
+
|
853 |
+
If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
|
854 |
+
ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
|
855 |
+
created.
|
856 |
+
|
857 |
+
```php
|
858 |
+
$multi = new Guzzle\Http\Curl\CurlMulti();
|
859 |
+
$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
|
860 |
+
$builder->addListener('service_builder.create_client', function ($event) use ($multi) {
|
861 |
+
$event['client']->setCurlMulti($multi);
|
862 |
+
}
|
863 |
+
});
|
864 |
+
```
|
865 |
+
|
866 |
+
### No default path
|
867 |
+
|
868 |
+
URLs no longer have a default path value of '/' if no path was specified.
|
869 |
+
|
870 |
+
Before:
|
871 |
+
|
872 |
+
```php
|
873 |
+
$request = $client->get('http://www.foo.com');
|
874 |
+
echo $request->getUrl();
|
875 |
+
// >> http://www.foo.com/
|
876 |
+
```
|
877 |
+
|
878 |
+
After:
|
879 |
+
|
880 |
+
```php
|
881 |
+
$request = $client->get('http://www.foo.com');
|
882 |
+
echo $request->getUrl();
|
883 |
+
// >> http://www.foo.com
|
884 |
+
```
|
885 |
+
|
886 |
+
### Less verbose BadResponseException
|
887 |
+
|
888 |
+
The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
|
889 |
+
response information. You can, however, get access to the request and response object by calling `getRequest()` or
|
890 |
+
`getResponse()` on the exception object.
|
891 |
+
|
892 |
+
### Query parameter aggregation
|
893 |
+
|
894 |
+
Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
|
895 |
+
setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
|
896 |
+
responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
|
897 |
+
|
898 |
+
2.8 to 3.x
|
899 |
+
----------
|
900 |
+
|
901 |
+
### Guzzle\Service\Inspector
|
902 |
+
|
903 |
+
Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
|
904 |
+
|
905 |
+
**Before**
|
906 |
+
|
907 |
+
```php
|
908 |
+
use Guzzle\Service\Inspector;
|
909 |
+
|
910 |
+
class YourClient extends \Guzzle\Service\Client
|
911 |
+
{
|
912 |
+
public static function factory($config = array())
|
913 |
+
{
|
914 |
+
$default = array();
|
915 |
+
$required = array('base_url', 'username', 'api_key');
|
916 |
+
$config = Inspector::fromConfig($config, $default, $required);
|
917 |
+
|
918 |
+
$client = new self(
|
919 |
+
$config->get('base_url'),
|
920 |
+
$config->get('username'),
|
921 |
+
$config->get('api_key')
|
922 |
+
);
|
923 |
+
$client->setConfig($config);
|
924 |
+
|
925 |
+
$client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
|
926 |
+
|
927 |
+
return $client;
|
928 |
+
}
|
929 |
+
```
|
930 |
+
|
931 |
+
**After**
|
932 |
+
|
933 |
+
```php
|
934 |
+
use Guzzle\Common\Collection;
|
935 |
+
|
936 |
+
class YourClient extends \Guzzle\Service\Client
|
937 |
+
{
|
938 |
+
public static function factory($config = array())
|
939 |
+
{
|
940 |
+
$default = array();
|
941 |
+
$required = array('base_url', 'username', 'api_key');
|
942 |
+
$config = Collection::fromConfig($config, $default, $required);
|
943 |
+
|
944 |
+
$client = new self(
|
945 |
+
$config->get('base_url'),
|
946 |
+
$config->get('username'),
|
947 |
+
$config->get('api_key')
|
948 |
+
);
|
949 |
+
$client->setConfig($config);
|
950 |
+
|
951 |
+
$client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
|
952 |
+
|
953 |
+
return $client;
|
954 |
+
}
|
955 |
+
```
|
956 |
+
|
957 |
+
### Convert XML Service Descriptions to JSON
|
958 |
+
|
959 |
+
**Before**
|
960 |
+
|
961 |
+
```xml
|
962 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
963 |
+
<client>
|
964 |
+
<commands>
|
965 |
+
<!-- Groups -->
|
966 |
+
<command name="list_groups" method="GET" uri="groups.json">
|
967 |
+
<doc>Get a list of groups</doc>
|
968 |
+
</command>
|
969 |
+
<command name="search_groups" method="GET" uri='search.json?query="{{query}} type:group"'>
|
970 |
+
<doc>Uses a search query to get a list of groups</doc>
|
971 |
+
<param name="query" type="string" required="true" />
|
972 |
+
</command>
|
973 |
+
<command name="create_group" method="POST" uri="groups.json">
|
974 |
+
<doc>Create a group</doc>
|
975 |
+
<param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
|
976 |
+
<param name="Content-Type" location="header" static="application/json"/>
|
977 |
+
</command>
|
978 |
+
<command name="delete_group" method="DELETE" uri="groups/{{id}}.json">
|
979 |
+
<doc>Delete a group by ID</doc>
|
980 |
+
<param name="id" type="integer" required="true"/>
|
981 |
+
</command>
|
982 |
+
<command name="get_group" method="GET" uri="groups/{{id}}.json">
|
983 |
+
<param name="id" type="integer" required="true"/>
|
984 |
+
</command>
|
985 |
+
<command name="update_group" method="PUT" uri="groups/{{id}}.json">
|
986 |
+
<doc>Update a group</doc>
|
987 |
+
<param name="id" type="integer" required="true"/>
|
988 |
+
<param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
|
989 |
+
<param name="Content-Type" location="header" static="application/json"/>
|
990 |
+
</command>
|
991 |
+
</commands>
|
992 |
+
</client>
|
993 |
+
```
|
994 |
+
|
995 |
+
**After**
|
996 |
+
|
997 |
+
```json
|
998 |
+
{
|
999 |
+
"name": "Zendesk REST API v2",
|
1000 |
+
"apiVersion": "2012-12-31",
|
1001 |
+
"description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
|
1002 |
+
"operations": {
|
1003 |
+
"list_groups": {
|
1004 |
+
"httpMethod":"GET",
|
1005 |
+
"uri": "groups.json",
|
1006 |
+
"summary": "Get a list of groups"
|
1007 |
+
},
|
1008 |
+
"search_groups":{
|
1009 |
+
"httpMethod":"GET",
|
1010 |
+
"uri": "search.json?query=\"{query} type:group\"",
|
1011 |
+
"summary": "Uses a search query to get a list of groups",
|
1012 |
+
"parameters":{
|
1013 |
+
"query":{
|
1014 |
+
"location": "uri",
|
1015 |
+
"description":"Zendesk Search Query",
|
1016 |
+
"type": "string",
|
1017 |
+
"required": true
|
1018 |
+
}
|
1019 |
+
}
|
1020 |
+
},
|
1021 |
+
"create_group": {
|
1022 |
+
"httpMethod":"POST",
|
1023 |
+
"uri": "groups.json",
|
1024 |
+
"summary": "Create a group",
|
1025 |
+
"parameters":{
|
1026 |
+
"data": {
|
1027 |
+
"type": "array",
|
1028 |
+
"location": "body",
|
1029 |
+
"description":"Group JSON",
|
1030 |
+
"filters": "json_encode",
|
1031 |
+
"required": true
|
1032 |
+
},
|
1033 |
+
"Content-Type":{
|
1034 |
+
"type": "string",
|
1035 |
+
"location":"header",
|
1036 |
+
"static": "application/json"
|
1037 |
+
}
|
1038 |
+
}
|
1039 |
+
},
|
1040 |
+
"delete_group": {
|
1041 |
+
"httpMethod":"DELETE",
|
1042 |
+
"uri": "groups/{id}.json",
|
1043 |
+
"summary": "Delete a group",
|
1044 |
+
"parameters":{
|
1045 |
+
"id":{
|
1046 |
+
"location": "uri",
|
1047 |
+
"description":"Group to delete by ID",
|
1048 |
+
"type": "integer",
|
1049 |
+
"required": true
|
1050 |
+
}
|
1051 |
+
}
|
1052 |
+
},
|
1053 |
+
"get_group": {
|
1054 |
+
"httpMethod":"GET",
|
1055 |
+
"uri": "groups/{id}.json",
|
1056 |
+
"summary": "Get a ticket",
|
1057 |
+
"parameters":{
|
1058 |
+
"id":{
|
1059 |
+
"location": "uri",
|
1060 |
+
"description":"Group to get by ID",
|
1061 |
+
"type": "integer",
|
1062 |
+
"required": true
|
1063 |
+
}
|
1064 |
+
}
|
1065 |
+
},
|
1066 |
+
"update_group": {
|
1067 |
+
"httpMethod":"PUT",
|
1068 |
+
"uri": "groups/{id}.json",
|
1069 |
+
"summary": "Update a group",
|
1070 |
+
"parameters":{
|
1071 |
+
"id": {
|
1072 |
+
"location": "uri",
|
1073 |
+
"description":"Group to update by ID",
|
1074 |
+
"type": "integer",
|
1075 |
+
"required": true
|
1076 |
+
},
|
1077 |
+
"data": {
|
1078 |
+
"type": "array",
|
1079 |
+
"location": "body",
|
1080 |
+
"description":"Group JSON",
|
1081 |
+
"filters": "json_encode",
|
1082 |
+
"required": true
|
1083 |
+
},
|
1084 |
+
"Content-Type":{
|
1085 |
+
"type": "string",
|
1086 |
+
"location":"header",
|
1087 |
+
"static": "application/json"
|
1088 |
+
}
|
1089 |
+
}
|
1090 |
+
}
|
1091 |
+
}
|
1092 |
+
```
|
1093 |
+
|
1094 |
+
### Guzzle\Service\Description\ServiceDescription
|
1095 |
+
|
1096 |
+
Commands are now called Operations
|
1097 |
+
|
1098 |
+
**Before**
|
1099 |
+
|
1100 |
+
```php
|
1101 |
+
use Guzzle\Service\Description\ServiceDescription;
|
1102 |
+
|
1103 |
+
$sd = new ServiceDescription();
|
1104 |
+
$sd->getCommands(); // @returns ApiCommandInterface[]
|
1105 |
+
$sd->hasCommand($name);
|
1106 |
+
$sd->getCommand($name); // @returns ApiCommandInterface|null
|
1107 |
+
$sd->addCommand($command); // @param ApiCommandInterface $command
|
1108 |
+
```
|
1109 |
+
|
1110 |
+
**After**
|
1111 |
+
|
1112 |
+
```php
|
1113 |
+
use Guzzle\Service\Description\ServiceDescription;
|
1114 |
+
|
1115 |
+
$sd = new ServiceDescription();
|
1116 |
+
$sd->getOperations(); // @returns OperationInterface[]
|
1117 |
+
$sd->hasOperation($name);
|
1118 |
+
$sd->getOperation($name); // @returns OperationInterface|null
|
1119 |
+
$sd->addOperation($operation); // @param OperationInterface $operation
|
1120 |
+
```
|
1121 |
+
|
1122 |
+
### Guzzle\Common\Inflection\Inflector
|
1123 |
+
|
1124 |
+
Namespace is now `Guzzle\Inflection\Inflector`
|
1125 |
+
|
1126 |
+
### Guzzle\Http\Plugin
|
1127 |
+
|
1128 |
+
Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
|
1129 |
+
|
1130 |
+
### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
|
1131 |
+
|
1132 |
+
Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
|
1133 |
+
|
1134 |
+
**Before**
|
1135 |
+
|
1136 |
+
```php
|
1137 |
+
use Guzzle\Common\Log\ClosureLogAdapter;
|
1138 |
+
use Guzzle\Http\Plugin\LogPlugin;
|
1139 |
+
|
1140 |
+
/** @var \Guzzle\Http\Client */
|
1141 |
+
$client;
|
1142 |
+
|
1143 |
+
// $verbosity is an integer indicating desired message verbosity level
|
1144 |
+
$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
|
1145 |
+
```
|
1146 |
+
|
1147 |
+
**After**
|
1148 |
+
|
1149 |
+
```php
|
1150 |
+
use Guzzle\Log\ClosureLogAdapter;
|
1151 |
+
use Guzzle\Log\MessageFormatter;
|
1152 |
+
use Guzzle\Plugin\Log\LogPlugin;
|
1153 |
+
|
1154 |
+
/** @var \Guzzle\Http\Client */
|
1155 |
+
$client;
|
1156 |
+
|
1157 |
+
// $format is a string indicating desired message format -- @see MessageFormatter
|
1158 |
+
$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
|
1159 |
+
```
|
1160 |
+
|
1161 |
+
### Guzzle\Http\Plugin\CurlAuthPlugin
|
1162 |
+
|
1163 |
+
Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
|
1164 |
+
|
1165 |
+
### Guzzle\Http\Plugin\ExponentialBackoffPlugin
|
1166 |
+
|
1167 |
+
Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
|
1168 |
+
|
1169 |
+
**Before**
|
1170 |
+
|
1171 |
+
```php
|
1172 |
+
use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
|
1173 |
+
|
1174 |
+
$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
|
1175 |
+
ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
|
1176 |
+
));
|
1177 |
+
|
1178 |
+
$client->addSubscriber($backoffPlugin);
|
1179 |
+
```
|
1180 |
+
|
1181 |
+
**After**
|
1182 |
+
|
1183 |
+
```php
|
1184 |
+
use Guzzle\Plugin\Backoff\BackoffPlugin;
|
1185 |
+
use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
|
1186 |
+
|
1187 |
+
// Use convenient factory method instead -- see implementation for ideas of what
|
1188 |
+
// you can do with chaining backoff strategies
|
1189 |
+
$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
|
1190 |
+
HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
|
1191 |
+
));
|
1192 |
+
$client->addSubscriber($backoffPlugin);
|
1193 |
+
```
|
1194 |
+
|
1195 |
+
### Known Issues
|
1196 |
+
|
1197 |
+
#### [BUG] Accept-Encoding header behavior changed unintentionally.
|
1198 |
+
|
1199 |
+
(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
|
1200 |
+
|
1201 |
+
In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
|
1202 |
+
properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
|
1203 |
+
See issue #217 for a workaround, or use a version containing the fix.
|
vendor/guzzlehttp/promises/.php_cs.dist
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$config = PhpCsFixer\Config::create()
|
4 |
+
->setRiskyAllowed(true)
|
5 |
+
->setRules([
|
6 |
+
'@PSR2' => true,
|
7 |
+
'array_syntax' => ['syntax' => 'short'],
|
8 |
+
'binary_operator_spaces' => ['operators' => ['=>' => null]],
|
9 |
+
'blank_line_after_opening_tag' => true,
|
10 |
+
'class_attributes_separation' => ['elements' => ['method']],
|
11 |
+
'compact_nullable_typehint' => true,
|
12 |
+
'concat_space' => ['spacing' => 'one'],
|
13 |
+
'declare_equal_normalize' => ['space' => 'none'],
|
14 |
+
'declare_strict_types' => false,
|
15 |
+
'dir_constant' => true,
|
16 |
+
'final_static_access' => true,
|
17 |
+
'fully_qualified_strict_types' => true,
|
18 |
+
'function_to_constant' => true,
|
19 |
+
'function_typehint_space' => true,
|
20 |
+
'header_comment' => false,
|
21 |
+
'is_null' => ['use_yoda_style' => false],
|
22 |
+
'list_syntax' => ['syntax' => 'short'],
|
23 |
+
'lowercase_cast' => true,
|
24 |
+
'magic_method_casing' => true,
|
25 |
+
'modernize_types_casting' => true,
|
26 |
+
'multiline_comment_opening_closing' => true,
|
27 |
+
//'native_constant_invocation' => true,
|
28 |
+
'no_alias_functions' => true,
|
29 |
+
'no_alternative_syntax' => true,
|
30 |
+
'no_blank_lines_after_phpdoc' => true,
|
31 |
+
'no_empty_comment' => true,
|
32 |
+
'no_empty_phpdoc' => true,
|
33 |
+
'no_extra_blank_lines' => true,
|
34 |
+
'no_leading_import_slash' => true,
|
35 |
+
'no_leading_namespace_whitespace' => true,
|
36 |
+
'no_spaces_around_offset' => true,
|
37 |
+
'no_superfluous_phpdoc_tags' => ['allow_mixed' => true],
|
38 |
+
'no_trailing_comma_in_singleline_array' => true,
|
39 |
+
'no_unneeded_control_parentheses' => true,
|
40 |
+
'no_unset_cast' => true,
|
41 |
+
'no_unused_imports' => true,
|
42 |
+
'no_useless_else' => true,
|
43 |
+
'no_useless_return' => true,
|
44 |
+
'no_whitespace_in_blank_line' => true,
|
45 |
+
'normalize_index_brace' => true,
|
46 |
+
'ordered_imports' => true,
|
47 |
+
'php_unit_construct' => true,
|
48 |
+
'php_unit_dedicate_assert' => ['target' => 'newest'],
|
49 |
+
'php_unit_dedicate_assert_internal_type' => ['target' => 'newest'],
|
50 |
+
'php_unit_expectation' => ['target' => 'newest'],
|
51 |
+
'php_unit_mock' => ['target' => 'newest'],
|
52 |
+
'php_unit_mock_short_will_return' => true,
|
53 |
+
'php_unit_no_expectation_annotation' => ['target' => 'newest'],
|
54 |
+
'php_unit_test_annotation' => ['style' => 'prefix'],
|
55 |
+
//'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
|
56 |
+
'phpdoc_align' => ['align' => 'vertical'],
|
57 |
+
//'phpdoc_line_span' => ['method' => 'multi', 'property' => 'multi'],
|
58 |
+
'phpdoc_no_package' => true,
|
59 |
+
'phpdoc_no_useless_inheritdoc' => true,
|
60 |
+
'phpdoc_scalar' => true,
|
61 |
+
'phpdoc_separation' => true,
|
62 |
+
'phpdoc_single_line_var_spacing' => true,
|
63 |
+
'phpdoc_trim' => true,
|
64 |
+
'phpdoc_trim_consecutive_blank_line_separation' => true,
|
65 |
+
'phpdoc_types' => true,
|
66 |
+
'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
|
67 |
+
'phpdoc_var_without_name' => true,
|
68 |
+
'return_assignment' => true,
|
69 |
+
'short_scalar_cast' => true,
|
70 |
+
'single_trait_insert_per_statement' => true,
|
71 |
+
'standardize_not_equals' => true,
|
72 |
+
//'static_lambda' => true,
|
73 |
+
'ternary_to_null_coalescing' => true,
|
74 |
+
'trim_array_spaces' => true,
|
75 |
+
'visibility_required' => true,
|
76 |
+
'yoda_style' => false,
|
77 |
+
// 'native_function_invocation' => true,
|
78 |
+
'braces' => ['allow_single_line_closure'=>true],
|
79 |
+
])
|
80 |
+
->setFinder(
|
81 |
+
PhpCsFixer\Finder::create()
|
82 |
+
->in(__DIR__.'/src')
|
83 |
+
->in(__DIR__.'/tests')
|
84 |
+
->name('*.php')
|
85 |
+
)
|
86 |
+
;
|
87 |
+
|
88 |
+
return $config;
|
vendor/guzzlehttp/promises/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2015-2016 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is
|
8 |
+
furnished to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in
|
11 |
+
all copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
vendor/guzzlehttp/promises/phpstan-baseline.neon
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
parameters:
|
2 |
+
ignoreErrors:
|
3 |
+
-
|
4 |
+
message: "#^Parameter \\#1 \\$function of function register_shutdown_function expects callable\\(\\)\\: void, Closure\\(\\)\\: mixed given\\.$#"
|
5 |
+
count: 1
|
6 |
+
path: src/TaskQueue.php
|
7 |
+
|
vendor/guzzlehttp/promises/phpstan.neon.dist
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
includes:
|
2 |
+
- phpstan-baseline.neon
|
3 |
+
|
4 |
+
parameters:
|
5 |
+
level: 5
|
6 |
+
paths:
|
7 |
+
- src
|
8 |
+
|
9 |
+
ignoreErrors:
|
10 |
+
- "#^Dead catch - Exception is already caught by Throwable above\\.$#"
|
vendor/guzzlehttp/promises/psalm.xml
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<psalm
|
3 |
+
errorLevel="4"
|
4 |
+
resolveFromConfigFile="true"
|
5 |
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
6 |
+
xmlns="https://getpsalm.org/schema/config"
|
7 |
+
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
8 |
+
>
|
9 |
+
<projectFiles>
|
10 |
+
<directory name="src" />
|
11 |
+
<ignoreFiles>
|
12 |
+
<directory name="vendor" />
|
13 |
+
</ignoreFiles>
|
14 |
+
</projectFiles>
|
15 |
+
</psalm>
|
vendor/guzzlehttp/psr7/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is
|
8 |
+
furnished to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in
|
11 |
+
all copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
vendor/hamcrest/hamcrest-php/.gush.yml
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
adapter: github
|
2 |
+
issue_tracker: github
|
3 |
+
meta-header: "Copyright (c) 2009-2015 hamcrest.org"
|
4 |
+
table-pr:
|
5 |
+
fixed_tickets: ['Fixed Tickets', '']
|
6 |
+
license: ['License', MIT]
|
7 |
+
base: master
|
vendor/hamcrest/hamcrest-php/CHANGES.txt
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
== Version 2.0.1: Released Jul 09 2020 ==
|
2 |
+
|
3 |
+
* Added support for PHP 8
|
4 |
+
|
5 |
+
|
6 |
+
== Version 2.0: Released Feb 26 2016 ==
|
7 |
+
|
8 |
+
* Removed automatic loading of global functions
|
9 |
+
|
10 |
+
|
11 |
+
== Version 1.1.0: Released Feb 2 2012 ==
|
12 |
+
|
13 |
+
Issues Fixed: 121, 138, 147
|
14 |
+
|
15 |
+
* Added non-empty matchers to complement the emptiness-matching forms.
|
16 |
+
|
17 |
+
- nonEmptyString()
|
18 |
+
- nonEmptyArray()
|
19 |
+
- nonEmptyTraversable()
|
20 |
+
|
21 |
+
* Added ability to pass variable arguments to several array-based matcher
|
22 |
+
factory methods so they work like allOf() et al.
|
23 |
+
|
24 |
+
- anArray()
|
25 |
+
- arrayContainingInAnyOrder(), containsInAnyOrder()
|
26 |
+
- arrayContaining(), contains()
|
27 |
+
- stringContainsInOrder()
|
28 |
+
|
29 |
+
* Matchers that accept an array of matchers now also accept variable arguments.
|
30 |
+
Any non-matcher arguments are wrapped by IsEqual.
|
31 |
+
|
32 |
+
* Added noneOf() as a shortcut for not(anyOf()).
|
33 |
+
|
34 |
+
|
35 |
+
== Version 1.0.0: Released Jan 20 2012 ==
|
36 |
+
|
37 |
+
Issues Fixed: 119, 136, 139, 141, 148, 149, 172
|
38 |
+
|
39 |
+
* Moved hamcrest.php into Hamcrest folder and renamed to Hamcrest.php.
|
40 |
+
This is more in line with PEAR packaging standards.
|
41 |
+
|
42 |
+
* Renamed callable() to callableValue() for compatibility with PHP 5.4.
|
43 |
+
|
44 |
+
* Added Hamcrest_Text_StringContainsIgnoringCase to assert using stripos().
|
45 |
+
|
46 |
+
assertThat('fOObAr', containsStringIgnoringCase('oba'));
|
47 |
+
assertThat('fOObAr', containsString('oba')->ignoringCase());
|
48 |
+
|
49 |
+
* Fixed Hamcrest_Core_IsInstanceOf to return false for native types.
|
50 |
+
|
51 |
+
* Moved string-based matchers to Hamcrest_Text package.
|
52 |
+
StringContains, StringEndsWith, StringStartsWith, and SubstringMatcher
|
53 |
+
|
54 |
+
* Hamcrest.php and Hamcrest_Matchers.php are now built from @factory doctags.
|
55 |
+
Added @factory doctag to every static factory method.
|
56 |
+
|
57 |
+
* Hamcrest_Matchers and Hamcrest.php now import each matcher as-needed
|
58 |
+
and Hamcrest.php calls the matchers directly instead of Hamcrest_Matchers.
|
59 |
+
|
60 |
+
|
61 |
+
== Version 0.3.0: Released Jul 26 2010 ==
|
62 |
+
|
63 |
+
* Added running count to Hamcrest_MatcherAssert with methods to get and reset it.
|
64 |
+
This can be used by unit testing frameworks for reporting.
|
65 |
+
|
66 |
+
* Added Hamcrest_Core_HasToString to assert return value of toString() or __toString().
|
67 |
+
|
68 |
+
assertThat($anObject, hasToString('foo'));
|
69 |
+
|
70 |
+
* Added Hamcrest_Type_IsScalar to assert is_scalar().
|
71 |
+
Matches values of type bool, int, float, double, and string.
|
72 |
+
|
73 |
+
assertThat($count, scalarValue());
|
74 |
+
assertThat('foo', scalarValue());
|
75 |
+
|
76 |
+
* Added Hamcrest_Collection package.
|
77 |
+
|
78 |
+
- IsEmptyTraversable
|
79 |
+
- IsTraversableWithSize
|
80 |
+
|
81 |
+
assertThat($iterator, emptyTraversable());
|
82 |
+
assertThat($iterator, traversableWithSize(5));
|
83 |
+
|
84 |
+
* Added Hamcrest_Xml_HasXPath to assert XPath expressions or the content of nodes in an XML/HTML DOM.
|
85 |
+
|
86 |
+
assertThat($dom, hasXPath('books/book/title'));
|
87 |
+
assertThat($dom, hasXPath('books/book[contains(title, "Alice")]', 3));
|
88 |
+
assertThat($dom, hasXPath('books/book/title', 'Alice in Wonderland'));
|
89 |
+
assertThat($dom, hasXPath('count(books/book)', greaterThan(10)));
|
90 |
+
|
91 |
+
* Added aliases to match the Java API.
|
92 |
+
|
93 |
+
hasEntry() -> hasKeyValuePair()
|
94 |
+
hasValue() -> hasItemInArray()
|
95 |
+
contains() -> arrayContaining()
|
96 |
+
containsInAnyOrder() -> arrayContainingInAnyOrder()
|
97 |
+
|
98 |
+
* Added optional subtype to Hamcrest_TypeSafeMatcher to enforce object class or resource type.
|
99 |
+
|
100 |
+
* Hamcrest_TypeSafeDiagnosingMatcher now extends Hamcrest_TypeSafeMatcher.
|
101 |
+
|
102 |
+
|
103 |
+
== Version 0.2.0: Released Jul 14 2010 ==
|
104 |
+
|
105 |
+
Issues Fixed: 109, 111, 114, 115
|
106 |
+
|
107 |
+
* Description::appendValues() and appendValueList() accept Iterator and IteratorAggregate. [111]
|
108 |
+
BaseDescription::appendValue() handles IteratorAggregate.
|
109 |
+
|
110 |
+
* assertThat() accepts a single boolean parameter and
|
111 |
+
wraps any non-Matcher third parameter with equalTo().
|
112 |
+
|
113 |
+
* Removed null return value from assertThat(). [114]
|
114 |
+
|
115 |
+
* Fixed wrong variable name in contains(). [109]
|
116 |
+
|
117 |
+
* Added Hamcrest_Core_IsSet to assert isset().
|
118 |
+
|
119 |
+
assertThat(array('foo' => 'bar'), set('foo'));
|
120 |
+
assertThat(array('foo' => 'bar'), notSet('bar'));
|
121 |
+
|
122 |
+
* Added Hamcrest_Core_IsTypeOf to assert built-in types with gettype(). [115]
|
123 |
+
Types: array, boolean, double, integer, null, object, resource, and string.
|
124 |
+
Note that gettype() returns "double" for float values.
|
125 |
+
|
126 |
+
assertThat($count, typeOf('integer'));
|
127 |
+
assertThat(3.14159, typeOf('double'));
|
128 |
+
assertThat(array('foo', 'bar'), typeOf('array'));
|
129 |
+
assertThat(new stdClass(), typeOf('object'));
|
130 |
+
|
131 |
+
* Added type-specific matchers in new Hamcrest_Type package.
|
132 |
+
|
133 |
+
- IsArray
|
134 |
+
- IsBoolean
|
135 |
+
- IsDouble (includes float values)
|
136 |
+
- IsInteger
|
137 |
+
- IsObject
|
138 |
+
- IsResource
|
139 |
+
- IsString
|
140 |
+
|
141 |
+
assertThat($count, integerValue());
|
142 |
+
assertThat(3.14159, floatValue());
|
143 |
+
assertThat('foo', stringValue());
|
144 |
+
|
145 |
+
* Added Hamcrest_Type_IsNumeric to assert is_numeric().
|
146 |
+
Matches values of type int and float/double or strings that are formatted as numbers.
|
147 |
+
|
148 |
+
assertThat(5, numericValue());
|
149 |
+
assertThat('-5e+3', numericValue());
|
150 |
+
|
151 |
+
* Added Hamcrest_Type_IsCallable to assert is_callable().
|
152 |
+
|
153 |
+
assertThat('preg_match', callable());
|
154 |
+
assertThat(array('SomeClass', 'SomeMethod'), callable());
|
155 |
+
assertThat(array($object, 'SomeMethod'), callable());
|
156 |
+
assertThat($object, callable());
|
157 |
+
assertThat(function ($x, $y) { return $x + $y; }, callable());
|
158 |
+
|
159 |
+
* Added Hamcrest_Text_MatchesPattern for regex matching with preg_match().
|
160 |
+
|
161 |
+
assertThat('foobar', matchesPattern('/o+b/'));
|
162 |
+
|
163 |
+
* Added aliases:
|
164 |
+
- atLeast() for greaterThanOrEqualTo()
|
165 |
+
- atMost() for lessThanOrEqualTo()
|
166 |
+
|
167 |
+
|
168 |
+
== Version 0.1.0: Released Jul 7 2010 ==
|
169 |
+
|
170 |
+
* Created PEAR package
|
171 |
+
|
172 |
+
* Core matchers
|
173 |
+
|
vendor/hamcrest/hamcrest-php/LICENSE.txt
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
BSD License
|
2 |
+
|
3 |
+
Copyright (c) 2000-2014, www.hamcrest.org
|
4 |
+
All rights reserved.
|
5 |
+
|
6 |
+
Redistribution and use in source and binary forms, with or without
|
7 |
+
modification, are permitted provided that the following conditions are met:
|
8 |
+
|
9 |
+
Redistributions of source code must retain the above copyright notice, this list of
|
10 |
+
conditions and the following disclaimer. Redistributions in binary form must reproduce
|
11 |
+
the above copyright notice, this list of conditions and the following disclaimer in
|
12 |
+
the documentation and/or other materials provided with the distribution.
|
13 |
+
|
14 |
+
Neither the name of Hamcrest nor the names of its contributors may be used to endorse
|
15 |
+
or promote products derived from this software without specific prior written
|
16 |
+
permission.
|
17 |
+
|
18 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
19 |
+
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
20 |
+
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
21 |
+
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
22 |
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
23 |
+
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
24 |
+
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
25 |
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
|
26 |
+
WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
27 |
+
DAMAGE.
|
vendor/hamcrest/hamcrest-php/generator/FactoryCall.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
class FactoryCall
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Hamcrest standard is two spaces for each level of indentation.
|
11 |
+
*
|
12 |
+
* @var string
|
13 |
+
*/
|
14 |
+
const INDENT = ' ';
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @var FactoryMethod
|
18 |
+
*/
|
19 |
+
private $method;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
private $name;
|
25 |
+
|
26 |
+
public function __construct(FactoryMethod $method, $name)
|
27 |
+
{
|
28 |
+
$this->method = $method;
|
29 |
+
$this->name = $name;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function getMethod()
|
33 |
+
{
|
34 |
+
return $this->method;
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getName()
|
38 |
+
{
|
39 |
+
return $this->name;
|
40 |
+
}
|
41 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/FactoryClass.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
class FactoryClass
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* @var string
|
11 |
+
*/
|
12 |
+
private $file;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @var ReflectionClass
|
16 |
+
*/
|
17 |
+
private $reflector;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @var array
|
21 |
+
*/
|
22 |
+
private $methods;
|
23 |
+
|
24 |
+
public function __construct($file, ReflectionClass $class)
|
25 |
+
{
|
26 |
+
$this->file = $file;
|
27 |
+
$this->reflector = $class;
|
28 |
+
$this->extractFactoryMethods();
|
29 |
+
}
|
30 |
+
|
31 |
+
public function extractFactoryMethods()
|
32 |
+
{
|
33 |
+
$this->methods = array();
|
34 |
+
foreach ($this->getPublicStaticMethods() as $method) {
|
35 |
+
if ($method->isFactory()) {
|
36 |
+
$this->methods[] = $method;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
public function getPublicStaticMethods()
|
42 |
+
{
|
43 |
+
$methods = array();
|
44 |
+
foreach ($this->reflector->getMethods(ReflectionMethod::IS_STATIC) as $method) {
|
45 |
+
if ($method->isPublic() && $method->getDeclaringClass() == $this->reflector) {
|
46 |
+
$methods[] = new FactoryMethod($this, $method);
|
47 |
+
}
|
48 |
+
}
|
49 |
+
return $methods;
|
50 |
+
}
|
51 |
+
|
52 |
+
public function getFile()
|
53 |
+
{
|
54 |
+
return $this->file;
|
55 |
+
}
|
56 |
+
|
57 |
+
public function getName()
|
58 |
+
{
|
59 |
+
return $this->reflector->name;
|
60 |
+
}
|
61 |
+
|
62 |
+
public function isFactory()
|
63 |
+
{
|
64 |
+
return !empty($this->methods);
|
65 |
+
}
|
66 |
+
|
67 |
+
public function getMethods()
|
68 |
+
{
|
69 |
+
return $this->methods;
|
70 |
+
}
|
71 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/FactoryFile.php
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
abstract class FactoryFile
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Hamcrest standard is two spaces for each level of indentation.
|
11 |
+
*
|
12 |
+
* @var string
|
13 |
+
*/
|
14 |
+
const INDENT = ' ';
|
15 |
+
|
16 |
+
private $indent;
|
17 |
+
|
18 |
+
private $file;
|
19 |
+
|
20 |
+
private $code;
|
21 |
+
|
22 |
+
public function __construct($file, $indent)
|
23 |
+
{
|
24 |
+
$this->file = $file;
|
25 |
+
$this->indent = $indent;
|
26 |
+
}
|
27 |
+
|
28 |
+
abstract public function addCall(FactoryCall $call);
|
29 |
+
|
30 |
+
abstract public function build();
|
31 |
+
|
32 |
+
public function addFileHeader()
|
33 |
+
{
|
34 |
+
$this->code = '';
|
35 |
+
$this->addPart('file_header');
|
36 |
+
}
|
37 |
+
|
38 |
+
public function addPart($name)
|
39 |
+
{
|
40 |
+
$this->addCode($this->readPart($name));
|
41 |
+
}
|
42 |
+
|
43 |
+
public function addCode($code)
|
44 |
+
{
|
45 |
+
$this->code .= $code;
|
46 |
+
}
|
47 |
+
|
48 |
+
public function readPart($name)
|
49 |
+
{
|
50 |
+
return file_get_contents(__DIR__ . "/parts/$name.txt");
|
51 |
+
}
|
52 |
+
|
53 |
+
public function generateFactoryCall(FactoryCall $call)
|
54 |
+
{
|
55 |
+
$method = $call->getMethod();
|
56 |
+
$code = $method->getComment($this->indent) . "\n";
|
57 |
+
$code .= $this->generateDeclaration($call->getName(), $method);
|
58 |
+
$code .= $this->generateCall($method);
|
59 |
+
$code .= $this->generateClosing();
|
60 |
+
return $code;
|
61 |
+
}
|
62 |
+
|
63 |
+
public function generateDeclaration($name, FactoryMethod $method)
|
64 |
+
{
|
65 |
+
$code = $this->indent . $this->getDeclarationModifiers()
|
66 |
+
. 'function ' . $name . '('
|
67 |
+
. $this->generateDeclarationArguments($method)
|
68 |
+
. ')' . "\n" . $this->indent . '{' . "\n";
|
69 |
+
return $code;
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getDeclarationModifiers()
|
73 |
+
{
|
74 |
+
return '';
|
75 |
+
}
|
76 |
+
|
77 |
+
public function generateDeclarationArguments(FactoryMethod $method)
|
78 |
+
{
|
79 |
+
if ($method->acceptsVariableArguments()) {
|
80 |
+
return '/* args... */';
|
81 |
+
} else {
|
82 |
+
return $method->getParameterDeclarations();
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
public function generateImport(FactoryMethod $method)
|
87 |
+
{
|
88 |
+
return $this->indent . self::INDENT . "require_once '" . $method->getClass()->getFile() . "';" . "\n";
|
89 |
+
}
|
90 |
+
|
91 |
+
public function generateCall(FactoryMethod $method)
|
92 |
+
{
|
93 |
+
$code = '';
|
94 |
+
if ($method->acceptsVariableArguments()) {
|
95 |
+
$code .= $this->indent . self::INDENT . '$args = func_get_args();' . "\n";
|
96 |
+
}
|
97 |
+
|
98 |
+
$code .= $this->indent . self::INDENT . 'return ';
|
99 |
+
if ($method->acceptsVariableArguments()) {
|
100 |
+
$code .= 'call_user_func_array(array(\''
|
101 |
+
. '\\' . $method->getClassName() . '\', \''
|
102 |
+
. $method->getName() . '\'), $args);' . "\n";
|
103 |
+
} else {
|
104 |
+
$code .= '\\' . $method->getClassName() . '::'
|
105 |
+
. $method->getName() . '('
|
106 |
+
. $method->getParameterInvocations() . ');' . "\n";
|
107 |
+
}
|
108 |
+
|
109 |
+
return $code;
|
110 |
+
}
|
111 |
+
|
112 |
+
public function generateClosing()
|
113 |
+
{
|
114 |
+
return $this->indent . '}' . "\n";
|
115 |
+
}
|
116 |
+
|
117 |
+
public function write()
|
118 |
+
{
|
119 |
+
file_put_contents($this->file, $this->code);
|
120 |
+
}
|
121 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/FactoryGenerator.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Controls the process of extracting @factory doctags
|
9 |
+
* and generating factory method files.
|
10 |
+
*
|
11 |
+
* Uses File_Iterator to scan for PHP files.
|
12 |
+
*/
|
13 |
+
class FactoryGenerator
|
14 |
+
{
|
15 |
+
/**
|
16 |
+
* Path to the Hamcrest PHP files to process.
|
17 |
+
*
|
18 |
+
* @var string
|
19 |
+
*/
|
20 |
+
private $path;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @var array of FactoryFile
|
24 |
+
*/
|
25 |
+
private $factoryFiles;
|
26 |
+
|
27 |
+
public function __construct($path)
|
28 |
+
{
|
29 |
+
$this->path = $path;
|
30 |
+
$this->factoryFiles = array();
|
31 |
+
}
|
32 |
+
|
33 |
+
public function addFactoryFile(FactoryFile $factoryFile)
|
34 |
+
{
|
35 |
+
$this->factoryFiles[] = $factoryFile;
|
36 |
+
}
|
37 |
+
|
38 |
+
public function generate()
|
39 |
+
{
|
40 |
+
$classes = $this->getClassesWithFactoryMethods();
|
41 |
+
foreach ($classes as $class) {
|
42 |
+
foreach ($class->getMethods() as $method) {
|
43 |
+
foreach ($method->getCalls() as $call) {
|
44 |
+
foreach ($this->factoryFiles as $file) {
|
45 |
+
$file->addCall($call);
|
46 |
+
}
|
47 |
+
}
|
48 |
+
}
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
public function write()
|
53 |
+
{
|
54 |
+
foreach ($this->factoryFiles as $file) {
|
55 |
+
$file->build();
|
56 |
+
$file->write();
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
public function getClassesWithFactoryMethods()
|
61 |
+
{
|
62 |
+
$classes = array();
|
63 |
+
$files = $this->getSortedFiles();
|
64 |
+
foreach ($files as $file) {
|
65 |
+
$class = $this->getFactoryClass($file);
|
66 |
+
if ($class !== null) {
|
67 |
+
$classes[] = $class;
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
return $classes;
|
72 |
+
}
|
73 |
+
|
74 |
+
public function getSortedFiles()
|
75 |
+
{
|
76 |
+
$iter = $this->getFileIterator();
|
77 |
+
$files = array();
|
78 |
+
foreach ($iter as $file) {
|
79 |
+
$files[] = $file;
|
80 |
+
}
|
81 |
+
sort($files, SORT_STRING);
|
82 |
+
|
83 |
+
return $files;
|
84 |
+
}
|
85 |
+
|
86 |
+
private function getFileIterator()
|
87 |
+
{
|
88 |
+
$factoryClass = class_exists('File_Iterator_Factory') ? 'File_Iterator_Factory' : 'SebastianBergmann\FileIterator\Factory';
|
89 |
+
|
90 |
+
$factory = new $factoryClass();
|
91 |
+
|
92 |
+
return $factory->getFileIterator($this->path, '.php');
|
93 |
+
}
|
94 |
+
|
95 |
+
public function getFactoryClass($file)
|
96 |
+
{
|
97 |
+
$name = $this->getFactoryClassName($file);
|
98 |
+
if ($name !== null) {
|
99 |
+
require_once $file;
|
100 |
+
|
101 |
+
if (class_exists($name)) {
|
102 |
+
$class = new FactoryClass(substr($file, strpos($file, 'Hamcrest/')), new ReflectionClass($name));
|
103 |
+
if ($class->isFactory()) {
|
104 |
+
return $class;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
return null;
|
110 |
+
}
|
111 |
+
|
112 |
+
public function getFactoryClassName($file)
|
113 |
+
{
|
114 |
+
$content = file_get_contents($file);
|
115 |
+
if (preg_match('/namespace\s+(.+);/', $content, $namespace)
|
116 |
+
&& preg_match('/\n\s*class\s+(\w+)\s+extends\b/', $content, $className)
|
117 |
+
&& preg_match('/@factory\b/', $content)
|
118 |
+
) {
|
119 |
+
return $namespace[1] . '\\' . $className[1];
|
120 |
+
}
|
121 |
+
|
122 |
+
return null;
|
123 |
+
}
|
124 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/FactoryMethod.php
ADDED
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Represents a single static factory method from a {@link Matcher} class.
|
9 |
+
*
|
10 |
+
* @todo Search method in file contents for func_get_args() to replace factoryVarArgs.
|
11 |
+
*/
|
12 |
+
class FactoryMethod
|
13 |
+
{
|
14 |
+
/**
|
15 |
+
* @var FactoryClass
|
16 |
+
*/
|
17 |
+
private $class;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @var ReflectionMethod
|
21 |
+
*/
|
22 |
+
private $reflector;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @var array of string
|
26 |
+
*/
|
27 |
+
private $comment;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @var bool
|
31 |
+
*/
|
32 |
+
private $isVarArgs;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* @var array of FactoryCall
|
36 |
+
*/
|
37 |
+
private $calls;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @var array FactoryParameter
|
41 |
+
*/
|
42 |
+
private $parameters;
|
43 |
+
|
44 |
+
public function __construct(FactoryClass $class, ReflectionMethod $reflector)
|
45 |
+
{
|
46 |
+
$this->class = $class;
|
47 |
+
$this->reflector = $reflector;
|
48 |
+
$this->extractCommentWithoutLeadingShashesAndStars();
|
49 |
+
$this->extractFactoryNamesFromComment();
|
50 |
+
$this->extractParameters();
|
51 |
+
}
|
52 |
+
|
53 |
+
public function extractCommentWithoutLeadingShashesAndStars()
|
54 |
+
{
|
55 |
+
$this->comment = explode("\n", $this->reflector->getDocComment());
|
56 |
+
foreach ($this->comment as &$line) {
|
57 |
+
$line = preg_replace('#^\s*(/\\*+|\\*+/|\\*)\s?#', '', $line);
|
58 |
+
}
|
59 |
+
$this->trimLeadingBlankLinesFromComment();
|
60 |
+
$this->trimTrailingBlankLinesFromComment();
|
61 |
+
}
|
62 |
+
|
63 |
+
public function trimLeadingBlankLinesFromComment()
|
64 |
+
{
|
65 |
+
while (count($this->comment) > 0) {
|
66 |
+
$line = array_shift($this->comment);
|
67 |
+
if (trim($line) != '') {
|
68 |
+
array_unshift($this->comment, $line);
|
69 |
+
break;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
public function trimTrailingBlankLinesFromComment()
|
75 |
+
{
|
76 |
+
while (count($this->comment) > 0) {
|
77 |
+
$line = array_pop($this->comment);
|
78 |
+
if (trim($line) != '') {
|
79 |
+
array_push($this->comment, $line);
|
80 |
+
break;
|
81 |
+
}
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
public function extractFactoryNamesFromComment()
|
86 |
+
{
|
87 |
+
$this->calls = array();
|
88 |
+
for ($i = 0; $i < count($this->comment); $i++) {
|
89 |
+
if ($this->extractFactoryNamesFromLine($this->comment[$i])) {
|
90 |
+
unset($this->comment[$i]);
|
91 |
+
}
|
92 |
+
}
|
93 |
+
$this->trimTrailingBlankLinesFromComment();
|
94 |
+
}
|
95 |
+
|
96 |
+
public function extractFactoryNamesFromLine($line)
|
97 |
+
{
|
98 |
+
if (preg_match('/^\s*@factory(\s+(.+))?$/', $line, $match)) {
|
99 |
+
$this->createCalls(
|
100 |
+
$this->extractFactoryNamesFromAnnotation(
|
101 |
+
isset($match[2]) ? trim($match[2]) : null
|
102 |
+
)
|
103 |
+
);
|
104 |
+
return true;
|
105 |
+
}
|
106 |
+
return false;
|
107 |
+
}
|
108 |
+
|
109 |
+
public function extractFactoryNamesFromAnnotation($value)
|
110 |
+
{
|
111 |
+
$primaryName = $this->reflector->getName();
|
112 |
+
if (empty($value)) {
|
113 |
+
return array($primaryName);
|
114 |
+
}
|
115 |
+
preg_match_all('/(\.{3}|-|[a-zA-Z_][a-zA-Z_0-9]*)/', $value, $match);
|
116 |
+
$names = $match[0];
|
117 |
+
if (in_array('...', $names)) {
|
118 |
+
$this->isVarArgs = true;
|
119 |
+
}
|
120 |
+
if (!in_array('-', $names) && !in_array($primaryName, $names)) {
|
121 |
+
array_unshift($names, $primaryName);
|
122 |
+
}
|
123 |
+
return $names;
|
124 |
+
}
|
125 |
+
|
126 |
+
public function createCalls(array $names)
|
127 |
+
{
|
128 |
+
$names = array_unique($names);
|
129 |
+
foreach ($names as $name) {
|
130 |
+
if ($name != '-' && $name != '...') {
|
131 |
+
$this->calls[] = new FactoryCall($this, $name);
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
public function extractParameters()
|
137 |
+
{
|
138 |
+
$this->parameters = array();
|
139 |
+
if (!$this->isVarArgs) {
|
140 |
+
foreach ($this->reflector->getParameters() as $parameter) {
|
141 |
+
$this->parameters[] = new FactoryParameter($this, $parameter);
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
public function getParameterDeclarations()
|
147 |
+
{
|
148 |
+
if ($this->isVarArgs || !$this->hasParameters()) {
|
149 |
+
return '';
|
150 |
+
}
|
151 |
+
$params = array();
|
152 |
+
foreach ($this->parameters as /** @var $parameter FactoryParameter */
|
153 |
+
$parameter) {
|
154 |
+
$params[] = $parameter->getDeclaration();
|
155 |
+
}
|
156 |
+
return implode(', ', $params);
|
157 |
+
}
|
158 |
+
|
159 |
+
public function getParameterInvocations()
|
160 |
+
{
|
161 |
+
if ($this->isVarArgs) {
|
162 |
+
return '';
|
163 |
+
}
|
164 |
+
$params = array();
|
165 |
+
foreach ($this->parameters as $parameter) {
|
166 |
+
$params[] = $parameter->getInvocation();
|
167 |
+
}
|
168 |
+
return implode(', ', $params);
|
169 |
+
}
|
170 |
+
|
171 |
+
|
172 |
+
public function getClass()
|
173 |
+
{
|
174 |
+
return $this->class;
|
175 |
+
}
|
176 |
+
|
177 |
+
public function getClassName()
|
178 |
+
{
|
179 |
+
return $this->class->getName();
|
180 |
+
}
|
181 |
+
|
182 |
+
public function getName()
|
183 |
+
{
|
184 |
+
return $this->reflector->name;
|
185 |
+
}
|
186 |
+
|
187 |
+
public function isFactory()
|
188 |
+
{
|
189 |
+
return count($this->calls) > 0;
|
190 |
+
}
|
191 |
+
|
192 |
+
public function getCalls()
|
193 |
+
{
|
194 |
+
return $this->calls;
|
195 |
+
}
|
196 |
+
|
197 |
+
public function acceptsVariableArguments()
|
198 |
+
{
|
199 |
+
return $this->isVarArgs;
|
200 |
+
}
|
201 |
+
|
202 |
+
public function hasParameters()
|
203 |
+
{
|
204 |
+
return !empty($this->parameters);
|
205 |
+
}
|
206 |
+
|
207 |
+
public function getParameters()
|
208 |
+
{
|
209 |
+
return $this->parameters;
|
210 |
+
}
|
211 |
+
|
212 |
+
public function getFullName()
|
213 |
+
{
|
214 |
+
return $this->getClassName() . '::' . $this->getName();
|
215 |
+
}
|
216 |
+
|
217 |
+
public function getCommentText()
|
218 |
+
{
|
219 |
+
return implode("\n", $this->comment);
|
220 |
+
}
|
221 |
+
|
222 |
+
public function getComment($indent = '')
|
223 |
+
{
|
224 |
+
$comment = $indent . '/**';
|
225 |
+
foreach ($this->comment as $line) {
|
226 |
+
$comment .= "\n" . rtrim($indent . ' * ' . $line);
|
227 |
+
}
|
228 |
+
$comment .= "\n" . $indent . ' */';
|
229 |
+
return $comment;
|
230 |
+
}
|
231 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/FactoryParameter.php
ADDED
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
class FactoryParameter
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* @var FactoryMethod
|
11 |
+
*/
|
12 |
+
private $method;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @var ReflectionParameter
|
16 |
+
*/
|
17 |
+
private $reflector;
|
18 |
+
|
19 |
+
public function __construct(FactoryMethod $method, ReflectionParameter $reflector)
|
20 |
+
{
|
21 |
+
$this->method = $method;
|
22 |
+
$this->reflector = $reflector;
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Compute the declaration code.
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
public function getDeclaration()
|
31 |
+
{
|
32 |
+
$code = $this->getTypeCode() . $this->getInvocation();
|
33 |
+
|
34 |
+
if ($this->reflector->isOptional()) {
|
35 |
+
$default = $this->reflector->getDefaultValue();
|
36 |
+
if (is_null($default)) {
|
37 |
+
$default = 'null';
|
38 |
+
} elseif (is_bool($default)) {
|
39 |
+
$default = $default ? 'true' : 'false';
|
40 |
+
} elseif (is_string($default)) {
|
41 |
+
$default = "'" . $default . "'";
|
42 |
+
} elseif (is_numeric($default)) {
|
43 |
+
$default = strval($default);
|
44 |
+
} elseif (is_array($default)) {
|
45 |
+
$default = 'array()';
|
46 |
+
} else {
|
47 |
+
echo 'Warning: unknown default type for ' . $this->getMethod()->getFullName() . "\n";
|
48 |
+
var_dump($default);
|
49 |
+
$default = 'null';
|
50 |
+
}
|
51 |
+
$code .= ' = ' . $default;
|
52 |
+
}
|
53 |
+
return $code;
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Compute the type code for the paramater.
|
58 |
+
*
|
59 |
+
* @return string
|
60 |
+
*/
|
61 |
+
private function getTypeCode()
|
62 |
+
{
|
63 |
+
// Handle PHP 5 separately
|
64 |
+
if (PHP_VERSION_ID < 70000) {
|
65 |
+
if ($this->reflector->isArray()) {
|
66 |
+
return 'array';
|
67 |
+
}
|
68 |
+
|
69 |
+
$class = $this->reflector->getClass();
|
70 |
+
|
71 |
+
return $class ? sprintf('\\%s ', $class->getName()) : '';
|
72 |
+
}
|
73 |
+
|
74 |
+
if (!$this->reflector->hasType()) {
|
75 |
+
return '';
|
76 |
+
}
|
77 |
+
|
78 |
+
$type = $this->reflector->getType();
|
79 |
+
$name = self::getQualifiedName($type);
|
80 |
+
|
81 |
+
// PHP 7.1+ supports nullable types via a leading question mark
|
82 |
+
return (PHP_VERSION_ID >= 70100 && $type->allowsNull()) ? sprintf('?%s ', $name) : sprintf('%s ', $name);
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Compute qualified name for the given type.
|
87 |
+
*
|
88 |
+
* This function knows how to prefix class names with a leading slash and
|
89 |
+
* also how to handle PHP 8's union types.
|
90 |
+
*
|
91 |
+
* @param ReflectionType $type
|
92 |
+
*
|
93 |
+
* @return string
|
94 |
+
*/
|
95 |
+
private static function getQualifiedName(ReflectionType $type)
|
96 |
+
{
|
97 |
+
// PHP 8 union types can be recursively processed
|
98 |
+
if ($type instanceof ReflectionUnionType) {
|
99 |
+
return implode('|', array_map(function (ReflectionType $type) {
|
100 |
+
// The "self::" call within a Closure is fine here because this
|
101 |
+
// code will only ever be executed on PHP 7.0+
|
102 |
+
return self::getQualifiedName($type);
|
103 |
+
}, $type->getTypes()));
|
104 |
+
}
|
105 |
+
|
106 |
+
// PHP 7.0 doesn't have named types, but 7.1+ does
|
107 |
+
$name = $type instanceof ReflectionNamedType ? $type->getName() : (string) $type;
|
108 |
+
|
109 |
+
return $type->isBuiltin() ? $name : sprintf('\\%s', $name);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Compute the invocation code.
|
114 |
+
*
|
115 |
+
* @return string
|
116 |
+
*/
|
117 |
+
public function getInvocation()
|
118 |
+
{
|
119 |
+
return sprintf('$%s', $this->reflector->getName());
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Compute the method name.
|
124 |
+
*
|
125 |
+
* @return string
|
126 |
+
*/
|
127 |
+
public function getMethod()
|
128 |
+
{
|
129 |
+
return $this->method;
|
130 |
+
}
|
131 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/GlobalFunctionFile.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
class GlobalFunctionFile extends FactoryFile
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* @var string containing function definitions
|
11 |
+
*/
|
12 |
+
private $functions;
|
13 |
+
|
14 |
+
public function __construct($file)
|
15 |
+
{
|
16 |
+
parent::__construct($file, ' ');
|
17 |
+
$this->functions = '';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function addCall(FactoryCall $call)
|
21 |
+
{
|
22 |
+
$this->functions .= "\n" . $this->generateFactoryCall($call);
|
23 |
+
}
|
24 |
+
|
25 |
+
public function build()
|
26 |
+
{
|
27 |
+
$this->addFileHeader();
|
28 |
+
$this->addPart('functions_imports');
|
29 |
+
$this->addPart('functions_header');
|
30 |
+
$this->addCode($this->functions);
|
31 |
+
$this->addPart('functions_footer');
|
32 |
+
}
|
33 |
+
|
34 |
+
public function generateFactoryCall(FactoryCall $call)
|
35 |
+
{
|
36 |
+
$code = "if (!function_exists('{$call->getName()}')) {\n";
|
37 |
+
$code.= parent::generateFactoryCall($call);
|
38 |
+
$code.= "}\n";
|
39 |
+
|
40 |
+
return $code;
|
41 |
+
}
|
42 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/StaticMethodFile.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
class StaticMethodFile extends FactoryFile
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* @var string containing method definitions
|
11 |
+
*/
|
12 |
+
private $methods;
|
13 |
+
|
14 |
+
public function __construct($file)
|
15 |
+
{
|
16 |
+
parent::__construct($file, ' ');
|
17 |
+
$this->methods = '';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function addCall(FactoryCall $call)
|
21 |
+
{
|
22 |
+
$this->methods .= PHP_EOL . $this->generateFactoryCall($call);
|
23 |
+
}
|
24 |
+
|
25 |
+
public function getDeclarationModifiers()
|
26 |
+
{
|
27 |
+
return 'public static ';
|
28 |
+
}
|
29 |
+
|
30 |
+
public function build()
|
31 |
+
{
|
32 |
+
$this->addFileHeader();
|
33 |
+
$this->addPart('matchers_imports');
|
34 |
+
$this->addPart('matchers_header');
|
35 |
+
$this->addCode($this->methods);
|
36 |
+
$this->addPart('matchers_footer');
|
37 |
+
}
|
38 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/parts/file_header.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009-2010 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
// This file is generated from the static method @factory doctags.
|
vendor/hamcrest/hamcrest-php/generator/parts/functions_footer.txt
ADDED
File without changes
|
vendor/hamcrest/hamcrest-php/generator/parts/functions_header.txt
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
if (!function_exists('assertThat')) {
|
3 |
+
/**
|
4 |
+
* Make an assertion and throw {@link Hamcrest_AssertionError} if it fails.
|
5 |
+
*
|
6 |
+
* Example:
|
7 |
+
* <pre>
|
8 |
+
* //With an identifier
|
9 |
+
* assertThat("assertion identifier", $apple->flavour(), equalTo("tasty"));
|
10 |
+
* //Without an identifier
|
11 |
+
* assertThat($apple->flavour(), equalTo("tasty"));
|
12 |
+
* //Evaluating a boolean expression
|
13 |
+
* assertThat("some error", $a > $b);
|
14 |
+
* </pre>
|
15 |
+
*/
|
16 |
+
function assertThat()
|
17 |
+
{
|
18 |
+
$args = func_get_args();
|
19 |
+
call_user_func_array(
|
20 |
+
array('Hamcrest\MatcherAssert', 'assertThat'),
|
21 |
+
$args
|
22 |
+
);
|
23 |
+
}
|
24 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/parts/functions_imports.txt
ADDED
File without changes
|
vendor/hamcrest/hamcrest-php/generator/parts/matchers_footer.txt
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
}
|
vendor/hamcrest/hamcrest-php/generator/parts/matchers_header.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
/**
|
4 |
+
* A series of static factories for all hamcrest matchers.
|
5 |
+
*/
|
6 |
+
class Matchers
|
7 |
+
{
|
vendor/hamcrest/hamcrest-php/generator/parts/matchers_imports.txt
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
|
2 |
+
namespace Hamcrest;
|
vendor/hamcrest/hamcrest-php/generator/run.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009 hamcrest.org
|
5 |
+
*/
|
6 |
+
require __DIR__ . '/../vendor/autoload.php';
|
7 |
+
|
8 |
+
/*
|
9 |
+
* Generates the Hamcrest\Matchers factory class and factory functions
|
10 |
+
* from the @factory doctags in the various matchers.
|
11 |
+
*/
|
12 |
+
|
13 |
+
define('GENERATOR_BASE', __DIR__);
|
14 |
+
define('HAMCREST_BASE', realpath(dirname(GENERATOR_BASE) . DIRECTORY_SEPARATOR . 'hamcrest'));
|
15 |
+
|
16 |
+
define('GLOBAL_FUNCTIONS_FILE', HAMCREST_BASE . DIRECTORY_SEPARATOR . 'Hamcrest.php');
|
17 |
+
define('STATIC_MATCHERS_FILE', HAMCREST_BASE . DIRECTORY_SEPARATOR . 'Hamcrest' . DIRECTORY_SEPARATOR . 'Matchers.php');
|
18 |
+
|
19 |
+
set_include_path(
|
20 |
+
implode(
|
21 |
+
PATH_SEPARATOR,
|
22 |
+
array(
|
23 |
+
GENERATOR_BASE,
|
24 |
+
HAMCREST_BASE,
|
25 |
+
get_include_path()
|
26 |
+
)
|
27 |
+
)
|
28 |
+
);
|
29 |
+
|
30 |
+
@unlink(GLOBAL_FUNCTIONS_FILE);
|
31 |
+
@unlink(STATIC_MATCHERS_FILE);
|
32 |
+
|
33 |
+
$generator = new FactoryGenerator(HAMCREST_BASE . DIRECTORY_SEPARATOR . 'Hamcrest');
|
34 |
+
$generator->addFactoryFile(new StaticMethodFile(STATIC_MATCHERS_FILE));
|
35 |
+
$generator->addFactoryFile(new GlobalFunctionFile(GLOBAL_FUNCTIONS_FILE));
|
36 |
+
$generator->generate();
|
37 |
+
$generator->write();
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php
ADDED
@@ -0,0 +1,882 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009-2010 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
// This file is generated from the static method @factory doctags.
|
8 |
+
|
9 |
+
if (!function_exists('assertThat')) {
|
10 |
+
/**
|
11 |
+
* Make an assertion and throw {@link Hamcrest_AssertionError} if it fails.
|
12 |
+
*
|
13 |
+
* Example:
|
14 |
+
* <pre>
|
15 |
+
* //With an identifier
|
16 |
+
* assertThat("assertion identifier", $apple->flavour(), equalTo("tasty"));
|
17 |
+
* //Without an identifier
|
18 |
+
* assertThat($apple->flavour(), equalTo("tasty"));
|
19 |
+
* //Evaluating a boolean expression
|
20 |
+
* assertThat("some error", $a > $b);
|
21 |
+
* </pre>
|
22 |
+
*/
|
23 |
+
function assertThat()
|
24 |
+
{
|
25 |
+
$args = func_get_args();
|
26 |
+
call_user_func_array(
|
27 |
+
array('Hamcrest\MatcherAssert', 'assertThat'),
|
28 |
+
$args
|
29 |
+
);
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
if (!function_exists('anArray')) {
|
34 |
+
/**
|
35 |
+
* Evaluates to true only if each $matcher[$i] is satisfied by $array[$i].
|
36 |
+
*/
|
37 |
+
function anArray(/* args... */)
|
38 |
+
{
|
39 |
+
$args = func_get_args();
|
40 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArray', 'anArray'), $args);
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
if (!function_exists('hasItemInArray')) {
|
45 |
+
/**
|
46 |
+
* Evaluates to true if any item in an array satisfies the given matcher.
|
47 |
+
*
|
48 |
+
* @param mixed $item as a {@link Hamcrest\Matcher} or a value.
|
49 |
+
*
|
50 |
+
* @return \Hamcrest\Arrays\IsArrayContaining
|
51 |
+
*/
|
52 |
+
function hasItemInArray($item)
|
53 |
+
{
|
54 |
+
return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
if (!function_exists('hasValue')) {
|
59 |
+
/**
|
60 |
+
* Evaluates to true if any item in an array satisfies the given matcher.
|
61 |
+
*
|
62 |
+
* @param mixed $item as a {@link Hamcrest\Matcher} or a value.
|
63 |
+
*
|
64 |
+
* @return \Hamcrest\Arrays\IsArrayContaining
|
65 |
+
*/
|
66 |
+
function hasValue($item)
|
67 |
+
{
|
68 |
+
return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
if (!function_exists('arrayContainingInAnyOrder')) {
|
73 |
+
/**
|
74 |
+
* An array with elements that match the given matchers.
|
75 |
+
*/
|
76 |
+
function arrayContainingInAnyOrder(/* args... */)
|
77 |
+
{
|
78 |
+
$args = func_get_args();
|
79 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
if (!function_exists('containsInAnyOrder')) {
|
84 |
+
/**
|
85 |
+
* An array with elements that match the given matchers.
|
86 |
+
*/
|
87 |
+
function containsInAnyOrder(/* args... */)
|
88 |
+
{
|
89 |
+
$args = func_get_args();
|
90 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
if (!function_exists('arrayContaining')) {
|
95 |
+
/**
|
96 |
+
* An array with elements that match the given matchers in the same order.
|
97 |
+
*/
|
98 |
+
function arrayContaining(/* args... */)
|
99 |
+
{
|
100 |
+
$args = func_get_args();
|
101 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
if (!function_exists('contains')) {
|
106 |
+
/**
|
107 |
+
* An array with elements that match the given matchers in the same order.
|
108 |
+
*/
|
109 |
+
function contains(/* args... */)
|
110 |
+
{
|
111 |
+
$args = func_get_args();
|
112 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
if (!function_exists('hasKeyInArray')) {
|
117 |
+
/**
|
118 |
+
* Evaluates to true if any key in an array matches the given matcher.
|
119 |
+
*
|
120 |
+
* @param mixed $key as a {@link Hamcrest\Matcher} or a value.
|
121 |
+
*
|
122 |
+
* @return \Hamcrest\Arrays\IsArrayContainingKey
|
123 |
+
*/
|
124 |
+
function hasKeyInArray($key)
|
125 |
+
{
|
126 |
+
return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
if (!function_exists('hasKey')) {
|
131 |
+
/**
|
132 |
+
* Evaluates to true if any key in an array matches the given matcher.
|
133 |
+
*
|
134 |
+
* @param mixed $key as a {@link Hamcrest\Matcher} or a value.
|
135 |
+
*
|
136 |
+
* @return \Hamcrest\Arrays\IsArrayContainingKey
|
137 |
+
*/
|
138 |
+
function hasKey($key)
|
139 |
+
{
|
140 |
+
return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
if (!function_exists('hasKeyValuePair')) {
|
145 |
+
/**
|
146 |
+
* Test if an array has both an key and value in parity with each other.
|
147 |
+
*/
|
148 |
+
function hasKeyValuePair($key, $value)
|
149 |
+
{
|
150 |
+
return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
if (!function_exists('hasEntry')) {
|
155 |
+
/**
|
156 |
+
* Test if an array has both an key and value in parity with each other.
|
157 |
+
*/
|
158 |
+
function hasEntry($key, $value)
|
159 |
+
{
|
160 |
+
return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
if (!function_exists('arrayWithSize')) {
|
165 |
+
/**
|
166 |
+
* Does array size satisfy a given matcher?
|
167 |
+
*
|
168 |
+
* @param \Hamcrest\Matcher|int $size as a {@link Hamcrest\Matcher} or a value.
|
169 |
+
*
|
170 |
+
* @return \Hamcrest\Arrays\IsArrayWithSize
|
171 |
+
*/
|
172 |
+
function arrayWithSize($size)
|
173 |
+
{
|
174 |
+
return \Hamcrest\Arrays\IsArrayWithSize::arrayWithSize($size);
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
if (!function_exists('emptyArray')) {
|
179 |
+
/**
|
180 |
+
* Matches an empty array.
|
181 |
+
*/
|
182 |
+
function emptyArray()
|
183 |
+
{
|
184 |
+
return \Hamcrest\Arrays\IsArrayWithSize::emptyArray();
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
if (!function_exists('nonEmptyArray')) {
|
189 |
+
/**
|
190 |
+
* Matches an empty array.
|
191 |
+
*/
|
192 |
+
function nonEmptyArray()
|
193 |
+
{
|
194 |
+
return \Hamcrest\Arrays\IsArrayWithSize::nonEmptyArray();
|
195 |
+
}
|
196 |
+
}
|
197 |
+
|
198 |
+
if (!function_exists('emptyTraversable')) {
|
199 |
+
/**
|
200 |
+
* Returns true if traversable is empty.
|
201 |
+
*/
|
202 |
+
function emptyTraversable()
|
203 |
+
{
|
204 |
+
return \Hamcrest\Collection\IsEmptyTraversable::emptyTraversable();
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
if (!function_exists('nonEmptyTraversable')) {
|
209 |
+
/**
|
210 |
+
* Returns true if traversable is not empty.
|
211 |
+
*/
|
212 |
+
function nonEmptyTraversable()
|
213 |
+
{
|
214 |
+
return \Hamcrest\Collection\IsEmptyTraversable::nonEmptyTraversable();
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
if (!function_exists('traversableWithSize')) {
|
219 |
+
/**
|
220 |
+
* Does traversable size satisfy a given matcher?
|
221 |
+
*/
|
222 |
+
function traversableWithSize($size)
|
223 |
+
{
|
224 |
+
return \Hamcrest\Collection\IsTraversableWithSize::traversableWithSize($size);
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
if (!function_exists('allOf')) {
|
229 |
+
/**
|
230 |
+
* Evaluates to true only if ALL of the passed in matchers evaluate to true.
|
231 |
+
*/
|
232 |
+
function allOf(/* args... */)
|
233 |
+
{
|
234 |
+
$args = func_get_args();
|
235 |
+
return call_user_func_array(array('\Hamcrest\Core\AllOf', 'allOf'), $args);
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
+
if (!function_exists('anyOf')) {
|
240 |
+
/**
|
241 |
+
* Evaluates to true if ANY of the passed in matchers evaluate to true.
|
242 |
+
*/
|
243 |
+
function anyOf(/* args... */)
|
244 |
+
{
|
245 |
+
$args = func_get_args();
|
246 |
+
return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'anyOf'), $args);
|
247 |
+
}
|
248 |
+
}
|
249 |
+
|
250 |
+
if (!function_exists('noneOf')) {
|
251 |
+
/**
|
252 |
+
* Evaluates to false if ANY of the passed in matchers evaluate to true.
|
253 |
+
*/
|
254 |
+
function noneOf(/* args... */)
|
255 |
+
{
|
256 |
+
$args = func_get_args();
|
257 |
+
return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'noneOf'), $args);
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
if (!function_exists('both')) {
|
262 |
+
/**
|
263 |
+
* This is useful for fluently combining matchers that must both pass.
|
264 |
+
* For example:
|
265 |
+
* <pre>
|
266 |
+
* assertThat($string, both(containsString("a"))->andAlso(containsString("b")));
|
267 |
+
* </pre>
|
268 |
+
*/
|
269 |
+
function both(\Hamcrest\Matcher $matcher)
|
270 |
+
{
|
271 |
+
return \Hamcrest\Core\CombinableMatcher::both($matcher);
|
272 |
+
}
|
273 |
+
}
|
274 |
+
|
275 |
+
if (!function_exists('either')) {
|
276 |
+
/**
|
277 |
+
* This is useful for fluently combining matchers where either may pass,
|
278 |
+
* for example:
|
279 |
+
* <pre>
|
280 |
+
* assertThat($string, either(containsString("a"))->orElse(containsString("b")));
|
281 |
+
* </pre>
|
282 |
+
*/
|
283 |
+
function either(\Hamcrest\Matcher $matcher)
|
284 |
+
{
|
285 |
+
return \Hamcrest\Core\CombinableMatcher::either($matcher);
|
286 |
+
}
|
287 |
+
}
|
288 |
+
|
289 |
+
if (!function_exists('describedAs')) {
|
290 |
+
/**
|
291 |
+
* Wraps an existing matcher and overrides the description when it fails.
|
292 |
+
*/
|
293 |
+
function describedAs(/* args... */)
|
294 |
+
{
|
295 |
+
$args = func_get_args();
|
296 |
+
return call_user_func_array(array('\Hamcrest\Core\DescribedAs', 'describedAs'), $args);
|
297 |
+
}
|
298 |
+
}
|
299 |
+
|
300 |
+
if (!function_exists('everyItem')) {
|
301 |
+
/**
|
302 |
+
* @param Matcher $itemMatcher
|
303 |
+
* A matcher to apply to every element in an array.
|
304 |
+
*
|
305 |
+
* @return \Hamcrest\Core\Every
|
306 |
+
* Evaluates to TRUE for a collection in which every item matches $itemMatcher
|
307 |
+
*/
|
308 |
+
function everyItem(\Hamcrest\Matcher $itemMatcher)
|
309 |
+
{
|
310 |
+
return \Hamcrest\Core\Every::everyItem($itemMatcher);
|
311 |
+
}
|
312 |
+
}
|
313 |
+
|
314 |
+
if (!function_exists('hasToString')) {
|
315 |
+
/**
|
316 |
+
* Does array size satisfy a given matcher?
|
317 |
+
*/
|
318 |
+
function hasToString($matcher)
|
319 |
+
{
|
320 |
+
return \Hamcrest\Core\HasToString::hasToString($matcher);
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
if (!function_exists('is')) {
|
325 |
+
/**
|
326 |
+
* Decorates another Matcher, retaining the behavior but allowing tests
|
327 |
+
* to be slightly more expressive.
|
328 |
+
*
|
329 |
+
* For example: assertThat($cheese, equalTo($smelly))
|
330 |
+
* vs. assertThat($cheese, is(equalTo($smelly)))
|
331 |
+
*/
|
332 |
+
function is($value)
|
333 |
+
{
|
334 |
+
return \Hamcrest\Core\Is::is($value);
|
335 |
+
}
|
336 |
+
}
|
337 |
+
|
338 |
+
if (!function_exists('anything')) {
|
339 |
+
/**
|
340 |
+
* This matcher always evaluates to true.
|
341 |
+
*
|
342 |
+
* @param string $description A meaningful string used when describing itself.
|
343 |
+
*
|
344 |
+
* @return \Hamcrest\Core\IsAnything
|
345 |
+
*/
|
346 |
+
function anything($description = 'ANYTHING')
|
347 |
+
{
|
348 |
+
return \Hamcrest\Core\IsAnything::anything($description);
|
349 |
+
}
|
350 |
+
}
|
351 |
+
|
352 |
+
if (!function_exists('hasItem')) {
|
353 |
+
/**
|
354 |
+
* Test if the value is an array containing this matcher.
|
355 |
+
*
|
356 |
+
* Example:
|
357 |
+
* <pre>
|
358 |
+
* assertThat(array('a', 'b'), hasItem(equalTo('b')));
|
359 |
+
* //Convenience defaults to equalTo()
|
360 |
+
* assertThat(array('a', 'b'), hasItem('b'));
|
361 |
+
* </pre>
|
362 |
+
*/
|
363 |
+
function hasItem(/* args... */)
|
364 |
+
{
|
365 |
+
$args = func_get_args();
|
366 |
+
return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItem'), $args);
|
367 |
+
}
|
368 |
+
}
|
369 |
+
|
370 |
+
if (!function_exists('hasItems')) {
|
371 |
+
/**
|
372 |
+
* Test if the value is an array containing elements that match all of these
|
373 |
+
* matchers.
|
374 |
+
*
|
375 |
+
* Example:
|
376 |
+
* <pre>
|
377 |
+
* assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
|
378 |
+
* </pre>
|
379 |
+
*/
|
380 |
+
function hasItems(/* args... */)
|
381 |
+
{
|
382 |
+
$args = func_get_args();
|
383 |
+
return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItems'), $args);
|
384 |
+
}
|
385 |
+
}
|
386 |
+
|
387 |
+
if (!function_exists('equalTo')) {
|
388 |
+
/**
|
389 |
+
* Is the value equal to another value, as tested by the use of the "=="
|
390 |
+
* comparison operator?
|
391 |
+
*/
|
392 |
+
function equalTo($item)
|
393 |
+
{
|
394 |
+
return \Hamcrest\Core\IsEqual::equalTo($item);
|
395 |
+
}
|
396 |
+
}
|
397 |
+
|
398 |
+
if (!function_exists('identicalTo')) {
|
399 |
+
/**
|
400 |
+
* Tests of the value is identical to $value as tested by the "===" operator.
|
401 |
+
*/
|
402 |
+
function identicalTo($value)
|
403 |
+
{
|
404 |
+
return \Hamcrest\Core\IsIdentical::identicalTo($value);
|
405 |
+
}
|
406 |
+
}
|
407 |
+
|
408 |
+
if (!function_exists('anInstanceOf')) {
|
409 |
+
/**
|
410 |
+
* Is the value an instance of a particular type?
|
411 |
+
* This version assumes no relationship between the required type and
|
412 |
+
* the signature of the method that sets it up, for example in
|
413 |
+
* <code>assertThat($anObject, anInstanceOf('Thing'));</code>
|
414 |
+
*/
|
415 |
+
function anInstanceOf($theClass)
|
416 |
+
{
|
417 |
+
return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
|
418 |
+
}
|
419 |
+
}
|
420 |
+
|
421 |
+
if (!function_exists('any')) {
|
422 |
+
/**
|
423 |
+
* Is the value an instance of a particular type?
|
424 |
+
* This version assumes no relationship between the required type and
|
425 |
+
* the signature of the method that sets it up, for example in
|
426 |
+
* <code>assertThat($anObject, anInstanceOf('Thing'));</code>
|
427 |
+
*/
|
428 |
+
function any($theClass)
|
429 |
+
{
|
430 |
+
return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
|
431 |
+
}
|
432 |
+
}
|
433 |
+
|
434 |
+
if (!function_exists('not')) {
|
435 |
+
/**
|
436 |
+
* Matches if value does not match $value.
|
437 |
+
*/
|
438 |
+
function not($value)
|
439 |
+
{
|
440 |
+
return \Hamcrest\Core\IsNot::not($value);
|
441 |
+
}
|
442 |
+
}
|
443 |
+
|
444 |
+
if (!function_exists('nullValue')) {
|
445 |
+
/**
|
446 |
+
* Matches if value is null.
|
447 |
+
*/
|
448 |
+
function nullValue()
|
449 |
+
{
|
450 |
+
return \Hamcrest\Core\IsNull::nullValue();
|
451 |
+
}
|
452 |
+
}
|
453 |
+
|
454 |
+
if (!function_exists('notNullValue')) {
|
455 |
+
/**
|
456 |
+
* Matches if value is not null.
|
457 |
+
*/
|
458 |
+
function notNullValue()
|
459 |
+
{
|
460 |
+
return \Hamcrest\Core\IsNull::notNullValue();
|
461 |
+
}
|
462 |
+
}
|
463 |
+
|
464 |
+
if (!function_exists('sameInstance')) {
|
465 |
+
/**
|
466 |
+
* Creates a new instance of IsSame.
|
467 |
+
*
|
468 |
+
* @param mixed $object
|
469 |
+
* The predicate evaluates to true only when the argument is
|
470 |
+
* this object.
|
471 |
+
*
|
472 |
+
* @return \Hamcrest\Core\IsSame
|
473 |
+
*/
|
474 |
+
function sameInstance($object)
|
475 |
+
{
|
476 |
+
return \Hamcrest\Core\IsSame::sameInstance($object);
|
477 |
+
}
|
478 |
+
}
|
479 |
+
|
480 |
+
if (!function_exists('typeOf')) {
|
481 |
+
/**
|
482 |
+
* Is the value a particular built-in type?
|
483 |
+
*/
|
484 |
+
function typeOf($theType)
|
485 |
+
{
|
486 |
+
return \Hamcrest\Core\IsTypeOf::typeOf($theType);
|
487 |
+
}
|
488 |
+
}
|
489 |
+
|
490 |
+
if (!function_exists('set')) {
|
491 |
+
/**
|
492 |
+
* Matches if value (class, object, or array) has named $property.
|
493 |
+
*/
|
494 |
+
function set($property)
|
495 |
+
{
|
496 |
+
return \Hamcrest\Core\Set::set($property);
|
497 |
+
}
|
498 |
+
}
|
499 |
+
|
500 |
+
if (!function_exists('notSet')) {
|
501 |
+
/**
|
502 |
+
* Matches if value (class, object, or array) does not have named $property.
|
503 |
+
*/
|
504 |
+
function notSet($property)
|
505 |
+
{
|
506 |
+
return \Hamcrest\Core\Set::notSet($property);
|
507 |
+
}
|
508 |
+
}
|
509 |
+
|
510 |
+
if (!function_exists('closeTo')) {
|
511 |
+
/**
|
512 |
+
* Matches if value is a number equal to $value within some range of
|
513 |
+
* acceptable error $delta.
|
514 |
+
*/
|
515 |
+
function closeTo($value, $delta)
|
516 |
+
{
|
517 |
+
return \Hamcrest\Number\IsCloseTo::closeTo($value, $delta);
|
518 |
+
}
|
519 |
+
}
|
520 |
+
|
521 |
+
if (!function_exists('comparesEqualTo')) {
|
522 |
+
/**
|
523 |
+
* The value is not > $value, nor < $value.
|
524 |
+
*/
|
525 |
+
function comparesEqualTo($value)
|
526 |
+
{
|
527 |
+
return \Hamcrest\Number\OrderingComparison::comparesEqualTo($value);
|
528 |
+
}
|
529 |
+
}
|
530 |
+
|
531 |
+
if (!function_exists('greaterThan')) {
|
532 |
+
/**
|
533 |
+
* The value is > $value.
|
534 |
+
*/
|
535 |
+
function greaterThan($value)
|
536 |
+
{
|
537 |
+
return \Hamcrest\Number\OrderingComparison::greaterThan($value);
|
538 |
+
}
|
539 |
+
}
|
540 |
+
|
541 |
+
if (!function_exists('greaterThanOrEqualTo')) {
|
542 |
+
/**
|
543 |
+
* The value is >= $value.
|
544 |
+
*/
|
545 |
+
function greaterThanOrEqualTo($value)
|
546 |
+
{
|
547 |
+
return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
|
548 |
+
}
|
549 |
+
}
|
550 |
+
|
551 |
+
if (!function_exists('atLeast')) {
|
552 |
+
/**
|
553 |
+
* The value is >= $value.
|
554 |
+
*/
|
555 |
+
function atLeast($value)
|
556 |
+
{
|
557 |
+
return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
|
558 |
+
}
|
559 |
+
}
|
560 |
+
|
561 |
+
if (!function_exists('lessThan')) {
|
562 |
+
/**
|
563 |
+
* The value is < $value.
|
564 |
+
*/
|
565 |
+
function lessThan($value)
|
566 |
+
{
|
567 |
+
return \Hamcrest\Number\OrderingComparison::lessThan($value);
|
568 |
+
}
|
569 |
+
}
|
570 |
+
|
571 |
+
if (!function_exists('lessThanOrEqualTo')) {
|
572 |
+
/**
|
573 |
+
* The value is <= $value.
|
574 |
+
*/
|
575 |
+
function lessThanOrEqualTo($value)
|
576 |
+
{
|
577 |
+
return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
|
578 |
+
}
|
579 |
+
}
|
580 |
+
|
581 |
+
if (!function_exists('atMost')) {
|
582 |
+
/**
|
583 |
+
* The value is <= $value.
|
584 |
+
*/
|
585 |
+
function atMost($value)
|
586 |
+
{
|
587 |
+
return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
|
588 |
+
}
|
589 |
+
}
|
590 |
+
|
591 |
+
if (!function_exists('isEmptyString')) {
|
592 |
+
/**
|
593 |
+
* Matches if value is a zero-length string.
|
594 |
+
*/
|
595 |
+
function isEmptyString()
|
596 |
+
{
|
597 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyString();
|
598 |
+
}
|
599 |
+
}
|
600 |
+
|
601 |
+
if (!function_exists('emptyString')) {
|
602 |
+
/**
|
603 |
+
* Matches if value is a zero-length string.
|
604 |
+
*/
|
605 |
+
function emptyString()
|
606 |
+
{
|
607 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyString();
|
608 |
+
}
|
609 |
+
}
|
610 |
+
|
611 |
+
if (!function_exists('isEmptyOrNullString')) {
|
612 |
+
/**
|
613 |
+
* Matches if value is null or a zero-length string.
|
614 |
+
*/
|
615 |
+
function isEmptyOrNullString()
|
616 |
+
{
|
617 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
|
618 |
+
}
|
619 |
+
}
|
620 |
+
|
621 |
+
if (!function_exists('nullOrEmptyString')) {
|
622 |
+
/**
|
623 |
+
* Matches if value is null or a zero-length string.
|
624 |
+
*/
|
625 |
+
function nullOrEmptyString()
|
626 |
+
{
|
627 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
|
628 |
+
}
|
629 |
+
}
|
630 |
+
|
631 |
+
if (!function_exists('isNonEmptyString')) {
|
632 |
+
/**
|
633 |
+
* Matches if value is a non-zero-length string.
|
634 |
+
*/
|
635 |
+
function isNonEmptyString()
|
636 |
+
{
|
637 |
+
return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
|
638 |
+
}
|
639 |
+
}
|
640 |
+
|
641 |
+
if (!function_exists('nonEmptyString')) {
|
642 |
+
/**
|
643 |
+
* Matches if value is a non-zero-length string.
|
644 |
+
*/
|
645 |
+
function nonEmptyString()
|
646 |
+
{
|
647 |
+
return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
|
648 |
+
}
|
649 |
+
}
|
650 |
+
|
651 |
+
if (!function_exists('equalToIgnoringCase')) {
|
652 |
+
/**
|
653 |
+
* Matches if value is a string equal to $string, regardless of the case.
|
654 |
+
*/
|
655 |
+
function equalToIgnoringCase($string)
|
656 |
+
{
|
657 |
+
return \Hamcrest\Text\IsEqualIgnoringCase::equalToIgnoringCase($string);
|
658 |
+
}
|
659 |
+
}
|
660 |
+
|
661 |
+
if (!function_exists('equalToIgnoringWhiteSpace')) {
|
662 |
+
/**
|
663 |
+
* Matches if value is a string equal to $string, regardless of whitespace.
|
664 |
+
*/
|
665 |
+
function equalToIgnoringWhiteSpace($string)
|
666 |
+
{
|
667 |
+
return \Hamcrest\Text\IsEqualIgnoringWhiteSpace::equalToIgnoringWhiteSpace($string);
|
668 |
+
}
|
669 |
+
}
|
670 |
+
|
671 |
+
if (!function_exists('matchesPattern')) {
|
672 |
+
/**
|
673 |
+
* Matches if value is a string that matches regular expression $pattern.
|
674 |
+
*/
|
675 |
+
function matchesPattern($pattern)
|
676 |
+
{
|
677 |
+
return \Hamcrest\Text\MatchesPattern::matchesPattern($pattern);
|
678 |
+
}
|
679 |
+
}
|
680 |
+
|
681 |
+
if (!function_exists('containsString')) {
|
682 |
+
/**
|
683 |
+
* Matches if value is a string that contains $substring.
|
684 |
+
*/
|
685 |
+
function containsString($substring)
|
686 |
+
{
|
687 |
+
return \Hamcrest\Text\StringContains::containsString($substring);
|
688 |
+
}
|
689 |
+
}
|
690 |
+
|
691 |
+
if (!function_exists('containsStringIgnoringCase')) {
|
692 |
+
/**
|
693 |
+
* Matches if value is a string that contains $substring regardless of the case.
|
694 |
+
*/
|
695 |
+
function containsStringIgnoringCase($substring)
|
696 |
+
{
|
697 |
+
return \Hamcrest\Text\StringContainsIgnoringCase::containsStringIgnoringCase($substring);
|
698 |
+
}
|
699 |
+
}
|
700 |
+
|
701 |
+
if (!function_exists('stringContainsInOrder')) {
|
702 |
+
/**
|
703 |
+
* Matches if value contains $substrings in a constrained order.
|
704 |
+
*/
|
705 |
+
function stringContainsInOrder(/* args... */)
|
706 |
+
{
|
707 |
+
$args = func_get_args();
|
708 |
+
return call_user_func_array(array('\Hamcrest\Text\StringContainsInOrder', 'stringContainsInOrder'), $args);
|
709 |
+
}
|
710 |
+
}
|
711 |
+
|
712 |
+
if (!function_exists('endsWith')) {
|
713 |
+
/**
|
714 |
+
* Matches if value is a string that ends with $substring.
|
715 |
+
*/
|
716 |
+
function endsWith($substring)
|
717 |
+
{
|
718 |
+
return \Hamcrest\Text\StringEndsWith::endsWith($substring);
|
719 |
+
}
|
720 |
+
}
|
721 |
+
|
722 |
+
if (!function_exists('startsWith')) {
|
723 |
+
/**
|
724 |
+
* Matches if value is a string that starts with $substring.
|
725 |
+
*/
|
726 |
+
function startsWith($substring)
|
727 |
+
{
|
728 |
+
return \Hamcrest\Text\StringStartsWith::startsWith($substring);
|
729 |
+
}
|
730 |
+
}
|
731 |
+
|
732 |
+
if (!function_exists('arrayValue')) {
|
733 |
+
/**
|
734 |
+
* Is the value an array?
|
735 |
+
*/
|
736 |
+
function arrayValue()
|
737 |
+
{
|
738 |
+
return \Hamcrest\Type\IsArray::arrayValue();
|
739 |
+
}
|
740 |
+
}
|
741 |
+
|
742 |
+
if (!function_exists('booleanValue')) {
|
743 |
+
/**
|
744 |
+
* Is the value a boolean?
|
745 |
+
*/
|
746 |
+
function booleanValue()
|
747 |
+
{
|
748 |
+
return \Hamcrest\Type\IsBoolean::booleanValue();
|
749 |
+
}
|
750 |
+
}
|
751 |
+
|
752 |
+
if (!function_exists('boolValue')) {
|
753 |
+
/**
|
754 |
+
* Is the value a boolean?
|
755 |
+
*/
|
756 |
+
function boolValue()
|
757 |
+
{
|
758 |
+
return \Hamcrest\Type\IsBoolean::booleanValue();
|
759 |
+
}
|
760 |
+
}
|
761 |
+
|
762 |
+
if (!function_exists('callableValue')) {
|
763 |
+
/**
|
764 |
+
* Is the value callable?
|
765 |
+
*/
|
766 |
+
function callableValue()
|
767 |
+
{
|
768 |
+
return \Hamcrest\Type\IsCallable::callableValue();
|
769 |
+
}
|
770 |
+
}
|
771 |
+
|
772 |
+
if (!function_exists('doubleValue')) {
|
773 |
+
/**
|
774 |
+
* Is the value a float/double?
|
775 |
+
*/
|
776 |
+
function doubleValue()
|
777 |
+
{
|
778 |
+
return \Hamcrest\Type\IsDouble::doubleValue();
|
779 |
+
}
|
780 |
+
}
|
781 |
+
|
782 |
+
if (!function_exists('floatValue')) {
|
783 |
+
/**
|
784 |
+
* Is the value a float/double?
|
785 |
+
*/
|
786 |
+
function floatValue()
|
787 |
+
{
|
788 |
+
return \Hamcrest\Type\IsDouble::doubleValue();
|
789 |
+
}
|
790 |
+
}
|
791 |
+
|
792 |
+
if (!function_exists('integerValue')) {
|
793 |
+
/**
|
794 |
+
* Is the value an integer?
|
795 |
+
*/
|
796 |
+
function integerValue()
|
797 |
+
{
|
798 |
+
return \Hamcrest\Type\IsInteger::integerValue();
|
799 |
+
}
|
800 |
+
}
|
801 |
+
|
802 |
+
if (!function_exists('intValue')) {
|
803 |
+
/**
|
804 |
+
* Is the value an integer?
|
805 |
+
*/
|
806 |
+
function intValue()
|
807 |
+
{
|
808 |
+
return \Hamcrest\Type\IsInteger::integerValue();
|
809 |
+
}
|
810 |
+
}
|
811 |
+
|
812 |
+
if (!function_exists('numericValue')) {
|
813 |
+
/**
|
814 |
+
* Is the value a numeric?
|
815 |
+
*/
|
816 |
+
function numericValue()
|
817 |
+
{
|
818 |
+
return \Hamcrest\Type\IsNumeric::numericValue();
|
819 |
+
}
|
820 |
+
}
|
821 |
+
|
822 |
+
if (!function_exists('objectValue')) {
|
823 |
+
/**
|
824 |
+
* Is the value an object?
|
825 |
+
*/
|
826 |
+
function objectValue()
|
827 |
+
{
|
828 |
+
return \Hamcrest\Type\IsObject::objectValue();
|
829 |
+
}
|
830 |
+
}
|
831 |
+
|
832 |
+
if (!function_exists('anObject')) {
|
833 |
+
/**
|
834 |
+
* Is the value an object?
|
835 |
+
*/
|
836 |
+
function anObject()
|
837 |
+
{
|
838 |
+
return \Hamcrest\Type\IsObject::objectValue();
|
839 |
+
}
|
840 |
+
}
|
841 |
+
|
842 |
+
if (!function_exists('resourceValue')) {
|
843 |
+
/**
|
844 |
+
* Is the value a resource?
|
845 |
+
*/
|
846 |
+
function resourceValue()
|
847 |
+
{
|
848 |
+
return \Hamcrest\Type\IsResource::resourceValue();
|
849 |
+
}
|
850 |
+
}
|
851 |
+
|
852 |
+
if (!function_exists('scalarValue')) {
|
853 |
+
/**
|
854 |
+
* Is the value a scalar (boolean, integer, double, or string)?
|
855 |
+
*/
|
856 |
+
function scalarValue()
|
857 |
+
{
|
858 |
+
return \Hamcrest\Type\IsScalar::scalarValue();
|
859 |
+
}
|
860 |
+
}
|
861 |
+
|
862 |
+
if (!function_exists('stringValue')) {
|
863 |
+
/**
|
864 |
+
* Is the value a string?
|
865 |
+
*/
|
866 |
+
function stringValue()
|
867 |
+
{
|
868 |
+
return \Hamcrest\Type\IsString::stringValue();
|
869 |
+
}
|
870 |
+
}
|
871 |
+
|
872 |
+
if (!function_exists('hasXPath')) {
|
873 |
+
/**
|
874 |
+
* Wraps <code>$matcher</code> with {@link Hamcrest\Core\IsEqual)
|
875 |
+
* if it's not a matcher and the XPath in <code>count()</code>
|
876 |
+
* if it's an integer.
|
877 |
+
*/
|
878 |
+
function hasXPath($xpath, $matcher = null)
|
879 |
+
{
|
880 |
+
return \Hamcrest\Xml\HasXPath::hasXPath($xpath, $matcher);
|
881 |
+
}
|
882 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
// NOTE: This class is not exactly a direct port of Java's since Java handles
|
9 |
+
// arrays quite differently than PHP
|
10 |
+
|
11 |
+
// TODO: Allow this to take matchers or values within the array
|
12 |
+
use Hamcrest\Description;
|
13 |
+
use Hamcrest\TypeSafeMatcher;
|
14 |
+
use Hamcrest\Util;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Matcher for array whose elements satisfy a sequence of matchers.
|
18 |
+
* The array size must equal the number of element matchers.
|
19 |
+
*/
|
20 |
+
class IsArray extends TypeSafeMatcher
|
21 |
+
{
|
22 |
+
|
23 |
+
private $_elementMatchers;
|
24 |
+
|
25 |
+
public function __construct(array $elementMatchers)
|
26 |
+
{
|
27 |
+
parent::__construct(self::TYPE_ARRAY);
|
28 |
+
|
29 |
+
Util::checkAllAreMatchers($elementMatchers);
|
30 |
+
|
31 |
+
$this->_elementMatchers = $elementMatchers;
|
32 |
+
}
|
33 |
+
|
34 |
+
protected function matchesSafely($array)
|
35 |
+
{
|
36 |
+
if (array_keys($array) != array_keys($this->_elementMatchers)) {
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
/** @var $matcher \Hamcrest\Matcher */
|
41 |
+
foreach ($this->_elementMatchers as $k => $matcher) {
|
42 |
+
if (!$matcher->matches($array[$k])) {
|
43 |
+
return false;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
return true;
|
48 |
+
}
|
49 |
+
|
50 |
+
protected function describeMismatchSafely($actual, Description $mismatchDescription)
|
51 |
+
{
|
52 |
+
if (count($actual) != count($this->_elementMatchers)) {
|
53 |
+
$mismatchDescription->appendText('array length was ' . count($actual));
|
54 |
+
|
55 |
+
return;
|
56 |
+
} elseif (array_keys($actual) != array_keys($this->_elementMatchers)) {
|
57 |
+
$mismatchDescription->appendText('array keys were ')
|
58 |
+
->appendValueList(
|
59 |
+
$this->descriptionStart(),
|
60 |
+
$this->descriptionSeparator(),
|
61 |
+
$this->descriptionEnd(),
|
62 |
+
array_keys($actual)
|
63 |
+
)
|
64 |
+
;
|
65 |
+
|
66 |
+
return;
|
67 |
+
}
|
68 |
+
|
69 |
+
/** @var $matcher \Hamcrest\Matcher */
|
70 |
+
foreach ($this->_elementMatchers as $k => $matcher) {
|
71 |
+
if (!$matcher->matches($actual[$k])) {
|
72 |
+
$mismatchDescription->appendText('element ')->appendValue($k)
|
73 |
+
->appendText(' was ')->appendValue($actual[$k]);
|
74 |
+
|
75 |
+
return;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
public function describeTo(Description $description)
|
81 |
+
{
|
82 |
+
$description->appendList(
|
83 |
+
$this->descriptionStart(),
|
84 |
+
$this->descriptionSeparator(),
|
85 |
+
$this->descriptionEnd(),
|
86 |
+
$this->_elementMatchers
|
87 |
+
);
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Evaluates to true only if each $matcher[$i] is satisfied by $array[$i].
|
92 |
+
*
|
93 |
+
* @factory ...
|
94 |
+
*/
|
95 |
+
public static function anArray(/* args... */)
|
96 |
+
{
|
97 |
+
$args = func_get_args();
|
98 |
+
|
99 |
+
return new self(Util::createMatcherArray($args));
|
100 |
+
}
|
101 |
+
|
102 |
+
// -- Protected Methods
|
103 |
+
|
104 |
+
protected function descriptionStart()
|
105 |
+
{
|
106 |
+
return '[';
|
107 |
+
}
|
108 |
+
|
109 |
+
protected function descriptionSeparator()
|
110 |
+
{
|
111 |
+
return ', ';
|
112 |
+
}
|
113 |
+
|
114 |
+
protected function descriptionEnd()
|
115 |
+
{
|
116 |
+
return ']';
|
117 |
+
}
|
118 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\Matcher;
|
9 |
+
use Hamcrest\TypeSafeMatcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Matches if an array contains an item satisfying a nested matcher.
|
14 |
+
*/
|
15 |
+
class IsArrayContaining extends TypeSafeMatcher
|
16 |
+
{
|
17 |
+
|
18 |
+
private $_elementMatcher;
|
19 |
+
|
20 |
+
public function __construct(Matcher $elementMatcher)
|
21 |
+
{
|
22 |
+
parent::__construct(self::TYPE_ARRAY);
|
23 |
+
|
24 |
+
$this->_elementMatcher = $elementMatcher;
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function matchesSafely($array)
|
28 |
+
{
|
29 |
+
foreach ($array as $element) {
|
30 |
+
if ($this->_elementMatcher->matches($element)) {
|
31 |
+
return true;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function describeMismatchSafely($array, Description $mismatchDescription)
|
39 |
+
{
|
40 |
+
$mismatchDescription->appendText('was ')->appendValue($array);
|
41 |
+
}
|
42 |
+
|
43 |
+
public function describeTo(Description $description)
|
44 |
+
{
|
45 |
+
$description
|
46 |
+
->appendText('an array containing ')
|
47 |
+
->appendDescriptionOf($this->_elementMatcher)
|
48 |
+
;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Evaluates to true if any item in an array satisfies the given matcher.
|
53 |
+
*
|
54 |
+
* @param mixed $item as a {@link Hamcrest\Matcher} or a value.
|
55 |
+
*
|
56 |
+
* @return \Hamcrest\Arrays\IsArrayContaining
|
57 |
+
* @factory hasValue
|
58 |
+
*/
|
59 |
+
public static function hasItemInArray($item)
|
60 |
+
{
|
61 |
+
return new self(Util::wrapValueWithIsEqual($item));
|
62 |
+
}
|
63 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\TypeSafeDiagnosingMatcher;
|
9 |
+
use Hamcrest\Util;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Matches if an array contains a set of items satisfying nested matchers.
|
13 |
+
*/
|
14 |
+
class IsArrayContainingInAnyOrder extends TypeSafeDiagnosingMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_elementMatchers;
|
18 |
+
|
19 |
+
public function __construct(array $elementMatchers)
|
20 |
+
{
|
21 |
+
parent::__construct(self::TYPE_ARRAY);
|
22 |
+
|
23 |
+
Util::checkAllAreMatchers($elementMatchers);
|
24 |
+
|
25 |
+
$this->_elementMatchers = $elementMatchers;
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function matchesSafelyWithDiagnosticDescription($array, Description $mismatchDescription)
|
29 |
+
{
|
30 |
+
$matching = new MatchingOnce($this->_elementMatchers, $mismatchDescription);
|
31 |
+
|
32 |
+
foreach ($array as $element) {
|
33 |
+
if (!$matching->matches($element)) {
|
34 |
+
return false;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
return $matching->isFinished($array);
|
39 |
+
}
|
40 |
+
|
41 |
+
public function describeTo(Description $description)
|
42 |
+
{
|
43 |
+
$description->appendList('[', ', ', ']', $this->_elementMatchers)
|
44 |
+
->appendText(' in any order')
|
45 |
+
;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* An array with elements that match the given matchers.
|
50 |
+
*
|
51 |
+
* @factory containsInAnyOrder ...
|
52 |
+
*/
|
53 |
+
public static function arrayContainingInAnyOrder(/* args... */)
|
54 |
+
{
|
55 |
+
$args = func_get_args();
|
56 |
+
|
57 |
+
return new self(Util::createMatcherArray($args));
|
58 |
+
}
|
59 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\TypeSafeDiagnosingMatcher;
|
9 |
+
use Hamcrest\Util;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Matches if an array contains a set of items satisfying nested matchers.
|
13 |
+
*/
|
14 |
+
class IsArrayContainingInOrder extends TypeSafeDiagnosingMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_elementMatchers;
|
18 |
+
|
19 |
+
public function __construct(array $elementMatchers)
|
20 |
+
{
|
21 |
+
parent::__construct(self::TYPE_ARRAY);
|
22 |
+
|
23 |
+
Util::checkAllAreMatchers($elementMatchers);
|
24 |
+
|
25 |
+
$this->_elementMatchers = $elementMatchers;
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function matchesSafelyWithDiagnosticDescription($array, Description $mismatchDescription)
|
29 |
+
{
|
30 |
+
$series = new SeriesMatchingOnce($this->_elementMatchers, $mismatchDescription);
|
31 |
+
|
32 |
+
foreach ($array as $element) {
|
33 |
+
if (!$series->matches($element)) {
|
34 |
+
return false;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
return $series->isFinished();
|
39 |
+
}
|
40 |
+
|
41 |
+
public function describeTo(Description $description)
|
42 |
+
{
|
43 |
+
$description->appendList('[', ', ', ']', $this->_elementMatchers);
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* An array with elements that match the given matchers in the same order.
|
48 |
+
*
|
49 |
+
* @factory contains ...
|
50 |
+
*/
|
51 |
+
public static function arrayContaining(/* args... */)
|
52 |
+
{
|
53 |
+
$args = func_get_args();
|
54 |
+
|
55 |
+
return new self(Util::createMatcherArray($args));
|
56 |
+
}
|
57 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\Matcher;
|
9 |
+
use Hamcrest\TypeSafeMatcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Matches if an array contains the specified key.
|
14 |
+
*/
|
15 |
+
class IsArrayContainingKey extends TypeSafeMatcher
|
16 |
+
{
|
17 |
+
|
18 |
+
private $_keyMatcher;
|
19 |
+
|
20 |
+
public function __construct(Matcher $keyMatcher)
|
21 |
+
{
|
22 |
+
parent::__construct(self::TYPE_ARRAY);
|
23 |
+
|
24 |
+
$this->_keyMatcher = $keyMatcher;
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function matchesSafely($array)
|
28 |
+
{
|
29 |
+
foreach ($array as $key => $element) {
|
30 |
+
if ($this->_keyMatcher->matches($key)) {
|
31 |
+
return true;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function describeMismatchSafely($array, Description $mismatchDescription)
|
39 |
+
{
|
40 |
+
//Not using appendValueList() so that keys can be shown
|
41 |
+
$mismatchDescription->appendText('array was ')
|
42 |
+
->appendText('[')
|
43 |
+
;
|
44 |
+
$loop = false;
|
45 |
+
foreach ($array as $key => $value) {
|
46 |
+
if ($loop) {
|
47 |
+
$mismatchDescription->appendText(', ');
|
48 |
+
}
|
49 |
+
$mismatchDescription->appendValue($key)->appendText(' => ')->appendValue($value);
|
50 |
+
$loop = true;
|
51 |
+
}
|
52 |
+
$mismatchDescription->appendText(']');
|
53 |
+
}
|
54 |
+
|
55 |
+
public function describeTo(Description $description)
|
56 |
+
{
|
57 |
+
$description
|
58 |
+
->appendText('array with key ')
|
59 |
+
->appendDescriptionOf($this->_keyMatcher)
|
60 |
+
;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Evaluates to true if any key in an array matches the given matcher.
|
65 |
+
*
|
66 |
+
* @param mixed $key as a {@link Hamcrest\Matcher} or a value.
|
67 |
+
*
|
68 |
+
* @return \Hamcrest\Arrays\IsArrayContainingKey
|
69 |
+
* @factory hasKey
|
70 |
+
*/
|
71 |
+
public static function hasKeyInArray($key)
|
72 |
+
{
|
73 |
+
return new self(Util::wrapValueWithIsEqual($key));
|
74 |
+
}
|
75 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Tests for the presence of both a key and value inside an array.
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\Matcher;
|
9 |
+
use Hamcrest\TypeSafeMatcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @namespace
|
14 |
+
*/
|
15 |
+
|
16 |
+
class IsArrayContainingKeyValuePair extends TypeSafeMatcher
|
17 |
+
{
|
18 |
+
|
19 |
+
private $_keyMatcher;
|
20 |
+
private $_valueMatcher;
|
21 |
+
|
22 |
+
public function __construct(Matcher $keyMatcher, Matcher $valueMatcher)
|
23 |
+
{
|
24 |
+
parent::__construct(self::TYPE_ARRAY);
|
25 |
+
|
26 |
+
$this->_keyMatcher = $keyMatcher;
|
27 |
+
$this->_valueMatcher = $valueMatcher;
|
28 |
+
}
|
29 |
+
|
30 |
+
protected function matchesSafely($array)
|
31 |
+
{
|
32 |
+
foreach ($array as $key => $value) {
|
33 |
+
if ($this->_keyMatcher->matches($key) && $this->_valueMatcher->matches($value)) {
|
34 |
+
return true;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
return false;
|
39 |
+
}
|
40 |
+
|
41 |
+
protected function describeMismatchSafely($array, Description $mismatchDescription)
|
42 |
+
{
|
43 |
+
//Not using appendValueList() so that keys can be shown
|
44 |
+
$mismatchDescription->appendText('array was ')
|
45 |
+
->appendText('[')
|
46 |
+
;
|
47 |
+
$loop = false;
|
48 |
+
foreach ($array as $key => $value) {
|
49 |
+
if ($loop) {
|
50 |
+
$mismatchDescription->appendText(', ');
|
51 |
+
}
|
52 |
+
$mismatchDescription->appendValue($key)->appendText(' => ')->appendValue($value);
|
53 |
+
$loop = true;
|
54 |
+
}
|
55 |
+
$mismatchDescription->appendText(']');
|
56 |
+
}
|
57 |
+
|
58 |
+
public function describeTo(Description $description)
|
59 |
+
{
|
60 |
+
$description->appendText('array containing [')
|
61 |
+
->appendDescriptionOf($this->_keyMatcher)
|
62 |
+
->appendText(' => ')
|
63 |
+
->appendDescriptionOf($this->_valueMatcher)
|
64 |
+
->appendText(']')
|
65 |
+
;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Test if an array has both an key and value in parity with each other.
|
70 |
+
*
|
71 |
+
* @factory hasEntry
|
72 |
+
*/
|
73 |
+
public static function hasKeyValuePair($key, $value)
|
74 |
+
{
|
75 |
+
return new self(
|
76 |
+
Util::wrapValueWithIsEqual($key),
|
77 |
+
Util::wrapValueWithIsEqual($value)
|
78 |
+
);
|
79 |
+
}
|
80 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\DescribedAs;
|
8 |
+
use Hamcrest\Core\IsNot;
|
9 |
+
use Hamcrest\FeatureMatcher;
|
10 |
+
use Hamcrest\Matcher;
|
11 |
+
use Hamcrest\Util;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Matches if array size satisfies a nested matcher.
|
15 |
+
*/
|
16 |
+
class IsArrayWithSize extends FeatureMatcher
|
17 |
+
{
|
18 |
+
|
19 |
+
public function __construct(Matcher $sizeMatcher)
|
20 |
+
{
|
21 |
+
parent::__construct(
|
22 |
+
self::TYPE_ARRAY,
|
23 |
+
null,
|
24 |
+
$sizeMatcher,
|
25 |
+
'an array with size',
|
26 |
+
'array size'
|
27 |
+
);
|
28 |
+
}
|
29 |
+
|
30 |
+
protected function featureValueOf($array)
|
31 |
+
{
|
32 |
+
return count($array);
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Does array size satisfy a given matcher?
|
37 |
+
*
|
38 |
+
* @param \Hamcrest\Matcher|int $size as a {@link Hamcrest\Matcher} or a value.
|
39 |
+
*
|
40 |
+
* @return \Hamcrest\Arrays\IsArrayWithSize
|
41 |
+
* @factory
|
42 |
+
*/
|
43 |
+
public static function arrayWithSize($size)
|
44 |
+
{
|
45 |
+
return new self(Util::wrapValueWithIsEqual($size));
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Matches an empty array.
|
50 |
+
*
|
51 |
+
* @factory
|
52 |
+
*/
|
53 |
+
public static function emptyArray()
|
54 |
+
{
|
55 |
+
return DescribedAs::describedAs(
|
56 |
+
'an empty array',
|
57 |
+
self::arrayWithSize(0)
|
58 |
+
);
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Matches an empty array.
|
63 |
+
*
|
64 |
+
* @factory
|
65 |
+
*/
|
66 |
+
public static function nonEmptyArray()
|
67 |
+
{
|
68 |
+
return DescribedAs::describedAs(
|
69 |
+
'a non-empty array',
|
70 |
+
self::arrayWithSize(IsNot::not(0))
|
71 |
+
);
|
72 |
+
}
|
73 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
class MatchingOnce
|
11 |
+
{
|
12 |
+
|
13 |
+
private $_elementMatchers;
|
14 |
+
private $_mismatchDescription;
|
15 |
+
|
16 |
+
public function __construct(array $elementMatchers, Description $mismatchDescription)
|
17 |
+
{
|
18 |
+
$this->_elementMatchers = $elementMatchers;
|
19 |
+
$this->_mismatchDescription = $mismatchDescription;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function matches($item)
|
23 |
+
{
|
24 |
+
return $this->_isNotSurplus($item) && $this->_isMatched($item);
|
25 |
+
}
|
26 |
+
|
27 |
+
public function isFinished($items)
|
28 |
+
{
|
29 |
+
if (empty($this->_elementMatchers)) {
|
30 |
+
return true;
|
31 |
+
}
|
32 |
+
|
33 |
+
$this->_mismatchDescription
|
34 |
+
->appendText('No item matches: ')->appendList('', ', ', '', $this->_elementMatchers)
|
35 |
+
->appendText(' in ')->appendValueList('[', ', ', ']', $items)
|
36 |
+
;
|
37 |
+
|
38 |
+
return false;
|
39 |
+
}
|
40 |
+
|
41 |
+
// -- Private Methods
|
42 |
+
|
43 |
+
private function _isNotSurplus($item)
|
44 |
+
{
|
45 |
+
if (empty($this->_elementMatchers)) {
|
46 |
+
$this->_mismatchDescription->appendText('Not matched: ')->appendValue($item);
|
47 |
+
|
48 |
+
return false;
|
49 |
+
}
|
50 |
+
|
51 |
+
return true;
|
52 |
+
}
|
53 |
+
|
54 |
+
private function _isMatched($item)
|
55 |
+
{
|
56 |
+
/** @var $matcher \Hamcrest\Matcher */
|
57 |
+
foreach ($this->_elementMatchers as $i => $matcher) {
|
58 |
+
if ($matcher->matches($item)) {
|
59 |
+
unset($this->_elementMatchers[$i]);
|
60 |
+
|
61 |
+
return true;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
$this->_mismatchDescription->appendText('Not matched: ')->appendValue($item);
|
66 |
+
|
67 |
+
return false;
|
68 |
+
}
|
69 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Arrays;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\Matcher;
|
10 |
+
|
11 |
+
class SeriesMatchingOnce
|
12 |
+
{
|
13 |
+
|
14 |
+
private $_elementMatchers;
|
15 |
+
private $_keys;
|
16 |
+
private $_mismatchDescription;
|
17 |
+
private $_nextMatchKey;
|
18 |
+
|
19 |
+
public function __construct(array $elementMatchers, Description $mismatchDescription)
|
20 |
+
{
|
21 |
+
$this->_elementMatchers = $elementMatchers;
|
22 |
+
$this->_keys = array_keys($elementMatchers);
|
23 |
+
$this->_mismatchDescription = $mismatchDescription;
|
24 |
+
}
|
25 |
+
|
26 |
+
public function matches($item)
|
27 |
+
{
|
28 |
+
return $this->_isNotSurplus($item) && $this->_isMatched($item);
|
29 |
+
}
|
30 |
+
|
31 |
+
public function isFinished()
|
32 |
+
{
|
33 |
+
if (!empty($this->_elementMatchers)) {
|
34 |
+
$nextMatcher = current($this->_elementMatchers);
|
35 |
+
$this->_mismatchDescription->appendText('No item matched: ')->appendDescriptionOf($nextMatcher);
|
36 |
+
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
return true;
|
41 |
+
}
|
42 |
+
|
43 |
+
// -- Private Methods
|
44 |
+
|
45 |
+
private function _isNotSurplus($item)
|
46 |
+
{
|
47 |
+
if (empty($this->_elementMatchers)) {
|
48 |
+
$this->_mismatchDescription->appendText('Not matched: ')->appendValue($item);
|
49 |
+
|
50 |
+
return false;
|
51 |
+
}
|
52 |
+
|
53 |
+
return true;
|
54 |
+
}
|
55 |
+
|
56 |
+
private function _isMatched($item)
|
57 |
+
{
|
58 |
+
$this->_nextMatchKey = array_shift($this->_keys);
|
59 |
+
$nextMatcher = array_shift($this->_elementMatchers);
|
60 |
+
|
61 |
+
if (!$nextMatcher->matches($item)) {
|
62 |
+
$this->_describeMismatch($nextMatcher, $item);
|
63 |
+
|
64 |
+
return false;
|
65 |
+
}
|
66 |
+
|
67 |
+
return true;
|
68 |
+
}
|
69 |
+
|
70 |
+
private function _describeMismatch(Matcher $matcher, $item)
|
71 |
+
{
|
72 |
+
$this->_mismatchDescription->appendText('item with key ' . $this->_nextMatchKey . ': ');
|
73 |
+
$matcher->describeMismatch($item, $this->_mismatchDescription);
|
74 |
+
}
|
75 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
class AssertionError extends \RuntimeException
|
9 |
+
{
|
10 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Internal\SelfDescribingValue;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* A {@link Hamcrest\Description} that is stored as a string.
|
11 |
+
*/
|
12 |
+
abstract class BaseDescription implements Description
|
13 |
+
{
|
14 |
+
|
15 |
+
public function appendText($text)
|
16 |
+
{
|
17 |
+
$this->append($text);
|
18 |
+
|
19 |
+
return $this;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function appendDescriptionOf(SelfDescribing $value)
|
23 |
+
{
|
24 |
+
$value->describeTo($this);
|
25 |
+
|
26 |
+
return $this;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function appendValue($value)
|
30 |
+
{
|
31 |
+
if (is_null($value)) {
|
32 |
+
$this->append('null');
|
33 |
+
} elseif (is_string($value)) {
|
34 |
+
$this->_toPhpSyntax($value);
|
35 |
+
} elseif (is_float($value)) {
|
36 |
+
$this->append('<');
|
37 |
+
$this->append($value);
|
38 |
+
$this->append('F>');
|
39 |
+
} elseif (is_bool($value)) {
|
40 |
+
$this->append('<');
|
41 |
+
$this->append($value ? 'true' : 'false');
|
42 |
+
$this->append('>');
|
43 |
+
} elseif (is_array($value) || $value instanceof \Iterator || $value instanceof \IteratorAggregate) {
|
44 |
+
$this->appendValueList('[', ', ', ']', $value);
|
45 |
+
} elseif (is_object($value) && !method_exists($value, '__toString')) {
|
46 |
+
$this->append('<');
|
47 |
+
$this->append(get_class($value));
|
48 |
+
$this->append('>');
|
49 |
+
} else {
|
50 |
+
$this->append('<');
|
51 |
+
$this->append($value);
|
52 |
+
$this->append('>');
|
53 |
+
}
|
54 |
+
|
55 |
+
return $this;
|
56 |
+
}
|
57 |
+
|
58 |
+
public function appendValueList($start, $separator, $end, $values)
|
59 |
+
{
|
60 |
+
$list = array();
|
61 |
+
foreach ($values as $v) {
|
62 |
+
$list[] = new SelfDescribingValue($v);
|
63 |
+
}
|
64 |
+
|
65 |
+
$this->appendList($start, $separator, $end, $list);
|
66 |
+
|
67 |
+
return $this;
|
68 |
+
}
|
69 |
+
|
70 |
+
public function appendList($start, $separator, $end, $values)
|
71 |
+
{
|
72 |
+
$this->append($start);
|
73 |
+
|
74 |
+
$separate = false;
|
75 |
+
|
76 |
+
foreach ($values as $value) {
|
77 |
+
/*if (!($value instanceof Hamcrest\SelfDescribing)) {
|
78 |
+
$value = new Hamcrest\Internal\SelfDescribingValue($value);
|
79 |
+
}*/
|
80 |
+
|
81 |
+
if ($separate) {
|
82 |
+
$this->append($separator);
|
83 |
+
}
|
84 |
+
|
85 |
+
$this->appendDescriptionOf($value);
|
86 |
+
|
87 |
+
$separate = true;
|
88 |
+
}
|
89 |
+
|
90 |
+
$this->append($end);
|
91 |
+
|
92 |
+
return $this;
|
93 |
+
}
|
94 |
+
|
95 |
+
// -- Protected Methods
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Append the String <var>$str</var> to the description.
|
99 |
+
*/
|
100 |
+
abstract protected function append($str);
|
101 |
+
|
102 |
+
// -- Private Methods
|
103 |
+
|
104 |
+
private function _toPhpSyntax($value)
|
105 |
+
{
|
106 |
+
$str = '"';
|
107 |
+
for ($i = 0, $len = strlen($value); $i < $len; ++$i) {
|
108 |
+
switch ($value[$i]) {
|
109 |
+
case '"':
|
110 |
+
$str .= '\\"';
|
111 |
+
break;
|
112 |
+
|
113 |
+
case "\t":
|
114 |
+
$str .= '\\t';
|
115 |
+
break;
|
116 |
+
|
117 |
+
case "\r":
|
118 |
+
$str .= '\\r';
|
119 |
+
break;
|
120 |
+
|
121 |
+
case "\n":
|
122 |
+
$str .= '\\n';
|
123 |
+
break;
|
124 |
+
|
125 |
+
default:
|
126 |
+
$str .= $value[$i];
|
127 |
+
}
|
128 |
+
}
|
129 |
+
$str .= '"';
|
130 |
+
$this->append($str);
|
131 |
+
}
|
132 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* BaseClass for all Matcher implementations.
|
10 |
+
*
|
11 |
+
* @see Hamcrest\Matcher
|
12 |
+
*/
|
13 |
+
abstract class BaseMatcher implements Matcher
|
14 |
+
{
|
15 |
+
|
16 |
+
public function describeMismatch($item, Description $description)
|
17 |
+
{
|
18 |
+
$description->appendText('was ')->appendValue($item);
|
19 |
+
}
|
20 |
+
|
21 |
+
public function __toString()
|
22 |
+
{
|
23 |
+
return StringDescription::toString($this);
|
24 |
+
}
|
25 |
+
|
26 |
+
public function __invoke()
|
27 |
+
{
|
28 |
+
return call_user_func_array(array($this, 'matches'), func_get_args());
|
29 |
+
}
|
30 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Collection;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Matches if traversable is empty or non-empty.
|
12 |
+
*/
|
13 |
+
class IsEmptyTraversable extends BaseMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private static $_INSTANCE;
|
17 |
+
private static $_NOT_INSTANCE;
|
18 |
+
|
19 |
+
private $_empty;
|
20 |
+
|
21 |
+
public function __construct($empty = true)
|
22 |
+
{
|
23 |
+
$this->_empty = $empty;
|
24 |
+
}
|
25 |
+
|
26 |
+
public function matches($item)
|
27 |
+
{
|
28 |
+
if (!$item instanceof \Traversable) {
|
29 |
+
return false;
|
30 |
+
}
|
31 |
+
|
32 |
+
foreach ($item as $value) {
|
33 |
+
return !$this->_empty;
|
34 |
+
}
|
35 |
+
|
36 |
+
return $this->_empty;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function describeTo(Description $description)
|
40 |
+
{
|
41 |
+
$description->appendText($this->_empty ? 'an empty traversable' : 'a non-empty traversable');
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Returns true if traversable is empty.
|
46 |
+
*
|
47 |
+
* @factory
|
48 |
+
*/
|
49 |
+
public static function emptyTraversable()
|
50 |
+
{
|
51 |
+
if (!self::$_INSTANCE) {
|
52 |
+
self::$_INSTANCE = new self;
|
53 |
+
}
|
54 |
+
|
55 |
+
return self::$_INSTANCE;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Returns true if traversable is not empty.
|
60 |
+
*
|
61 |
+
* @factory
|
62 |
+
*/
|
63 |
+
public static function nonEmptyTraversable()
|
64 |
+
{
|
65 |
+
if (!self::$_NOT_INSTANCE) {
|
66 |
+
self::$_NOT_INSTANCE = new self(false);
|
67 |
+
}
|
68 |
+
|
69 |
+
return self::$_NOT_INSTANCE;
|
70 |
+
}
|
71 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Collection;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\FeatureMatcher;
|
8 |
+
use Hamcrest\Matcher;
|
9 |
+
use Hamcrest\Util;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Matches if traversable size satisfies a nested matcher.
|
13 |
+
*/
|
14 |
+
class IsTraversableWithSize extends FeatureMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
public function __construct(Matcher $sizeMatcher)
|
18 |
+
{
|
19 |
+
parent::__construct(
|
20 |
+
self::TYPE_OBJECT,
|
21 |
+
'Traversable',
|
22 |
+
$sizeMatcher,
|
23 |
+
'a traversable with size',
|
24 |
+
'traversable size'
|
25 |
+
);
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function featureValueOf($actual)
|
29 |
+
{
|
30 |
+
$size = 0;
|
31 |
+
foreach ($actual as $value) {
|
32 |
+
$size++;
|
33 |
+
}
|
34 |
+
|
35 |
+
return $size;
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Does traversable size satisfy a given matcher?
|
40 |
+
*
|
41 |
+
* @factory
|
42 |
+
*/
|
43 |
+
public static function traversableWithSize($size)
|
44 |
+
{
|
45 |
+
return new self(Util::wrapValueWithIsEqual($size));
|
46 |
+
}
|
47 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\DiagnosingMatcher;
|
9 |
+
use Hamcrest\Util;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Calculates the logical conjunction of multiple matchers. Evaluation is
|
13 |
+
* shortcut, so subsequent matchers are not called if an earlier matcher
|
14 |
+
* returns <code>false</code>.
|
15 |
+
*/
|
16 |
+
class AllOf extends DiagnosingMatcher
|
17 |
+
{
|
18 |
+
|
19 |
+
private $_matchers;
|
20 |
+
|
21 |
+
public function __construct(array $matchers)
|
22 |
+
{
|
23 |
+
Util::checkAllAreMatchers($matchers);
|
24 |
+
|
25 |
+
$this->_matchers = $matchers;
|
26 |
+
}
|
27 |
+
|
28 |
+
public function matchesWithDiagnosticDescription($item, Description $mismatchDescription)
|
29 |
+
{
|
30 |
+
/** @var $matcher \Hamcrest\Matcher */
|
31 |
+
foreach ($this->_matchers as $matcher) {
|
32 |
+
if (!$matcher->matches($item)) {
|
33 |
+
$mismatchDescription->appendDescriptionOf($matcher)->appendText(' ');
|
34 |
+
$matcher->describeMismatch($item, $mismatchDescription);
|
35 |
+
|
36 |
+
return false;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
return true;
|
41 |
+
}
|
42 |
+
|
43 |
+
public function describeTo(Description $description)
|
44 |
+
{
|
45 |
+
$description->appendList('(', ' and ', ')', $this->_matchers);
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Evaluates to true only if ALL of the passed in matchers evaluate to true.
|
50 |
+
*
|
51 |
+
* @factory ...
|
52 |
+
*/
|
53 |
+
public static function allOf(/* args... */)
|
54 |
+
{
|
55 |
+
$args = func_get_args();
|
56 |
+
|
57 |
+
return new self(Util::createMatcherArray($args));
|
58 |
+
}
|
59 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\Util;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Calculates the logical disjunction of multiple matchers. Evaluation is
|
12 |
+
* shortcut, so subsequent matchers are not called if an earlier matcher
|
13 |
+
* returns <code>true</code>.
|
14 |
+
*/
|
15 |
+
class AnyOf extends ShortcutCombination
|
16 |
+
{
|
17 |
+
|
18 |
+
public function __construct(array $matchers)
|
19 |
+
{
|
20 |
+
parent::__construct($matchers);
|
21 |
+
}
|
22 |
+
|
23 |
+
public function matches($item)
|
24 |
+
{
|
25 |
+
return $this->matchesWithShortcut($item, true);
|
26 |
+
}
|
27 |
+
|
28 |
+
public function describeTo(Description $description)
|
29 |
+
{
|
30 |
+
$this->describeToWithOperator($description, 'or');
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Evaluates to true if ANY of the passed in matchers evaluate to true.
|
35 |
+
*
|
36 |
+
* @factory ...
|
37 |
+
*/
|
38 |
+
public static function anyOf(/* args... */)
|
39 |
+
{
|
40 |
+
$args = func_get_args();
|
41 |
+
|
42 |
+
return new self(Util::createMatcherArray($args));
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Evaluates to false if ANY of the passed in matchers evaluate to true.
|
47 |
+
*
|
48 |
+
* @factory ...
|
49 |
+
*/
|
50 |
+
public static function noneOf(/* args... */)
|
51 |
+
{
|
52 |
+
$args = func_get_args();
|
53 |
+
|
54 |
+
return IsNot::not(
|
55 |
+
new self(Util::createMatcherArray($args))
|
56 |
+
);
|
57 |
+
}
|
58 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\BaseMatcher;
|
9 |
+
use Hamcrest\Description;
|
10 |
+
use Hamcrest\Matcher;
|
11 |
+
|
12 |
+
class CombinableMatcher extends BaseMatcher
|
13 |
+
{
|
14 |
+
|
15 |
+
private $_matcher;
|
16 |
+
|
17 |
+
public function __construct(Matcher $matcher)
|
18 |
+
{
|
19 |
+
$this->_matcher = $matcher;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function matches($item)
|
23 |
+
{
|
24 |
+
return $this->_matcher->matches($item);
|
25 |
+
}
|
26 |
+
|
27 |
+
public function describeTo(Description $description)
|
28 |
+
{
|
29 |
+
$description->appendDescriptionOf($this->_matcher);
|
30 |
+
}
|
31 |
+
|
32 |
+
/** Diversion from Hamcrest-Java... Logical "and" not permitted */
|
33 |
+
public function andAlso(Matcher $other)
|
34 |
+
{
|
35 |
+
return new self(new AllOf($this->_templatedListWith($other)));
|
36 |
+
}
|
37 |
+
|
38 |
+
/** Diversion from Hamcrest-Java... Logical "or" not permitted */
|
39 |
+
public function orElse(Matcher $other)
|
40 |
+
{
|
41 |
+
return new self(new AnyOf($this->_templatedListWith($other)));
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* This is useful for fluently combining matchers that must both pass.
|
46 |
+
* For example:
|
47 |
+
* <pre>
|
48 |
+
* assertThat($string, both(containsString("a"))->andAlso(containsString("b")));
|
49 |
+
* </pre>
|
50 |
+
*
|
51 |
+
* @factory
|
52 |
+
*/
|
53 |
+
public static function both(Matcher $matcher)
|
54 |
+
{
|
55 |
+
return new self($matcher);
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* This is useful for fluently combining matchers where either may pass,
|
60 |
+
* for example:
|
61 |
+
* <pre>
|
62 |
+
* assertThat($string, either(containsString("a"))->orElse(containsString("b")));
|
63 |
+
* </pre>
|
64 |
+
*
|
65 |
+
* @factory
|
66 |
+
*/
|
67 |
+
public static function either(Matcher $matcher)
|
68 |
+
{
|
69 |
+
return new self($matcher);
|
70 |
+
}
|
71 |
+
|
72 |
+
// -- Private Methods
|
73 |
+
|
74 |
+
private function _templatedListWith(Matcher $other)
|
75 |
+
{
|
76 |
+
return array($this->_matcher, $other);
|
77 |
+
}
|
78 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\Matcher;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Provides a custom description to another matcher.
|
13 |
+
*/
|
14 |
+
class DescribedAs extends BaseMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_descriptionTemplate;
|
18 |
+
private $_matcher;
|
19 |
+
private $_values;
|
20 |
+
|
21 |
+
const ARG_PATTERN = '/%([0-9]+)/';
|
22 |
+
|
23 |
+
public function __construct($descriptionTemplate, Matcher $matcher, array $values)
|
24 |
+
{
|
25 |
+
$this->_descriptionTemplate = $descriptionTemplate;
|
26 |
+
$this->_matcher = $matcher;
|
27 |
+
$this->_values = $values;
|
28 |
+
}
|
29 |
+
|
30 |
+
public function matches($item)
|
31 |
+
{
|
32 |
+
return $this->_matcher->matches($item);
|
33 |
+
}
|
34 |
+
|
35 |
+
public function describeTo(Description $description)
|
36 |
+
{
|
37 |
+
$textStart = 0;
|
38 |
+
while (preg_match(self::ARG_PATTERN, $this->_descriptionTemplate, $matches, PREG_OFFSET_CAPTURE, $textStart)) {
|
39 |
+
$text = $matches[0][0];
|
40 |
+
$index = $matches[1][0];
|
41 |
+
$offset = $matches[0][1];
|
42 |
+
|
43 |
+
$description->appendText(substr($this->_descriptionTemplate, $textStart, $offset - $textStart));
|
44 |
+
$description->appendValue($this->_values[$index]);
|
45 |
+
|
46 |
+
$textStart = $offset + strlen($text);
|
47 |
+
}
|
48 |
+
|
49 |
+
if ($textStart < strlen($this->_descriptionTemplate)) {
|
50 |
+
$description->appendText(substr($this->_descriptionTemplate, $textStart));
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Wraps an existing matcher and overrides the description when it fails.
|
56 |
+
*
|
57 |
+
* @factory ...
|
58 |
+
*/
|
59 |
+
public static function describedAs(/* $description, Hamcrest\Matcher $matcher, $values... */)
|
60 |
+
{
|
61 |
+
$args = func_get_args();
|
62 |
+
$description = array_shift($args);
|
63 |
+
$matcher = array_shift($args);
|
64 |
+
$values = $args;
|
65 |
+
|
66 |
+
return new self($description, $matcher, $values);
|
67 |
+
}
|
68 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\Matcher;
|
10 |
+
use Hamcrest\TypeSafeDiagnosingMatcher;
|
11 |
+
|
12 |
+
class Every extends TypeSafeDiagnosingMatcher
|
13 |
+
{
|
14 |
+
|
15 |
+
private $_matcher;
|
16 |
+
|
17 |
+
public function __construct(Matcher $matcher)
|
18 |
+
{
|
19 |
+
parent::__construct(self::TYPE_ARRAY);
|
20 |
+
|
21 |
+
$this->_matcher = $matcher;
|
22 |
+
}
|
23 |
+
|
24 |
+
protected function matchesSafelyWithDiagnosticDescription($items, Description $mismatchDescription)
|
25 |
+
{
|
26 |
+
foreach ($items as $item) {
|
27 |
+
if (!$this->_matcher->matches($item)) {
|
28 |
+
$mismatchDescription->appendText('an item ');
|
29 |
+
$this->_matcher->describeMismatch($item, $mismatchDescription);
|
30 |
+
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
return true;
|
36 |
+
}
|
37 |
+
|
38 |
+
public function describeTo(Description $description)
|
39 |
+
{
|
40 |
+
$description->appendText('every item is ')->appendDescriptionOf($this->_matcher);
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* @param Matcher $itemMatcher
|
45 |
+
* A matcher to apply to every element in an array.
|
46 |
+
*
|
47 |
+
* @return \Hamcrest\Core\Every
|
48 |
+
* Evaluates to TRUE for a collection in which every item matches $itemMatcher
|
49 |
+
*
|
50 |
+
* @factory
|
51 |
+
*/
|
52 |
+
public static function everyItem(Matcher $itemMatcher)
|
53 |
+
{
|
54 |
+
return new self($itemMatcher);
|
55 |
+
}
|
56 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\FeatureMatcher;
|
9 |
+
use Hamcrest\Matcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Matches if array size satisfies a nested matcher.
|
14 |
+
*/
|
15 |
+
class HasToString extends FeatureMatcher
|
16 |
+
{
|
17 |
+
|
18 |
+
public function __construct(Matcher $toStringMatcher)
|
19 |
+
{
|
20 |
+
parent::__construct(
|
21 |
+
self::TYPE_OBJECT,
|
22 |
+
null,
|
23 |
+
$toStringMatcher,
|
24 |
+
'an object with toString()',
|
25 |
+
'toString()'
|
26 |
+
);
|
27 |
+
}
|
28 |
+
|
29 |
+
public function matchesSafelyWithDiagnosticDescription($actual, Description $mismatchDescription)
|
30 |
+
{
|
31 |
+
if (method_exists($actual, 'toString') || method_exists($actual, '__toString')) {
|
32 |
+
return parent::matchesSafelyWithDiagnosticDescription($actual, $mismatchDescription);
|
33 |
+
}
|
34 |
+
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function featureValueOf($actual)
|
39 |
+
{
|
40 |
+
if (method_exists($actual, 'toString')) {
|
41 |
+
return $actual->toString();
|
42 |
+
}
|
43 |
+
|
44 |
+
return (string) $actual;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Does array size satisfy a given matcher?
|
49 |
+
*
|
50 |
+
* @factory
|
51 |
+
*/
|
52 |
+
public static function hasToString($matcher)
|
53 |
+
{
|
54 |
+
return new self(Util::wrapValueWithIsEqual($matcher));
|
55 |
+
}
|
56 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\Matcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Decorates another Matcher, retaining the behavior but allowing tests
|
14 |
+
* to be slightly more expressive.
|
15 |
+
*
|
16 |
+
* For example: assertThat($cheese, equalTo($smelly))
|
17 |
+
* vs. assertThat($cheese, is(equalTo($smelly)))
|
18 |
+
*/
|
19 |
+
class Is extends BaseMatcher
|
20 |
+
{
|
21 |
+
|
22 |
+
private $_matcher;
|
23 |
+
|
24 |
+
public function __construct(Matcher $matcher)
|
25 |
+
{
|
26 |
+
$this->_matcher = $matcher;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function matches($arg)
|
30 |
+
{
|
31 |
+
return $this->_matcher->matches($arg);
|
32 |
+
}
|
33 |
+
|
34 |
+
public function describeTo(Description $description)
|
35 |
+
{
|
36 |
+
$description->appendText('is ')->appendDescriptionOf($this->_matcher);
|
37 |
+
}
|
38 |
+
|
39 |
+
public function describeMismatch($item, Description $mismatchDescription)
|
40 |
+
{
|
41 |
+
$this->_matcher->describeMismatch($item, $mismatchDescription);
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Decorates another Matcher, retaining the behavior but allowing tests
|
46 |
+
* to be slightly more expressive.
|
47 |
+
*
|
48 |
+
* For example: assertThat($cheese, equalTo($smelly))
|
49 |
+
* vs. assertThat($cheese, is(equalTo($smelly)))
|
50 |
+
*
|
51 |
+
* @factory
|
52 |
+
*/
|
53 |
+
public static function is($value)
|
54 |
+
{
|
55 |
+
return new self(Util::wrapValueWithIsEqual($value));
|
56 |
+
}
|
57 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* A matcher that always returns <code>true</code>.
|
12 |
+
*/
|
13 |
+
class IsAnything extends BaseMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_message;
|
17 |
+
|
18 |
+
public function __construct($message = 'ANYTHING')
|
19 |
+
{
|
20 |
+
$this->_message = $message;
|
21 |
+
}
|
22 |
+
|
23 |
+
public function matches($item)
|
24 |
+
{
|
25 |
+
return true;
|
26 |
+
}
|
27 |
+
|
28 |
+
public function describeTo(Description $description)
|
29 |
+
{
|
30 |
+
$description->appendText($this->_message);
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* This matcher always evaluates to true.
|
35 |
+
*
|
36 |
+
* @param string $description A meaningful string used when describing itself.
|
37 |
+
*
|
38 |
+
* @return \Hamcrest\Core\IsAnything
|
39 |
+
* @factory
|
40 |
+
*/
|
41 |
+
public static function anything($description = 'ANYTHING')
|
42 |
+
{
|
43 |
+
return new self($description);
|
44 |
+
}
|
45 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\Matcher;
|
9 |
+
use Hamcrest\TypeSafeMatcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Tests if an array contains values that match one or more Matchers.
|
14 |
+
*/
|
15 |
+
class IsCollectionContaining extends TypeSafeMatcher
|
16 |
+
{
|
17 |
+
|
18 |
+
private $_elementMatcher;
|
19 |
+
|
20 |
+
public function __construct(Matcher $elementMatcher)
|
21 |
+
{
|
22 |
+
parent::__construct(self::TYPE_ARRAY);
|
23 |
+
|
24 |
+
$this->_elementMatcher = $elementMatcher;
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function matchesSafely($items)
|
28 |
+
{
|
29 |
+
foreach ($items as $item) {
|
30 |
+
if ($this->_elementMatcher->matches($item)) {
|
31 |
+
return true;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function describeMismatchSafely($items, Description $mismatchDescription)
|
39 |
+
{
|
40 |
+
$mismatchDescription->appendText('was ')->appendValue($items);
|
41 |
+
}
|
42 |
+
|
43 |
+
public function describeTo(Description $description)
|
44 |
+
{
|
45 |
+
$description
|
46 |
+
->appendText('a collection containing ')
|
47 |
+
->appendDescriptionOf($this->_elementMatcher)
|
48 |
+
;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Test if the value is an array containing this matcher.
|
53 |
+
*
|
54 |
+
* Example:
|
55 |
+
* <pre>
|
56 |
+
* assertThat(array('a', 'b'), hasItem(equalTo('b')));
|
57 |
+
* //Convenience defaults to equalTo()
|
58 |
+
* assertThat(array('a', 'b'), hasItem('b'));
|
59 |
+
* </pre>
|
60 |
+
*
|
61 |
+
* @factory ...
|
62 |
+
*/
|
63 |
+
public static function hasItem()
|
64 |
+
{
|
65 |
+
$args = func_get_args();
|
66 |
+
$firstArg = array_shift($args);
|
67 |
+
|
68 |
+
return new self(Util::wrapValueWithIsEqual($firstArg));
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Test if the value is an array containing elements that match all of these
|
73 |
+
* matchers.
|
74 |
+
*
|
75 |
+
* Example:
|
76 |
+
* <pre>
|
77 |
+
* assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
|
78 |
+
* </pre>
|
79 |
+
*
|
80 |
+
* @factory ...
|
81 |
+
*/
|
82 |
+
public static function hasItems(/* args... */)
|
83 |
+
{
|
84 |
+
$args = func_get_args();
|
85 |
+
$matchers = array();
|
86 |
+
|
87 |
+
foreach ($args as $arg) {
|
88 |
+
$matchers[] = self::hasItem($arg);
|
89 |
+
}
|
90 |
+
|
91 |
+
return AllOf::allOf($matchers);
|
92 |
+
}
|
93 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Is the value equal to another value, as tested by the use of the "=="
|
12 |
+
* comparison operator?
|
13 |
+
*/
|
14 |
+
class IsEqual extends BaseMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_item;
|
18 |
+
|
19 |
+
public function __construct($item)
|
20 |
+
{
|
21 |
+
$this->_item = $item;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function matches($arg)
|
25 |
+
{
|
26 |
+
return (($arg == $this->_item) && ($this->_item == $arg));
|
27 |
+
}
|
28 |
+
|
29 |
+
public function describeTo(Description $description)
|
30 |
+
{
|
31 |
+
$description->appendValue($this->_item);
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Is the value equal to another value, as tested by the use of the "=="
|
36 |
+
* comparison operator?
|
37 |
+
*
|
38 |
+
* @factory
|
39 |
+
*/
|
40 |
+
public static function equalTo($item)
|
41 |
+
{
|
42 |
+
return new self($item);
|
43 |
+
}
|
44 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* The same as {@link Hamcrest\Core\IsSame} but with slightly different
|
11 |
+
* semantics.
|
12 |
+
*/
|
13 |
+
class IsIdentical extends IsSame
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_value;
|
17 |
+
|
18 |
+
public function __construct($value)
|
19 |
+
{
|
20 |
+
parent::__construct($value);
|
21 |
+
$this->_value = $value;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function describeTo(Description $description)
|
25 |
+
{
|
26 |
+
$description->appendValue($this->_value);
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Tests of the value is identical to $value as tested by the "===" operator.
|
31 |
+
*
|
32 |
+
* @factory
|
33 |
+
*/
|
34 |
+
public static function identicalTo($value)
|
35 |
+
{
|
36 |
+
return new self($value);
|
37 |
+
}
|
38 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\DiagnosingMatcher;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Tests whether the value is an instance of a class.
|
12 |
+
*/
|
13 |
+
class IsInstanceOf extends DiagnosingMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_theClass;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Creates a new instance of IsInstanceOf
|
20 |
+
*
|
21 |
+
* @param string $theClass
|
22 |
+
* The predicate evaluates to true for instances of this class
|
23 |
+
* or one of its subclasses.
|
24 |
+
*/
|
25 |
+
public function __construct($theClass)
|
26 |
+
{
|
27 |
+
$this->_theClass = $theClass;
|
28 |
+
}
|
29 |
+
|
30 |
+
protected function matchesWithDiagnosticDescription($item, Description $mismatchDescription)
|
31 |
+
{
|
32 |
+
if (!is_object($item)) {
|
33 |
+
$mismatchDescription->appendText('was ')->appendValue($item);
|
34 |
+
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
if (!($item instanceof $this->_theClass)) {
|
39 |
+
$mismatchDescription->appendText('[' . get_class($item) . '] ')
|
40 |
+
->appendValue($item);
|
41 |
+
|
42 |
+
return false;
|
43 |
+
}
|
44 |
+
|
45 |
+
return true;
|
46 |
+
}
|
47 |
+
|
48 |
+
public function describeTo(Description $description)
|
49 |
+
{
|
50 |
+
$description->appendText('an instance of ')
|
51 |
+
->appendText($this->_theClass)
|
52 |
+
;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Is the value an instance of a particular type?
|
57 |
+
* This version assumes no relationship between the required type and
|
58 |
+
* the signature of the method that sets it up, for example in
|
59 |
+
* <code>assertThat($anObject, anInstanceOf('Thing'));</code>
|
60 |
+
*
|
61 |
+
* @factory any
|
62 |
+
*/
|
63 |
+
public static function anInstanceOf($theClass)
|
64 |
+
{
|
65 |
+
return new self($theClass);
|
66 |
+
}
|
67 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\Matcher;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Calculates the logical negation of a matcher.
|
14 |
+
*/
|
15 |
+
class IsNot extends BaseMatcher
|
16 |
+
{
|
17 |
+
|
18 |
+
private $_matcher;
|
19 |
+
|
20 |
+
public function __construct(Matcher $matcher)
|
21 |
+
{
|
22 |
+
$this->_matcher = $matcher;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function matches($arg)
|
26 |
+
{
|
27 |
+
return !$this->_matcher->matches($arg);
|
28 |
+
}
|
29 |
+
|
30 |
+
public function describeTo(Description $description)
|
31 |
+
{
|
32 |
+
$description->appendText('not ')->appendDescriptionOf($this->_matcher);
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Matches if value does not match $value.
|
37 |
+
*
|
38 |
+
* @factory
|
39 |
+
*/
|
40 |
+
public static function not($value)
|
41 |
+
{
|
42 |
+
return new self(Util::wrapValueWithIsEqual($value));
|
43 |
+
}
|
44 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Is the value null?
|
12 |
+
*/
|
13 |
+
class IsNull extends BaseMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private static $_INSTANCE;
|
17 |
+
private static $_NOT_INSTANCE;
|
18 |
+
|
19 |
+
public function matches($item)
|
20 |
+
{
|
21 |
+
return is_null($item);
|
22 |
+
}
|
23 |
+
|
24 |
+
public function describeTo(Description $description)
|
25 |
+
{
|
26 |
+
$description->appendText('null');
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Matches if value is null.
|
31 |
+
*
|
32 |
+
* @factory
|
33 |
+
*/
|
34 |
+
public static function nullValue()
|
35 |
+
{
|
36 |
+
if (!self::$_INSTANCE) {
|
37 |
+
self::$_INSTANCE = new self();
|
38 |
+
}
|
39 |
+
|
40 |
+
return self::$_INSTANCE;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Matches if value is not null.
|
45 |
+
*
|
46 |
+
* @factory
|
47 |
+
*/
|
48 |
+
public static function notNullValue()
|
49 |
+
{
|
50 |
+
if (!self::$_NOT_INSTANCE) {
|
51 |
+
self::$_NOT_INSTANCE = IsNot::not(self::nullValue());
|
52 |
+
}
|
53 |
+
|
54 |
+
return self::$_NOT_INSTANCE;
|
55 |
+
}
|
56 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Is the value the same object as another value?
|
12 |
+
* In PHP terms, does $a === $b?
|
13 |
+
*/
|
14 |
+
class IsSame extends BaseMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_object;
|
18 |
+
|
19 |
+
public function __construct($object)
|
20 |
+
{
|
21 |
+
$this->_object = $object;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function matches($object)
|
25 |
+
{
|
26 |
+
return ($object === $this->_object) && ($this->_object === $object);
|
27 |
+
}
|
28 |
+
|
29 |
+
public function describeTo(Description $description)
|
30 |
+
{
|
31 |
+
$description->appendText('sameInstance(')
|
32 |
+
->appendValue($this->_object)
|
33 |
+
->appendText(')')
|
34 |
+
;
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Creates a new instance of IsSame.
|
39 |
+
*
|
40 |
+
* @param mixed $object
|
41 |
+
* The predicate evaluates to true only when the argument is
|
42 |
+
* this object.
|
43 |
+
*
|
44 |
+
* @return \Hamcrest\Core\IsSame
|
45 |
+
* @factory
|
46 |
+
*/
|
47 |
+
public static function sameInstance($object)
|
48 |
+
{
|
49 |
+
return new self($object);
|
50 |
+
}
|
51 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Tests whether the value has a built-in type.
|
12 |
+
*/
|
13 |
+
class IsTypeOf extends BaseMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_theType;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Creates a new instance of IsTypeOf
|
20 |
+
*
|
21 |
+
* @param string $theType
|
22 |
+
* The predicate evaluates to true for values with this built-in type.
|
23 |
+
*/
|
24 |
+
public function __construct($theType)
|
25 |
+
{
|
26 |
+
$this->_theType = strtolower($theType);
|
27 |
+
}
|
28 |
+
|
29 |
+
public function matches($item)
|
30 |
+
{
|
31 |
+
return strtolower(gettype($item)) == $this->_theType;
|
32 |
+
}
|
33 |
+
|
34 |
+
public function describeTo(Description $description)
|
35 |
+
{
|
36 |
+
$description->appendText(self::getTypeDescription($this->_theType));
|
37 |
+
}
|
38 |
+
|
39 |
+
public function describeMismatch($item, Description $description)
|
40 |
+
{
|
41 |
+
if ($item === null) {
|
42 |
+
$description->appendText('was null');
|
43 |
+
} else {
|
44 |
+
$description->appendText('was ')
|
45 |
+
->appendText(self::getTypeDescription(strtolower(gettype($item))))
|
46 |
+
->appendText(' ')
|
47 |
+
->appendValue($item)
|
48 |
+
;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
public static function getTypeDescription($type)
|
53 |
+
{
|
54 |
+
if ($type == 'null') {
|
55 |
+
return 'null';
|
56 |
+
}
|
57 |
+
|
58 |
+
return (strpos('aeiou', substr($type, 0, 1)) === false ? 'a ' : 'an ')
|
59 |
+
. $type;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Is the value a particular built-in type?
|
64 |
+
*
|
65 |
+
* @factory
|
66 |
+
*/
|
67 |
+
public static function typeOf($theType)
|
68 |
+
{
|
69 |
+
return new self($theType);
|
70 |
+
}
|
71 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Tests if a value (class, object, or array) has a named property.
|
12 |
+
*
|
13 |
+
* For example:
|
14 |
+
* <pre>
|
15 |
+
* assertThat(array('a', 'b'), set('b'));
|
16 |
+
* assertThat($foo, set('bar'));
|
17 |
+
* assertThat('Server', notSet('defaultPort'));
|
18 |
+
* </pre>
|
19 |
+
*
|
20 |
+
* @todo Replace $property with a matcher and iterate all property names.
|
21 |
+
*/
|
22 |
+
class Set extends BaseMatcher
|
23 |
+
{
|
24 |
+
|
25 |
+
private $_property;
|
26 |
+
private $_not;
|
27 |
+
|
28 |
+
public function __construct($property, $not = false)
|
29 |
+
{
|
30 |
+
$this->_property = $property;
|
31 |
+
$this->_not = $not;
|
32 |
+
}
|
33 |
+
|
34 |
+
public function matches($item)
|
35 |
+
{
|
36 |
+
if ($item === null) {
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
$property = $this->_property;
|
40 |
+
if (is_array($item)) {
|
41 |
+
$result = isset($item[$property]);
|
42 |
+
} elseif (is_object($item)) {
|
43 |
+
$result = isset($item->$property);
|
44 |
+
} elseif (is_string($item)) {
|
45 |
+
$result = isset($item::$$property);
|
46 |
+
} else {
|
47 |
+
throw new \InvalidArgumentException('Must pass an object, array, or class name');
|
48 |
+
}
|
49 |
+
|
50 |
+
return $this->_not ? !$result : $result;
|
51 |
+
}
|
52 |
+
|
53 |
+
public function describeTo(Description $description)
|
54 |
+
{
|
55 |
+
$description->appendText($this->_not ? 'unset property ' : 'set property ')->appendText($this->_property);
|
56 |
+
}
|
57 |
+
|
58 |
+
public function describeMismatch($item, Description $description)
|
59 |
+
{
|
60 |
+
$value = '';
|
61 |
+
if (!$this->_not) {
|
62 |
+
$description->appendText('was not set');
|
63 |
+
} else {
|
64 |
+
$property = $this->_property;
|
65 |
+
if (is_array($item)) {
|
66 |
+
$value = $item[$property];
|
67 |
+
} elseif (is_object($item)) {
|
68 |
+
$value = $item->$property;
|
69 |
+
} elseif (is_string($item)) {
|
70 |
+
$value = $item::$$property;
|
71 |
+
}
|
72 |
+
parent::describeMismatch($value, $description);
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Matches if value (class, object, or array) has named $property.
|
78 |
+
*
|
79 |
+
* @factory
|
80 |
+
*/
|
81 |
+
public static function set($property)
|
82 |
+
{
|
83 |
+
return new self($property);
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Matches if value (class, object, or array) does not have named $property.
|
88 |
+
*
|
89 |
+
* @factory
|
90 |
+
*/
|
91 |
+
public static function notSet($property)
|
92 |
+
{
|
93 |
+
return new self($property, true);
|
94 |
+
}
|
95 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Core;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\BaseMatcher;
|
9 |
+
use Hamcrest\Description;
|
10 |
+
use Hamcrest\Util;
|
11 |
+
|
12 |
+
abstract class ShortcutCombination extends BaseMatcher
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var array<\Hamcrest\Matcher>
|
17 |
+
*/
|
18 |
+
private $_matchers;
|
19 |
+
|
20 |
+
public function __construct(array $matchers)
|
21 |
+
{
|
22 |
+
Util::checkAllAreMatchers($matchers);
|
23 |
+
|
24 |
+
$this->_matchers = $matchers;
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function matchesWithShortcut($item, $shortcut)
|
28 |
+
{
|
29 |
+
/** @var $matcher \Hamcrest\Matcher */
|
30 |
+
foreach ($this->_matchers as $matcher) {
|
31 |
+
if ($matcher->matches($item) == $shortcut) {
|
32 |
+
return $shortcut;
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
return !$shortcut;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function describeToWithOperator(Description $description, $operator)
|
40 |
+
{
|
41 |
+
$description->appendList('(', ' ' . $operator . ' ', ')', $this->_matchers);
|
42 |
+
}
|
43 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* A description of a Matcher. A Matcher will describe itself to a description
|
10 |
+
* which can later be used for reporting.
|
11 |
+
*
|
12 |
+
* @see Hamcrest\Matcher::describeTo()
|
13 |
+
*/
|
14 |
+
interface Description
|
15 |
+
{
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Appends some plain text to the description.
|
19 |
+
*
|
20 |
+
* @param string $text
|
21 |
+
*
|
22 |
+
* @return \Hamcrest\Description
|
23 |
+
*/
|
24 |
+
public function appendText($text);
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Appends the description of a {@link Hamcrest\SelfDescribing} value to
|
28 |
+
* this description.
|
29 |
+
*
|
30 |
+
* @param \Hamcrest\SelfDescribing $value
|
31 |
+
*
|
32 |
+
* @return \Hamcrest\Description
|
33 |
+
*/
|
34 |
+
public function appendDescriptionOf(SelfDescribing $value);
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Appends an arbitary value to the description.
|
38 |
+
*
|
39 |
+
* @param mixed $value
|
40 |
+
*
|
41 |
+
* @return \Hamcrest\Description
|
42 |
+
*/
|
43 |
+
public function appendValue($value);
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Appends a list of values to the description.
|
47 |
+
*
|
48 |
+
* @param string $start
|
49 |
+
* @param string $separator
|
50 |
+
* @param string $end
|
51 |
+
* @param array|\IteratorAggregate|\Iterator $values
|
52 |
+
*
|
53 |
+
* @return \Hamcrest\Description
|
54 |
+
*/
|
55 |
+
public function appendValueList($start, $separator, $end, $values);
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Appends a list of {@link Hamcrest\SelfDescribing} objects to the
|
59 |
+
* description.
|
60 |
+
*
|
61 |
+
* @param string $start
|
62 |
+
* @param string $separator
|
63 |
+
* @param string $end
|
64 |
+
* @param array|\\IteratorAggregate|\\Iterator $values
|
65 |
+
* must be instances of {@link Hamcrest\SelfDescribing}
|
66 |
+
*
|
67 |
+
* @return \Hamcrest\Description
|
68 |
+
*/
|
69 |
+
public function appendList($start, $separator, $end, $values);
|
70 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Official documentation for this class is missing.
|
10 |
+
*/
|
11 |
+
abstract class DiagnosingMatcher extends BaseMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
final public function matches($item)
|
15 |
+
{
|
16 |
+
return $this->matchesWithDiagnosticDescription($item, new NullDescription());
|
17 |
+
}
|
18 |
+
|
19 |
+
public function describeMismatch($item, Description $mismatchDescription)
|
20 |
+
{
|
21 |
+
$this->matchesWithDiagnosticDescription($item, $mismatchDescription);
|
22 |
+
}
|
23 |
+
|
24 |
+
abstract protected function matchesWithDiagnosticDescription($item, Description $mismatchDescription);
|
25 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Supporting class for matching a feature of an object. Implement
|
10 |
+
* <code>featureValueOf()</code> in a subclass to pull out the feature to be
|
11 |
+
* matched against.
|
12 |
+
*/
|
13 |
+
abstract class FeatureMatcher extends TypeSafeDiagnosingMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_subMatcher;
|
17 |
+
private $_featureDescription;
|
18 |
+
private $_featureName;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
*
|
23 |
+
* @param string $type
|
24 |
+
* @param string $subtype
|
25 |
+
* @param \Hamcrest\Matcher $subMatcher The matcher to apply to the feature
|
26 |
+
* @param string $featureDescription Descriptive text to use in describeTo
|
27 |
+
* @param string $featureName Identifying text for mismatch message
|
28 |
+
*/
|
29 |
+
public function __construct($type, $subtype, Matcher $subMatcher, $featureDescription, $featureName)
|
30 |
+
{
|
31 |
+
parent::__construct($type, $subtype);
|
32 |
+
|
33 |
+
$this->_subMatcher = $subMatcher;
|
34 |
+
$this->_featureDescription = $featureDescription;
|
35 |
+
$this->_featureName = $featureName;
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Implement this to extract the interesting feature.
|
40 |
+
*
|
41 |
+
* @param mixed $actual the target object
|
42 |
+
*
|
43 |
+
* @return mixed the feature to be matched
|
44 |
+
*/
|
45 |
+
abstract protected function featureValueOf($actual);
|
46 |
+
|
47 |
+
public function matchesSafelyWithDiagnosticDescription($actual, Description $mismatchDescription)
|
48 |
+
{
|
49 |
+
$featureValue = $this->featureValueOf($actual);
|
50 |
+
|
51 |
+
if (!$this->_subMatcher->matches($featureValue)) {
|
52 |
+
$mismatchDescription->appendText($this->_featureName)
|
53 |
+
->appendText(' was ')->appendValue($featureValue);
|
54 |
+
|
55 |
+
return false;
|
56 |
+
}
|
57 |
+
|
58 |
+
return true;
|
59 |
+
}
|
60 |
+
|
61 |
+
final public function describeTo(Description $description)
|
62 |
+
{
|
63 |
+
$description->appendText($this->_featureDescription)->appendText(' ')
|
64 |
+
->appendDescriptionOf($this->_subMatcher)
|
65 |
+
;
|
66 |
+
}
|
67 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Internal;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\SelfDescribing;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* A wrapper around any value so that it describes itself.
|
12 |
+
*/
|
13 |
+
class SelfDescribingValue implements SelfDescribing
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_value;
|
17 |
+
|
18 |
+
public function __construct($value)
|
19 |
+
{
|
20 |
+
$this->_value = $value;
|
21 |
+
}
|
22 |
+
|
23 |
+
public function describeTo(Description $description)
|
24 |
+
{
|
25 |
+
$description->appendValue($this->_value);
|
26 |
+
}
|
27 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* A matcher over acceptable values.
|
10 |
+
* A matcher is able to describe itself to give feedback when it fails.
|
11 |
+
* <p/>
|
12 |
+
* Matcher implementations should <b>NOT directly implement this interface</b>.
|
13 |
+
* Instead, <b>extend</b> the {@link Hamcrest\BaseMatcher} abstract class,
|
14 |
+
* which will ensure that the Matcher API can grow to support
|
15 |
+
* new features and remain compatible with all Matcher implementations.
|
16 |
+
* <p/>
|
17 |
+
* For easy access to common Matcher implementations, use the static factory
|
18 |
+
* methods in {@link Hamcrest\CoreMatchers}.
|
19 |
+
*
|
20 |
+
* @see Hamcrest\CoreMatchers
|
21 |
+
* @see Hamcrest\BaseMatcher
|
22 |
+
*/
|
23 |
+
interface Matcher extends SelfDescribing
|
24 |
+
{
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Evaluates the matcher for argument <var>$item</var>.
|
28 |
+
*
|
29 |
+
* @param mixed $item the object against which the matcher is evaluated.
|
30 |
+
*
|
31 |
+
* @return boolean <code>true</code> if <var>$item</var> matches,
|
32 |
+
* otherwise <code>false</code>.
|
33 |
+
*
|
34 |
+
* @see Hamcrest\BaseMatcher
|
35 |
+
*/
|
36 |
+
public function matches($item);
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Generate a description of why the matcher has not accepted the item.
|
40 |
+
* The description will be part of a larger description of why a matching
|
41 |
+
* failed, so it should be concise.
|
42 |
+
* This method assumes that <code>matches($item)</code> is false, but
|
43 |
+
* will not check this.
|
44 |
+
*
|
45 |
+
* @param mixed $item The item that the Matcher has rejected.
|
46 |
+
* @param Description $description
|
47 |
+
* @return
|
48 |
+
*/
|
49 |
+
public function describeMismatch($item, Description $description);
|
50 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
class MatcherAssert
|
9 |
+
{
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Number of assertions performed.
|
13 |
+
*
|
14 |
+
* @var int
|
15 |
+
*/
|
16 |
+
private static $_count = 0;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Make an assertion and throw {@link Hamcrest\AssertionError} if it fails.
|
20 |
+
*
|
21 |
+
* The first parameter may optionally be a string identifying the assertion
|
22 |
+
* to be included in the failure message.
|
23 |
+
*
|
24 |
+
* If the third parameter is not a matcher it is passed to
|
25 |
+
* {@link Hamcrest\Core\IsEqual#equalTo} to create one.
|
26 |
+
*
|
27 |
+
* Example:
|
28 |
+
* <pre>
|
29 |
+
* // With an identifier
|
30 |
+
* assertThat("apple flavour", $apple->flavour(), equalTo("tasty"));
|
31 |
+
* // Without an identifier
|
32 |
+
* assertThat($apple->flavour(), equalTo("tasty"));
|
33 |
+
* // Evaluating a boolean expression
|
34 |
+
* assertThat("some error", $a > $b);
|
35 |
+
* assertThat($a > $b);
|
36 |
+
* </pre>
|
37 |
+
*/
|
38 |
+
public static function assertThat(/* $args ... */)
|
39 |
+
{
|
40 |
+
$args = func_get_args();
|
41 |
+
switch (count($args)) {
|
42 |
+
case 1:
|
43 |
+
self::$_count++;
|
44 |
+
if (!$args[0]) {
|
45 |
+
throw new AssertionError();
|
46 |
+
}
|
47 |
+
break;
|
48 |
+
|
49 |
+
case 2:
|
50 |
+
self::$_count++;
|
51 |
+
if ($args[1] instanceof Matcher) {
|
52 |
+
self::doAssert('', $args[0], $args[1]);
|
53 |
+
} elseif (!$args[1]) {
|
54 |
+
throw new AssertionError($args[0]);
|
55 |
+
}
|
56 |
+
break;
|
57 |
+
|
58 |
+
case 3:
|
59 |
+
self::$_count++;
|
60 |
+
self::doAssert(
|
61 |
+
$args[0],
|
62 |
+
$args[1],
|
63 |
+
Util::wrapValueWithIsEqual($args[2])
|
64 |
+
);
|
65 |
+
break;
|
66 |
+
|
67 |
+
default:
|
68 |
+
throw new \InvalidArgumentException('assertThat() requires one to three arguments');
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Returns the number of assertions performed.
|
74 |
+
*
|
75 |
+
* @return int
|
76 |
+
*/
|
77 |
+
public static function getCount()
|
78 |
+
{
|
79 |
+
return self::$_count;
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Resets the number of assertions performed to zero.
|
84 |
+
*/
|
85 |
+
public static function resetCount()
|
86 |
+
{
|
87 |
+
self::$_count = 0;
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Performs the actual assertion logic.
|
92 |
+
*
|
93 |
+
* If <code>$matcher</code> doesn't match <code>$actual</code>,
|
94 |
+
* throws a {@link Hamcrest\AssertionError} with a description
|
95 |
+
* of the failure along with the optional <code>$identifier</code>.
|
96 |
+
*
|
97 |
+
* @param string $identifier added to the message upon failure
|
98 |
+
* @param mixed $actual value to compare against <code>$matcher</code>
|
99 |
+
* @param \Hamcrest\Matcher $matcher applied to <code>$actual</code>
|
100 |
+
* @throws AssertionError
|
101 |
+
*/
|
102 |
+
private static function doAssert($identifier, $actual, Matcher $matcher)
|
103 |
+
{
|
104 |
+
if (!$matcher->matches($actual)) {
|
105 |
+
$description = new StringDescription();
|
106 |
+
if (!empty($identifier)) {
|
107 |
+
$description->appendText($identifier . PHP_EOL);
|
108 |
+
}
|
109 |
+
$description->appendText('Expected: ')
|
110 |
+
->appendDescriptionOf($matcher)
|
111 |
+
->appendText(PHP_EOL . ' but: ');
|
112 |
+
|
113 |
+
$matcher->describeMismatch($actual, $description);
|
114 |
+
|
115 |
+
throw new AssertionError((string) $description);
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php
ADDED
@@ -0,0 +1,713 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Copyright (c) 2009-2010 hamcrest.org
|
5 |
+
*/
|
6 |
+
|
7 |
+
// This file is generated from the static method @factory doctags.
|
8 |
+
|
9 |
+
namespace Hamcrest;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* A series of static factories for all hamcrest matchers.
|
13 |
+
*/
|
14 |
+
class Matchers
|
15 |
+
{
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Evaluates to true only if each $matcher[$i] is satisfied by $array[$i].
|
19 |
+
*/
|
20 |
+
public static function anArray(/* args... */)
|
21 |
+
{
|
22 |
+
$args = func_get_args();
|
23 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArray', 'anArray'), $args);
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Evaluates to true if any item in an array satisfies the given matcher.
|
28 |
+
*
|
29 |
+
* @param mixed $item as a {@link Hamcrest\Matcher} or a value.
|
30 |
+
*
|
31 |
+
* @return \Hamcrest\Arrays\IsArrayContaining
|
32 |
+
*/
|
33 |
+
public static function hasItemInArray($item)
|
34 |
+
{
|
35 |
+
return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Evaluates to true if any item in an array satisfies the given matcher.
|
40 |
+
*
|
41 |
+
* @param mixed $item as a {@link Hamcrest\Matcher} or a value.
|
42 |
+
*
|
43 |
+
* @return \Hamcrest\Arrays\IsArrayContaining
|
44 |
+
*/
|
45 |
+
public static function hasValue($item)
|
46 |
+
{
|
47 |
+
return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* An array with elements that match the given matchers.
|
52 |
+
*/
|
53 |
+
public static function arrayContainingInAnyOrder(/* args... */)
|
54 |
+
{
|
55 |
+
$args = func_get_args();
|
56 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* An array with elements that match the given matchers.
|
61 |
+
*/
|
62 |
+
public static function containsInAnyOrder(/* args... */)
|
63 |
+
{
|
64 |
+
$args = func_get_args();
|
65 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* An array with elements that match the given matchers in the same order.
|
70 |
+
*/
|
71 |
+
public static function arrayContaining(/* args... */)
|
72 |
+
{
|
73 |
+
$args = func_get_args();
|
74 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* An array with elements that match the given matchers in the same order.
|
79 |
+
*/
|
80 |
+
public static function contains(/* args... */)
|
81 |
+
{
|
82 |
+
$args = func_get_args();
|
83 |
+
return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Evaluates to true if any key in an array matches the given matcher.
|
88 |
+
*
|
89 |
+
* @param mixed $key as a {@link Hamcrest\Matcher} or a value.
|
90 |
+
*
|
91 |
+
* @return \Hamcrest\Arrays\IsArrayContainingKey
|
92 |
+
*/
|
93 |
+
public static function hasKeyInArray($key)
|
94 |
+
{
|
95 |
+
return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Evaluates to true if any key in an array matches the given matcher.
|
100 |
+
*
|
101 |
+
* @param mixed $key as a {@link Hamcrest\Matcher} or a value.
|
102 |
+
*
|
103 |
+
* @return \Hamcrest\Arrays\IsArrayContainingKey
|
104 |
+
*/
|
105 |
+
public static function hasKey($key)
|
106 |
+
{
|
107 |
+
return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Test if an array has both an key and value in parity with each other.
|
112 |
+
*/
|
113 |
+
public static function hasKeyValuePair($key, $value)
|
114 |
+
{
|
115 |
+
return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Test if an array has both an key and value in parity with each other.
|
120 |
+
*/
|
121 |
+
public static function hasEntry($key, $value)
|
122 |
+
{
|
123 |
+
return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Does array size satisfy a given matcher?
|
128 |
+
*
|
129 |
+
* @param \Hamcrest\Matcher|int $size as a {@link Hamcrest\Matcher} or a value.
|
130 |
+
*
|
131 |
+
* @return \Hamcrest\Arrays\IsArrayWithSize
|
132 |
+
*/
|
133 |
+
public static function arrayWithSize($size)
|
134 |
+
{
|
135 |
+
return \Hamcrest\Arrays\IsArrayWithSize::arrayWithSize($size);
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Matches an empty array.
|
140 |
+
*/
|
141 |
+
public static function emptyArray()
|
142 |
+
{
|
143 |
+
return \Hamcrest\Arrays\IsArrayWithSize::emptyArray();
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Matches an empty array.
|
148 |
+
*/
|
149 |
+
public static function nonEmptyArray()
|
150 |
+
{
|
151 |
+
return \Hamcrest\Arrays\IsArrayWithSize::nonEmptyArray();
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Returns true if traversable is empty.
|
156 |
+
*/
|
157 |
+
public static function emptyTraversable()
|
158 |
+
{
|
159 |
+
return \Hamcrest\Collection\IsEmptyTraversable::emptyTraversable();
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Returns true if traversable is not empty.
|
164 |
+
*/
|
165 |
+
public static function nonEmptyTraversable()
|
166 |
+
{
|
167 |
+
return \Hamcrest\Collection\IsEmptyTraversable::nonEmptyTraversable();
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Does traversable size satisfy a given matcher?
|
172 |
+
*/
|
173 |
+
public static function traversableWithSize($size)
|
174 |
+
{
|
175 |
+
return \Hamcrest\Collection\IsTraversableWithSize::traversableWithSize($size);
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Evaluates to true only if ALL of the passed in matchers evaluate to true.
|
180 |
+
*/
|
181 |
+
public static function allOf(/* args... */)
|
182 |
+
{
|
183 |
+
$args = func_get_args();
|
184 |
+
return call_user_func_array(array('\Hamcrest\Core\AllOf', 'allOf'), $args);
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Evaluates to true if ANY of the passed in matchers evaluate to true.
|
189 |
+
*/
|
190 |
+
public static function anyOf(/* args... */)
|
191 |
+
{
|
192 |
+
$args = func_get_args();
|
193 |
+
return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'anyOf'), $args);
|
194 |
+
}
|
195 |
+
|
196 |
+
/**
|
197 |
+
* Evaluates to false if ANY of the passed in matchers evaluate to true.
|
198 |
+
*/
|
199 |
+
public static function noneOf(/* args... */)
|
200 |
+
{
|
201 |
+
$args = func_get_args();
|
202 |
+
return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'noneOf'), $args);
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* This is useful for fluently combining matchers that must both pass.
|
207 |
+
* For example:
|
208 |
+
* <pre>
|
209 |
+
* assertThat($string, both(containsString("a"))->andAlso(containsString("b")));
|
210 |
+
* </pre>
|
211 |
+
*/
|
212 |
+
public static function both(\Hamcrest\Matcher $matcher)
|
213 |
+
{
|
214 |
+
return \Hamcrest\Core\CombinableMatcher::both($matcher);
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* This is useful for fluently combining matchers where either may pass,
|
219 |
+
* for example:
|
220 |
+
* <pre>
|
221 |
+
* assertThat($string, either(containsString("a"))->orElse(containsString("b")));
|
222 |
+
* </pre>
|
223 |
+
*/
|
224 |
+
public static function either(\Hamcrest\Matcher $matcher)
|
225 |
+
{
|
226 |
+
return \Hamcrest\Core\CombinableMatcher::either($matcher);
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* Wraps an existing matcher and overrides the description when it fails.
|
231 |
+
*/
|
232 |
+
public static function describedAs(/* args... */)
|
233 |
+
{
|
234 |
+
$args = func_get_args();
|
235 |
+
return call_user_func_array(array('\Hamcrest\Core\DescribedAs', 'describedAs'), $args);
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* @param Matcher $itemMatcher
|
240 |
+
* A matcher to apply to every element in an array.
|
241 |
+
*
|
242 |
+
* @return \Hamcrest\Core\Every
|
243 |
+
* Evaluates to TRUE for a collection in which every item matches $itemMatcher
|
244 |
+
*/
|
245 |
+
public static function everyItem(\Hamcrest\Matcher $itemMatcher)
|
246 |
+
{
|
247 |
+
return \Hamcrest\Core\Every::everyItem($itemMatcher);
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Does array size satisfy a given matcher?
|
252 |
+
*/
|
253 |
+
public static function hasToString($matcher)
|
254 |
+
{
|
255 |
+
return \Hamcrest\Core\HasToString::hasToString($matcher);
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Decorates another Matcher, retaining the behavior but allowing tests
|
260 |
+
* to be slightly more expressive.
|
261 |
+
*
|
262 |
+
* For example: assertThat($cheese, equalTo($smelly))
|
263 |
+
* vs. assertThat($cheese, is(equalTo($smelly)))
|
264 |
+
*/
|
265 |
+
public static function is($value)
|
266 |
+
{
|
267 |
+
return \Hamcrest\Core\Is::is($value);
|
268 |
+
}
|
269 |
+
|
270 |
+
/**
|
271 |
+
* This matcher always evaluates to true.
|
272 |
+
*
|
273 |
+
* @param string $description A meaningful string used when describing itself.
|
274 |
+
*
|
275 |
+
* @return \Hamcrest\Core\IsAnything
|
276 |
+
*/
|
277 |
+
public static function anything($description = 'ANYTHING')
|
278 |
+
{
|
279 |
+
return \Hamcrest\Core\IsAnything::anything($description);
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* Test if the value is an array containing this matcher.
|
284 |
+
*
|
285 |
+
* Example:
|
286 |
+
* <pre>
|
287 |
+
* assertThat(array('a', 'b'), hasItem(equalTo('b')));
|
288 |
+
* //Convenience defaults to equalTo()
|
289 |
+
* assertThat(array('a', 'b'), hasItem('b'));
|
290 |
+
* </pre>
|
291 |
+
*/
|
292 |
+
public static function hasItem(/* args... */)
|
293 |
+
{
|
294 |
+
$args = func_get_args();
|
295 |
+
return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItem'), $args);
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Test if the value is an array containing elements that match all of these
|
300 |
+
* matchers.
|
301 |
+
*
|
302 |
+
* Example:
|
303 |
+
* <pre>
|
304 |
+
* assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
|
305 |
+
* </pre>
|
306 |
+
*/
|
307 |
+
public static function hasItems(/* args... */)
|
308 |
+
{
|
309 |
+
$args = func_get_args();
|
310 |
+
return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItems'), $args);
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Is the value equal to another value, as tested by the use of the "=="
|
315 |
+
* comparison operator?
|
316 |
+
*/
|
317 |
+
public static function equalTo($item)
|
318 |
+
{
|
319 |
+
return \Hamcrest\Core\IsEqual::equalTo($item);
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Tests of the value is identical to $value as tested by the "===" operator.
|
324 |
+
*/
|
325 |
+
public static function identicalTo($value)
|
326 |
+
{
|
327 |
+
return \Hamcrest\Core\IsIdentical::identicalTo($value);
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Is the value an instance of a particular type?
|
332 |
+
* This version assumes no relationship between the required type and
|
333 |
+
* the signature of the method that sets it up, for example in
|
334 |
+
* <code>assertThat($anObject, anInstanceOf('Thing'));</code>
|
335 |
+
*/
|
336 |
+
public static function anInstanceOf($theClass)
|
337 |
+
{
|
338 |
+
return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Is the value an instance of a particular type?
|
343 |
+
* This version assumes no relationship between the required type and
|
344 |
+
* the signature of the method that sets it up, for example in
|
345 |
+
* <code>assertThat($anObject, anInstanceOf('Thing'));</code>
|
346 |
+
*/
|
347 |
+
public static function any($theClass)
|
348 |
+
{
|
349 |
+
return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
|
350 |
+
}
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Matches if value does not match $value.
|
354 |
+
*/
|
355 |
+
public static function not($value)
|
356 |
+
{
|
357 |
+
return \Hamcrest\Core\IsNot::not($value);
|
358 |
+
}
|
359 |
+
|
360 |
+
/**
|
361 |
+
* Matches if value is null.
|
362 |
+
*/
|
363 |
+
public static function nullValue()
|
364 |
+
{
|
365 |
+
return \Hamcrest\Core\IsNull::nullValue();
|
366 |
+
}
|
367 |
+
|
368 |
+
/**
|
369 |
+
* Matches if value is not null.
|
370 |
+
*/
|
371 |
+
public static function notNullValue()
|
372 |
+
{
|
373 |
+
return \Hamcrest\Core\IsNull::notNullValue();
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
* Creates a new instance of IsSame.
|
378 |
+
*
|
379 |
+
* @param mixed $object
|
380 |
+
* The predicate evaluates to true only when the argument is
|
381 |
+
* this object.
|
382 |
+
*
|
383 |
+
* @return \Hamcrest\Core\IsSame
|
384 |
+
*/
|
385 |
+
public static function sameInstance($object)
|
386 |
+
{
|
387 |
+
return \Hamcrest\Core\IsSame::sameInstance($object);
|
388 |
+
}
|
389 |
+
|
390 |
+
/**
|
391 |
+
* Is the value a particular built-in type?
|
392 |
+
*/
|
393 |
+
public static function typeOf($theType)
|
394 |
+
{
|
395 |
+
return \Hamcrest\Core\IsTypeOf::typeOf($theType);
|
396 |
+
}
|
397 |
+
|
398 |
+
/**
|
399 |
+
* Matches if value (class, object, or array) has named $property.
|
400 |
+
*/
|
401 |
+
public static function set($property)
|
402 |
+
{
|
403 |
+
return \Hamcrest\Core\Set::set($property);
|
404 |
+
}
|
405 |
+
|
406 |
+
/**
|
407 |
+
* Matches if value (class, object, or array) does not have named $property.
|
408 |
+
*/
|
409 |
+
public static function notSet($property)
|
410 |
+
{
|
411 |
+
return \Hamcrest\Core\Set::notSet($property);
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Matches if value is a number equal to $value within some range of
|
416 |
+
* acceptable error $delta.
|
417 |
+
*/
|
418 |
+
public static function closeTo($value, $delta)
|
419 |
+
{
|
420 |
+
return \Hamcrest\Number\IsCloseTo::closeTo($value, $delta);
|
421 |
+
}
|
422 |
+
|
423 |
+
/**
|
424 |
+
* The value is not > $value, nor < $value.
|
425 |
+
*/
|
426 |
+
public static function comparesEqualTo($value)
|
427 |
+
{
|
428 |
+
return \Hamcrest\Number\OrderingComparison::comparesEqualTo($value);
|
429 |
+
}
|
430 |
+
|
431 |
+
/**
|
432 |
+
* The value is > $value.
|
433 |
+
*/
|
434 |
+
public static function greaterThan($value)
|
435 |
+
{
|
436 |
+
return \Hamcrest\Number\OrderingComparison::greaterThan($value);
|
437 |
+
}
|
438 |
+
|
439 |
+
/**
|
440 |
+
* The value is >= $value.
|
441 |
+
*/
|
442 |
+
public static function greaterThanOrEqualTo($value)
|
443 |
+
{
|
444 |
+
return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
|
445 |
+
}
|
446 |
+
|
447 |
+
/**
|
448 |
+
* The value is >= $value.
|
449 |
+
*/
|
450 |
+
public static function atLeast($value)
|
451 |
+
{
|
452 |
+
return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
|
453 |
+
}
|
454 |
+
|
455 |
+
/**
|
456 |
+
* The value is < $value.
|
457 |
+
*/
|
458 |
+
public static function lessThan($value)
|
459 |
+
{
|
460 |
+
return \Hamcrest\Number\OrderingComparison::lessThan($value);
|
461 |
+
}
|
462 |
+
|
463 |
+
/**
|
464 |
+
* The value is <= $value.
|
465 |
+
*/
|
466 |
+
public static function lessThanOrEqualTo($value)
|
467 |
+
{
|
468 |
+
return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
|
469 |
+
}
|
470 |
+
|
471 |
+
/**
|
472 |
+
* The value is <= $value.
|
473 |
+
*/
|
474 |
+
public static function atMost($value)
|
475 |
+
{
|
476 |
+
return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
|
477 |
+
}
|
478 |
+
|
479 |
+
/**
|
480 |
+
* Matches if value is a zero-length string.
|
481 |
+
*/
|
482 |
+
public static function isEmptyString()
|
483 |
+
{
|
484 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyString();
|
485 |
+
}
|
486 |
+
|
487 |
+
/**
|
488 |
+
* Matches if value is a zero-length string.
|
489 |
+
*/
|
490 |
+
public static function emptyString()
|
491 |
+
{
|
492 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyString();
|
493 |
+
}
|
494 |
+
|
495 |
+
/**
|
496 |
+
* Matches if value is null or a zero-length string.
|
497 |
+
*/
|
498 |
+
public static function isEmptyOrNullString()
|
499 |
+
{
|
500 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
|
501 |
+
}
|
502 |
+
|
503 |
+
/**
|
504 |
+
* Matches if value is null or a zero-length string.
|
505 |
+
*/
|
506 |
+
public static function nullOrEmptyString()
|
507 |
+
{
|
508 |
+
return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
|
509 |
+
}
|
510 |
+
|
511 |
+
/**
|
512 |
+
* Matches if value is a non-zero-length string.
|
513 |
+
*/
|
514 |
+
public static function isNonEmptyString()
|
515 |
+
{
|
516 |
+
return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
|
517 |
+
}
|
518 |
+
|
519 |
+
/**
|
520 |
+
* Matches if value is a non-zero-length string.
|
521 |
+
*/
|
522 |
+
public static function nonEmptyString()
|
523 |
+
{
|
524 |
+
return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
|
525 |
+
}
|
526 |
+
|
527 |
+
/**
|
528 |
+
* Matches if value is a string equal to $string, regardless of the case.
|
529 |
+
*/
|
530 |
+
public static function equalToIgnoringCase($string)
|
531 |
+
{
|
532 |
+
return \Hamcrest\Text\IsEqualIgnoringCase::equalToIgnoringCase($string);
|
533 |
+
}
|
534 |
+
|
535 |
+
/**
|
536 |
+
* Matches if value is a string equal to $string, regardless of whitespace.
|
537 |
+
*/
|
538 |
+
public static function equalToIgnoringWhiteSpace($string)
|
539 |
+
{
|
540 |
+
return \Hamcrest\Text\IsEqualIgnoringWhiteSpace::equalToIgnoringWhiteSpace($string);
|
541 |
+
}
|
542 |
+
|
543 |
+
/**
|
544 |
+
* Matches if value is a string that matches regular expression $pattern.
|
545 |
+
*/
|
546 |
+
public static function matchesPattern($pattern)
|
547 |
+
{
|
548 |
+
return \Hamcrest\Text\MatchesPattern::matchesPattern($pattern);
|
549 |
+
}
|
550 |
+
|
551 |
+
/**
|
552 |
+
* Matches if value is a string that contains $substring.
|
553 |
+
*/
|
554 |
+
public static function containsString($substring)
|
555 |
+
{
|
556 |
+
return \Hamcrest\Text\StringContains::containsString($substring);
|
557 |
+
}
|
558 |
+
|
559 |
+
/**
|
560 |
+
* Matches if value is a string that contains $substring regardless of the case.
|
561 |
+
*/
|
562 |
+
public static function containsStringIgnoringCase($substring)
|
563 |
+
{
|
564 |
+
return \Hamcrest\Text\StringContainsIgnoringCase::containsStringIgnoringCase($substring);
|
565 |
+
}
|
566 |
+
|
567 |
+
/**
|
568 |
+
* Matches if value contains $substrings in a constrained order.
|
569 |
+
*/
|
570 |
+
public static function stringContainsInOrder(/* args... */)
|
571 |
+
{
|
572 |
+
$args = func_get_args();
|
573 |
+
return call_user_func_array(array('\Hamcrest\Text\StringContainsInOrder', 'stringContainsInOrder'), $args);
|
574 |
+
}
|
575 |
+
|
576 |
+
/**
|
577 |
+
* Matches if value is a string that ends with $substring.
|
578 |
+
*/
|
579 |
+
public static function endsWith($substring)
|
580 |
+
{
|
581 |
+
return \Hamcrest\Text\StringEndsWith::endsWith($substring);
|
582 |
+
}
|
583 |
+
|
584 |
+
/**
|
585 |
+
* Matches if value is a string that starts with $substring.
|
586 |
+
*/
|
587 |
+
public static function startsWith($substring)
|
588 |
+
{
|
589 |
+
return \Hamcrest\Text\StringStartsWith::startsWith($substring);
|
590 |
+
}
|
591 |
+
|
592 |
+
/**
|
593 |
+
* Is the value an array?
|
594 |
+
*/
|
595 |
+
public static function arrayValue()
|
596 |
+
{
|
597 |
+
return \Hamcrest\Type\IsArray::arrayValue();
|
598 |
+
}
|
599 |
+
|
600 |
+
/**
|
601 |
+
* Is the value a boolean?
|
602 |
+
*/
|
603 |
+
public static function booleanValue()
|
604 |
+
{
|
605 |
+
return \Hamcrest\Type\IsBoolean::booleanValue();
|
606 |
+
}
|
607 |
+
|
608 |
+
/**
|
609 |
+
* Is the value a boolean?
|
610 |
+
*/
|
611 |
+
public static function boolValue()
|
612 |
+
{
|
613 |
+
return \Hamcrest\Type\IsBoolean::booleanValue();
|
614 |
+
}
|
615 |
+
|
616 |
+
/**
|
617 |
+
* Is the value callable?
|
618 |
+
*/
|
619 |
+
public static function callableValue()
|
620 |
+
{
|
621 |
+
return \Hamcrest\Type\IsCallable::callableValue();
|
622 |
+
}
|
623 |
+
|
624 |
+
/**
|
625 |
+
* Is the value a float/double?
|
626 |
+
*/
|
627 |
+
public static function doubleValue()
|
628 |
+
{
|
629 |
+
return \Hamcrest\Type\IsDouble::doubleValue();
|
630 |
+
}
|
631 |
+
|
632 |
+
/**
|
633 |
+
* Is the value a float/double?
|
634 |
+
*/
|
635 |
+
public static function floatValue()
|
636 |
+
{
|
637 |
+
return \Hamcrest\Type\IsDouble::doubleValue();
|
638 |
+
}
|
639 |
+
|
640 |
+
/**
|
641 |
+
* Is the value an integer?
|
642 |
+
*/
|
643 |
+
public static function integerValue()
|
644 |
+
{
|
645 |
+
return \Hamcrest\Type\IsInteger::integerValue();
|
646 |
+
}
|
647 |
+
|
648 |
+
/**
|
649 |
+
* Is the value an integer?
|
650 |
+
*/
|
651 |
+
public static function intValue()
|
652 |
+
{
|
653 |
+
return \Hamcrest\Type\IsInteger::integerValue();
|
654 |
+
}
|
655 |
+
|
656 |
+
/**
|
657 |
+
* Is the value a numeric?
|
658 |
+
*/
|
659 |
+
public static function numericValue()
|
660 |
+
{
|
661 |
+
return \Hamcrest\Type\IsNumeric::numericValue();
|
662 |
+
}
|
663 |
+
|
664 |
+
/**
|
665 |
+
* Is the value an object?
|
666 |
+
*/
|
667 |
+
public static function objectValue()
|
668 |
+
{
|
669 |
+
return \Hamcrest\Type\IsObject::objectValue();
|
670 |
+
}
|
671 |
+
|
672 |
+
/**
|
673 |
+
* Is the value an object?
|
674 |
+
*/
|
675 |
+
public static function anObject()
|
676 |
+
{
|
677 |
+
return \Hamcrest\Type\IsObject::objectValue();
|
678 |
+
}
|
679 |
+
|
680 |
+
/**
|
681 |
+
* Is the value a resource?
|
682 |
+
*/
|
683 |
+
public static function resourceValue()
|
684 |
+
{
|
685 |
+
return \Hamcrest\Type\IsResource::resourceValue();
|
686 |
+
}
|
687 |
+
|
688 |
+
/**
|
689 |
+
* Is the value a scalar (boolean, integer, double, or string)?
|
690 |
+
*/
|
691 |
+
public static function scalarValue()
|
692 |
+
{
|
693 |
+
return \Hamcrest\Type\IsScalar::scalarValue();
|
694 |
+
}
|
695 |
+
|
696 |
+
/**
|
697 |
+
* Is the value a string?
|
698 |
+
*/
|
699 |
+
public static function stringValue()
|
700 |
+
{
|
701 |
+
return \Hamcrest\Type\IsString::stringValue();
|
702 |
+
}
|
703 |
+
|
704 |
+
/**
|
705 |
+
* Wraps <code>$matcher</code> with {@link Hamcrest\Core\IsEqual)
|
706 |
+
* if it's not a matcher and the XPath in <code>count()</code>
|
707 |
+
* if it's an integer.
|
708 |
+
*/
|
709 |
+
public static function hasXPath($xpath, $matcher = null)
|
710 |
+
{
|
711 |
+
return \Hamcrest\Xml\HasXPath::hasXPath($xpath, $matcher);
|
712 |
+
}
|
713 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Null implementation of {@link Hamcrest\Description}.
|
10 |
+
*/
|
11 |
+
class NullDescription implements Description
|
12 |
+
{
|
13 |
+
|
14 |
+
public function appendText($text)
|
15 |
+
{
|
16 |
+
return $this;
|
17 |
+
}
|
18 |
+
|
19 |
+
public function appendDescriptionOf(SelfDescribing $value)
|
20 |
+
{
|
21 |
+
return $this;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function appendValue($value)
|
25 |
+
{
|
26 |
+
return $this;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function appendValueList($start, $separator, $end, $values)
|
30 |
+
{
|
31 |
+
return $this;
|
32 |
+
}
|
33 |
+
|
34 |
+
public function appendList($start, $separator, $end, $values)
|
35 |
+
{
|
36 |
+
return $this;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function __toString()
|
40 |
+
{
|
41 |
+
return '';
|
42 |
+
}
|
43 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Number;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\TypeSafeMatcher;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Is the value a number equal to a value within some range of
|
12 |
+
* acceptable error?
|
13 |
+
*/
|
14 |
+
class IsCloseTo extends TypeSafeMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_value;
|
18 |
+
private $_delta;
|
19 |
+
|
20 |
+
public function __construct($value, $delta)
|
21 |
+
{
|
22 |
+
parent::__construct(self::TYPE_NUMERIC);
|
23 |
+
|
24 |
+
$this->_value = $value;
|
25 |
+
$this->_delta = $delta;
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function matchesSafely($item)
|
29 |
+
{
|
30 |
+
return $this->_actualDelta($item) <= 0.0;
|
31 |
+
}
|
32 |
+
|
33 |
+
protected function describeMismatchSafely($item, Description $mismatchDescription)
|
34 |
+
{
|
35 |
+
$mismatchDescription->appendValue($item)
|
36 |
+
->appendText(' differed by ')
|
37 |
+
->appendValue($this->_actualDelta($item))
|
38 |
+
;
|
39 |
+
}
|
40 |
+
|
41 |
+
public function describeTo(Description $description)
|
42 |
+
{
|
43 |
+
$description->appendText('a numeric value within ')
|
44 |
+
->appendValue($this->_delta)
|
45 |
+
->appendText(' of ')
|
46 |
+
->appendValue($this->_value)
|
47 |
+
;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Matches if value is a number equal to $value within some range of
|
52 |
+
* acceptable error $delta.
|
53 |
+
*
|
54 |
+
* @factory
|
55 |
+
*/
|
56 |
+
public static function closeTo($value, $delta)
|
57 |
+
{
|
58 |
+
return new self($value, $delta);
|
59 |
+
}
|
60 |
+
|
61 |
+
// -- Private Methods
|
62 |
+
|
63 |
+
private function _actualDelta($item)
|
64 |
+
{
|
65 |
+
return (abs(($item - $this->_value)) - $this->_delta);
|
66 |
+
}
|
67 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Number;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\TypeSafeMatcher;
|
10 |
+
|
11 |
+
class OrderingComparison extends TypeSafeMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
private $_value;
|
15 |
+
private $_minCompare;
|
16 |
+
private $_maxCompare;
|
17 |
+
|
18 |
+
public function __construct($value, $minCompare, $maxCompare)
|
19 |
+
{
|
20 |
+
parent::__construct(self::TYPE_NUMERIC);
|
21 |
+
|
22 |
+
$this->_value = $value;
|
23 |
+
$this->_minCompare = $minCompare;
|
24 |
+
$this->_maxCompare = $maxCompare;
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function matchesSafely($other)
|
28 |
+
{
|
29 |
+
$compare = $this->_compare($this->_value, $other);
|
30 |
+
|
31 |
+
return ($this->_minCompare <= $compare) && ($compare <= $this->_maxCompare);
|
32 |
+
}
|
33 |
+
|
34 |
+
protected function describeMismatchSafely($item, Description $mismatchDescription)
|
35 |
+
{
|
36 |
+
$mismatchDescription
|
37 |
+
->appendValue($item)->appendText(' was ')
|
38 |
+
->appendText($this->_comparison($this->_compare($this->_value, $item)))
|
39 |
+
->appendText(' ')->appendValue($this->_value)
|
40 |
+
;
|
41 |
+
}
|
42 |
+
|
43 |
+
public function describeTo(Description $description)
|
44 |
+
{
|
45 |
+
$description->appendText('a value ')
|
46 |
+
->appendText($this->_comparison($this->_minCompare))
|
47 |
+
;
|
48 |
+
if ($this->_minCompare != $this->_maxCompare) {
|
49 |
+
$description->appendText(' or ')
|
50 |
+
->appendText($this->_comparison($this->_maxCompare))
|
51 |
+
;
|
52 |
+
}
|
53 |
+
$description->appendText(' ')->appendValue($this->_value);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* The value is not > $value, nor < $value.
|
58 |
+
*
|
59 |
+
* @factory
|
60 |
+
*/
|
61 |
+
public static function comparesEqualTo($value)
|
62 |
+
{
|
63 |
+
return new self($value, 0, 0);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* The value is > $value.
|
68 |
+
*
|
69 |
+
* @factory
|
70 |
+
*/
|
71 |
+
public static function greaterThan($value)
|
72 |
+
{
|
73 |
+
return new self($value, -1, -1);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* The value is >= $value.
|
78 |
+
*
|
79 |
+
* @factory atLeast
|
80 |
+
*/
|
81 |
+
public static function greaterThanOrEqualTo($value)
|
82 |
+
{
|
83 |
+
return new self($value, -1, 0);
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* The value is < $value.
|
88 |
+
*
|
89 |
+
* @factory
|
90 |
+
*/
|
91 |
+
public static function lessThan($value)
|
92 |
+
{
|
93 |
+
return new self($value, 1, 1);
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* The value is <= $value.
|
98 |
+
*
|
99 |
+
* @factory atMost
|
100 |
+
*/
|
101 |
+
public static function lessThanOrEqualTo($value)
|
102 |
+
{
|
103 |
+
return new self($value, 0, 1);
|
104 |
+
}
|
105 |
+
|
106 |
+
// -- Private Methods
|
107 |
+
|
108 |
+
private function _compare($left, $right)
|
109 |
+
{
|
110 |
+
$a = $left;
|
111 |
+
$b = $right;
|
112 |
+
|
113 |
+
if ($a < $b) {
|
114 |
+
return -1;
|
115 |
+
} elseif ($a == $b) {
|
116 |
+
return 0;
|
117 |
+
} else {
|
118 |
+
return 1;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
private function _comparison($compare)
|
123 |
+
{
|
124 |
+
if ($compare > 0) {
|
125 |
+
return 'less than';
|
126 |
+
} elseif ($compare == 0) {
|
127 |
+
return 'equal to';
|
128 |
+
} else {
|
129 |
+
return 'greater than';
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The ability of an object to describe itself.
|
10 |
+
*/
|
11 |
+
interface SelfDescribing
|
12 |
+
{
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Generates a description of the object. The description may be part
|
16 |
+
* of a description of a larger object of which this is just a component,
|
17 |
+
* so it should be worded appropriately.
|
18 |
+
*
|
19 |
+
* @param \Hamcrest\Description $description
|
20 |
+
* The description to be built or appended to.
|
21 |
+
*/
|
22 |
+
public function describeTo(Description $description);
|
23 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* A {@link Hamcrest\Description} that is stored as a string.
|
10 |
+
*/
|
11 |
+
class StringDescription extends BaseDescription
|
12 |
+
{
|
13 |
+
|
14 |
+
private $_out;
|
15 |
+
|
16 |
+
public function __construct($out = '')
|
17 |
+
{
|
18 |
+
$this->_out = (string) $out;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function __toString()
|
22 |
+
{
|
23 |
+
return $this->_out;
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Return the description of a {@link Hamcrest\SelfDescribing} object as a
|
28 |
+
* String.
|
29 |
+
*
|
30 |
+
* @param \Hamcrest\SelfDescribing $selfDescribing
|
31 |
+
* The object to be described.
|
32 |
+
*
|
33 |
+
* @return string
|
34 |
+
* The description of the object.
|
35 |
+
*/
|
36 |
+
public static function toString(SelfDescribing $selfDescribing)
|
37 |
+
{
|
38 |
+
$self = new self();
|
39 |
+
|
40 |
+
return (string) $self->appendDescriptionOf($selfDescribing);
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Alias for {@link toString()}.
|
45 |
+
*/
|
46 |
+
public static function asString(SelfDescribing $selfDescribing)
|
47 |
+
{
|
48 |
+
return self::toString($selfDescribing);
|
49 |
+
}
|
50 |
+
|
51 |
+
// -- Protected Methods
|
52 |
+
|
53 |
+
protected function append($str)
|
54 |
+
{
|
55 |
+
$this->_out .= $str;
|
56 |
+
}
|
57 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\BaseMatcher;
|
8 |
+
use Hamcrest\Core\AnyOf;
|
9 |
+
use Hamcrest\Core\IsNull;
|
10 |
+
use Hamcrest\Description;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Matches empty Strings (and null).
|
14 |
+
*/
|
15 |
+
class IsEmptyString extends BaseMatcher
|
16 |
+
{
|
17 |
+
|
18 |
+
private static $_INSTANCE;
|
19 |
+
private static $_NULL_OR_EMPTY_INSTANCE;
|
20 |
+
private static $_NOT_INSTANCE;
|
21 |
+
|
22 |
+
private $_empty;
|
23 |
+
|
24 |
+
public function __construct($empty = true)
|
25 |
+
{
|
26 |
+
$this->_empty = $empty;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function matches($item)
|
30 |
+
{
|
31 |
+
return $this->_empty
|
32 |
+
? ($item === '')
|
33 |
+
: is_string($item) && $item !== '';
|
34 |
+
}
|
35 |
+
|
36 |
+
public function describeTo(Description $description)
|
37 |
+
{
|
38 |
+
$description->appendText($this->_empty ? 'an empty string' : 'a non-empty string');
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Matches if value is a zero-length string.
|
43 |
+
*
|
44 |
+
* @factory emptyString
|
45 |
+
*/
|
46 |
+
public static function isEmptyString()
|
47 |
+
{
|
48 |
+
if (!self::$_INSTANCE) {
|
49 |
+
self::$_INSTANCE = new self(true);
|
50 |
+
}
|
51 |
+
|
52 |
+
return self::$_INSTANCE;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Matches if value is null or a zero-length string.
|
57 |
+
*
|
58 |
+
* @factory nullOrEmptyString
|
59 |
+
*/
|
60 |
+
public static function isEmptyOrNullString()
|
61 |
+
{
|
62 |
+
if (!self::$_NULL_OR_EMPTY_INSTANCE) {
|
63 |
+
self::$_NULL_OR_EMPTY_INSTANCE = AnyOf::anyOf(
|
64 |
+
IsNull::nullvalue(),
|
65 |
+
self::isEmptyString()
|
66 |
+
);
|
67 |
+
}
|
68 |
+
|
69 |
+
return self::$_NULL_OR_EMPTY_INSTANCE;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Matches if value is a non-zero-length string.
|
74 |
+
*
|
75 |
+
* @factory nonEmptyString
|
76 |
+
*/
|
77 |
+
public static function isNonEmptyString()
|
78 |
+
{
|
79 |
+
if (!self::$_NOT_INSTANCE) {
|
80 |
+
self::$_NOT_INSTANCE = new self(false);
|
81 |
+
}
|
82 |
+
|
83 |
+
return self::$_NOT_INSTANCE;
|
84 |
+
}
|
85 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\TypeSafeMatcher;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Tests if a string is equal to another string, regardless of the case.
|
12 |
+
*/
|
13 |
+
class IsEqualIgnoringCase extends TypeSafeMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_string;
|
17 |
+
|
18 |
+
public function __construct($string)
|
19 |
+
{
|
20 |
+
parent::__construct(self::TYPE_STRING);
|
21 |
+
|
22 |
+
$this->_string = $string;
|
23 |
+
}
|
24 |
+
|
25 |
+
protected function matchesSafely($item)
|
26 |
+
{
|
27 |
+
return strtolower($this->_string) === strtolower($item);
|
28 |
+
}
|
29 |
+
|
30 |
+
protected function describeMismatchSafely($item, Description $mismatchDescription)
|
31 |
+
{
|
32 |
+
$mismatchDescription->appendText('was ')->appendText($item);
|
33 |
+
}
|
34 |
+
|
35 |
+
public function describeTo(Description $description)
|
36 |
+
{
|
37 |
+
$description->appendText('equalToIgnoringCase(')
|
38 |
+
->appendValue($this->_string)
|
39 |
+
->appendText(')')
|
40 |
+
;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Matches if value is a string equal to $string, regardless of the case.
|
45 |
+
*
|
46 |
+
* @factory
|
47 |
+
*/
|
48 |
+
public static function equalToIgnoringCase($string)
|
49 |
+
{
|
50 |
+
return new self($string);
|
51 |
+
}
|
52 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\TypeSafeMatcher;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Tests if a string is equal to another string, ignoring any changes in
|
12 |
+
* whitespace.
|
13 |
+
*/
|
14 |
+
class IsEqualIgnoringWhiteSpace extends TypeSafeMatcher
|
15 |
+
{
|
16 |
+
|
17 |
+
private $_string;
|
18 |
+
|
19 |
+
public function __construct($string)
|
20 |
+
{
|
21 |
+
parent::__construct(self::TYPE_STRING);
|
22 |
+
|
23 |
+
$this->_string = $string;
|
24 |
+
}
|
25 |
+
|
26 |
+
protected function matchesSafely($item)
|
27 |
+
{
|
28 |
+
return (strtolower($this->_stripSpace($item))
|
29 |
+
=== strtolower($this->_stripSpace($this->_string)));
|
30 |
+
}
|
31 |
+
|
32 |
+
protected function describeMismatchSafely($item, Description $mismatchDescription)
|
33 |
+
{
|
34 |
+
$mismatchDescription->appendText('was ')->appendText($item);
|
35 |
+
}
|
36 |
+
|
37 |
+
public function describeTo(Description $description)
|
38 |
+
{
|
39 |
+
$description->appendText('equalToIgnoringWhiteSpace(')
|
40 |
+
->appendValue($this->_string)
|
41 |
+
->appendText(')')
|
42 |
+
;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Matches if value is a string equal to $string, regardless of whitespace.
|
47 |
+
*
|
48 |
+
* @factory
|
49 |
+
*/
|
50 |
+
public static function equalToIgnoringWhiteSpace($string)
|
51 |
+
{
|
52 |
+
return new self($string);
|
53 |
+
}
|
54 |
+
|
55 |
+
// -- Private Methods
|
56 |
+
|
57 |
+
private function _stripSpace($string)
|
58 |
+
{
|
59 |
+
$parts = preg_split("/[\r\n\t ]+/", $string);
|
60 |
+
foreach ($parts as $i => $part) {
|
61 |
+
$parts[$i] = trim($part, " \r\n\t");
|
62 |
+
}
|
63 |
+
|
64 |
+
return trim(implode(' ', $parts), " \r\n\t");
|
65 |
+
}
|
66 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Tests if the argument is a string that matches a regular expression.
|
10 |
+
*/
|
11 |
+
class MatchesPattern extends SubstringMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
public function __construct($pattern)
|
15 |
+
{
|
16 |
+
parent::__construct($pattern);
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Matches if value is a string that matches regular expression $pattern.
|
21 |
+
*
|
22 |
+
* @factory
|
23 |
+
*/
|
24 |
+
public static function matchesPattern($pattern)
|
25 |
+
{
|
26 |
+
return new self($pattern);
|
27 |
+
}
|
28 |
+
|
29 |
+
// -- Protected Methods
|
30 |
+
|
31 |
+
protected function evalSubstringOf($item)
|
32 |
+
{
|
33 |
+
return preg_match($this->_substring, (string) $item) >= 1;
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function relationship()
|
37 |
+
{
|
38 |
+
return 'matching';
|
39 |
+
}
|
40 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Tests if the argument is a string that contains a substring.
|
10 |
+
*/
|
11 |
+
class StringContains extends SubstringMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
public function __construct($substring)
|
15 |
+
{
|
16 |
+
parent::__construct($substring);
|
17 |
+
}
|
18 |
+
|
19 |
+
public function ignoringCase()
|
20 |
+
{
|
21 |
+
return new StringContainsIgnoringCase($this->_substring);
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Matches if value is a string that contains $substring.
|
26 |
+
*
|
27 |
+
* @factory
|
28 |
+
*/
|
29 |
+
public static function containsString($substring)
|
30 |
+
{
|
31 |
+
return new self($substring);
|
32 |
+
}
|
33 |
+
|
34 |
+
// -- Protected Methods
|
35 |
+
|
36 |
+
protected function evalSubstringOf($item)
|
37 |
+
{
|
38 |
+
return (false !== strpos((string) $item, $this->_substring));
|
39 |
+
}
|
40 |
+
|
41 |
+
protected function relationship()
|
42 |
+
{
|
43 |
+
return 'containing';
|
44 |
+
}
|
45 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Tests if the argument is a string that contains a substring ignoring case.
|
10 |
+
*/
|
11 |
+
class StringContainsIgnoringCase extends SubstringMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
public function __construct($substring)
|
15 |
+
{
|
16 |
+
parent::__construct($substring);
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Matches if value is a string that contains $substring regardless of the case.
|
21 |
+
*
|
22 |
+
* @factory
|
23 |
+
*/
|
24 |
+
public static function containsStringIgnoringCase($substring)
|
25 |
+
{
|
26 |
+
return new self($substring);
|
27 |
+
}
|
28 |
+
|
29 |
+
// -- Protected Methods
|
30 |
+
|
31 |
+
protected function evalSubstringOf($item)
|
32 |
+
{
|
33 |
+
return (false !== stripos((string) $item, $this->_substring));
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function relationship()
|
37 |
+
{
|
38 |
+
return 'containing in any case';
|
39 |
+
}
|
40 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Description;
|
8 |
+
use Hamcrest\TypeSafeMatcher;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Tests if the value contains a series of substrings in a constrained order.
|
12 |
+
*/
|
13 |
+
class StringContainsInOrder extends TypeSafeMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
private $_substrings;
|
17 |
+
|
18 |
+
public function __construct(array $substrings)
|
19 |
+
{
|
20 |
+
parent::__construct(self::TYPE_STRING);
|
21 |
+
|
22 |
+
$this->_substrings = $substrings;
|
23 |
+
}
|
24 |
+
|
25 |
+
protected function matchesSafely($item)
|
26 |
+
{
|
27 |
+
$fromIndex = 0;
|
28 |
+
|
29 |
+
foreach ($this->_substrings as $substring) {
|
30 |
+
if (false === $fromIndex = strpos($item, $substring, $fromIndex)) {
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
return true;
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function describeMismatchSafely($item, Description $mismatchDescription)
|
39 |
+
{
|
40 |
+
$mismatchDescription->appendText('was ')->appendText($item);
|
41 |
+
}
|
42 |
+
|
43 |
+
public function describeTo(Description $description)
|
44 |
+
{
|
45 |
+
$description->appendText('a string containing ')
|
46 |
+
->appendValueList('', ', ', '', $this->_substrings)
|
47 |
+
->appendText(' in order')
|
48 |
+
;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Matches if value contains $substrings in a constrained order.
|
53 |
+
*
|
54 |
+
* @factory ...
|
55 |
+
*/
|
56 |
+
public static function stringContainsInOrder(/* args... */)
|
57 |
+
{
|
58 |
+
$args = func_get_args();
|
59 |
+
|
60 |
+
if (isset($args[0]) && is_array($args[0])) {
|
61 |
+
$args = $args[0];
|
62 |
+
}
|
63 |
+
|
64 |
+
return new self($args);
|
65 |
+
}
|
66 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Tests if the argument is a string that ends with a substring.
|
10 |
+
*/
|
11 |
+
class StringEndsWith extends SubstringMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
public function __construct($substring)
|
15 |
+
{
|
16 |
+
parent::__construct($substring);
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Matches if value is a string that ends with $substring.
|
21 |
+
*
|
22 |
+
* @factory
|
23 |
+
*/
|
24 |
+
public static function endsWith($substring)
|
25 |
+
{
|
26 |
+
return new self($substring);
|
27 |
+
}
|
28 |
+
|
29 |
+
// -- Protected Methods
|
30 |
+
|
31 |
+
protected function evalSubstringOf($string)
|
32 |
+
{
|
33 |
+
return (substr($string, (-1 * strlen($this->_substring))) === $this->_substring);
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function relationship()
|
37 |
+
{
|
38 |
+
return 'ending with';
|
39 |
+
}
|
40 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Tests if the argument is a string that contains a substring.
|
10 |
+
*/
|
11 |
+
class StringStartsWith extends SubstringMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
public function __construct($substring)
|
15 |
+
{
|
16 |
+
parent::__construct($substring);
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Matches if value is a string that starts with $substring.
|
21 |
+
*
|
22 |
+
* @factory
|
23 |
+
*/
|
24 |
+
public static function startsWith($substring)
|
25 |
+
{
|
26 |
+
return new self($substring);
|
27 |
+
}
|
28 |
+
|
29 |
+
// -- Protected Methods
|
30 |
+
|
31 |
+
protected function evalSubstringOf($string)
|
32 |
+
{
|
33 |
+
return (substr($string, 0, strlen($this->_substring)) === $this->_substring);
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function relationship()
|
37 |
+
{
|
38 |
+
return 'starting with';
|
39 |
+
}
|
40 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Text;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\TypeSafeMatcher;
|
10 |
+
|
11 |
+
abstract class SubstringMatcher extends TypeSafeMatcher
|
12 |
+
{
|
13 |
+
|
14 |
+
protected $_substring;
|
15 |
+
|
16 |
+
public function __construct($substring)
|
17 |
+
{
|
18 |
+
parent::__construct(self::TYPE_STRING);
|
19 |
+
|
20 |
+
$this->_substring = $substring;
|
21 |
+
}
|
22 |
+
|
23 |
+
protected function matchesSafely($item)
|
24 |
+
{
|
25 |
+
return $this->evalSubstringOf($item);
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function describeMismatchSafely($item, Description $mismatchDescription)
|
29 |
+
{
|
30 |
+
$mismatchDescription->appendText('was "')->appendText($item)->appendText('"');
|
31 |
+
}
|
32 |
+
|
33 |
+
public function describeTo(Description $description)
|
34 |
+
{
|
35 |
+
$description->appendText('a string ')
|
36 |
+
->appendText($this->relationship())
|
37 |
+
->appendText(' ')
|
38 |
+
->appendValue($this->_substring)
|
39 |
+
;
|
40 |
+
}
|
41 |
+
|
42 |
+
abstract protected function evalSubstringOf($string);
|
43 |
+
|
44 |
+
abstract protected function relationship();
|
45 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is an array.
|
11 |
+
*/
|
12 |
+
class IsArray extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsArray
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('array');
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Is the value an array?
|
25 |
+
*
|
26 |
+
* @factory
|
27 |
+
*/
|
28 |
+
public static function arrayValue()
|
29 |
+
{
|
30 |
+
return new self;
|
31 |
+
}
|
32 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is a boolean.
|
11 |
+
*/
|
12 |
+
class IsBoolean extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsBoolean
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('boolean');
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Is the value a boolean?
|
25 |
+
*
|
26 |
+
* @factory boolValue
|
27 |
+
*/
|
28 |
+
public static function booleanValue()
|
29 |
+
{
|
30 |
+
return new self;
|
31 |
+
}
|
32 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is callable.
|
11 |
+
*/
|
12 |
+
class IsCallable extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsCallable
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('callable');
|
21 |
+
}
|
22 |
+
|
23 |
+
public function matches($item)
|
24 |
+
{
|
25 |
+
return is_callable($item);
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Is the value callable?
|
30 |
+
*
|
31 |
+
* @factory
|
32 |
+
*/
|
33 |
+
public static function callableValue()
|
34 |
+
{
|
35 |
+
return new self;
|
36 |
+
}
|
37 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is a float/double.
|
11 |
+
*
|
12 |
+
* PHP returns "double" for values of type "float".
|
13 |
+
*/
|
14 |
+
class IsDouble extends IsTypeOf
|
15 |
+
{
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Creates a new instance of IsDouble
|
19 |
+
*/
|
20 |
+
public function __construct()
|
21 |
+
{
|
22 |
+
parent::__construct('double');
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Is the value a float/double?
|
27 |
+
*
|
28 |
+
* @factory floatValue
|
29 |
+
*/
|
30 |
+
public static function doubleValue()
|
31 |
+
{
|
32 |
+
return new self;
|
33 |
+
}
|
34 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is an integer.
|
11 |
+
*/
|
12 |
+
class IsInteger extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsInteger
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('integer');
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Is the value an integer?
|
25 |
+
*
|
26 |
+
* @factory intValue
|
27 |
+
*/
|
28 |
+
public static function integerValue()
|
29 |
+
{
|
30 |
+
return new self;
|
31 |
+
}
|
32 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is numeric.
|
11 |
+
*/
|
12 |
+
class IsNumeric extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
public function __construct()
|
16 |
+
{
|
17 |
+
parent::__construct('number');
|
18 |
+
}
|
19 |
+
|
20 |
+
public function matches($item)
|
21 |
+
{
|
22 |
+
if ($this->isHexadecimal($item)) {
|
23 |
+
return true;
|
24 |
+
}
|
25 |
+
|
26 |
+
return is_numeric($item);
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Return if the string passed is a valid hexadecimal number.
|
31 |
+
* This check is necessary because PHP 7 doesn't recognize hexadecimal string as numeric anymore.
|
32 |
+
*
|
33 |
+
* @param mixed $item
|
34 |
+
* @return boolean
|
35 |
+
*/
|
36 |
+
private function isHexadecimal($item)
|
37 |
+
{
|
38 |
+
if (is_string($item) && preg_match('/^0x(.*)$/', $item, $matches)) {
|
39 |
+
return ctype_xdigit($matches[1]);
|
40 |
+
}
|
41 |
+
|
42 |
+
return false;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Is the value a numeric?
|
47 |
+
*
|
48 |
+
* @factory
|
49 |
+
*/
|
50 |
+
public static function numericValue()
|
51 |
+
{
|
52 |
+
return new self;
|
53 |
+
}
|
54 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is an object.
|
11 |
+
*/
|
12 |
+
class IsObject extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsObject
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('object');
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Is the value an object?
|
25 |
+
*
|
26 |
+
* @factory anObject
|
27 |
+
*/
|
28 |
+
public static function objectValue()
|
29 |
+
{
|
30 |
+
return new self;
|
31 |
+
}
|
32 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is a resource.
|
11 |
+
*/
|
12 |
+
class IsResource extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsResource
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('resource');
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Is the value a resource?
|
25 |
+
*
|
26 |
+
* @factory
|
27 |
+
*/
|
28 |
+
public static function resourceValue()
|
29 |
+
{
|
30 |
+
return new self;
|
31 |
+
}
|
32 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is a scalar (boolean, integer, double, or string).
|
11 |
+
*/
|
12 |
+
class IsScalar extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
public function __construct()
|
16 |
+
{
|
17 |
+
parent::__construct('scalar');
|
18 |
+
}
|
19 |
+
|
20 |
+
public function matches($item)
|
21 |
+
{
|
22 |
+
return is_scalar($item);
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Is the value a scalar (boolean, integer, double, or string)?
|
27 |
+
*
|
28 |
+
* @factory
|
29 |
+
*/
|
30 |
+
public static function scalarValue()
|
31 |
+
{
|
32 |
+
return new self;
|
33 |
+
}
|
34 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Type;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2010 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsTypeOf;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Tests whether the value is a string.
|
11 |
+
*/
|
12 |
+
class IsString extends IsTypeOf
|
13 |
+
{
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creates a new instance of IsString
|
17 |
+
*/
|
18 |
+
public function __construct()
|
19 |
+
{
|
20 |
+
parent::__construct('string');
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Is the value a string?
|
25 |
+
*
|
26 |
+
* @factory
|
27 |
+
*/
|
28 |
+
public static function stringValue()
|
29 |
+
{
|
30 |
+
return new self;
|
31 |
+
}
|
32 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Convenient base class for Matchers that require a value of a specific type.
|
6 |
+
* This simply checks the type and then casts.
|
7 |
+
*/
|
8 |
+
|
9 |
+
abstract class TypeSafeDiagnosingMatcher extends TypeSafeMatcher
|
10 |
+
{
|
11 |
+
|
12 |
+
final public function matchesSafely($item)
|
13 |
+
{
|
14 |
+
return $this->matchesSafelyWithDiagnosticDescription($item, new NullDescription());
|
15 |
+
}
|
16 |
+
|
17 |
+
final public function describeMismatchSafely($item, Description $mismatchDescription)
|
18 |
+
{
|
19 |
+
$this->matchesSafelyWithDiagnosticDescription($item, $mismatchDescription);
|
20 |
+
}
|
21 |
+
|
22 |
+
// -- Protected Methods
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Subclasses should implement these. The item will already have been checked for
|
26 |
+
* the specific type.
|
27 |
+
*/
|
28 |
+
abstract protected function matchesSafelyWithDiagnosticDescription($item, Description $mismatchDescription);
|
29 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Convenient base class for Matchers that require a value of a specific type.
|
6 |
+
* This simply checks the type.
|
7 |
+
*
|
8 |
+
* While it may seem a useless exercise to have this in PHP, objects cannot
|
9 |
+
* be cast to certain data types such as numerics (or even strings if
|
10 |
+
* __toString() has not be defined).
|
11 |
+
*/
|
12 |
+
|
13 |
+
abstract class TypeSafeMatcher extends BaseMatcher
|
14 |
+
{
|
15 |
+
|
16 |
+
/* Types that PHP can compare against */
|
17 |
+
const TYPE_ANY = 0;
|
18 |
+
const TYPE_STRING = 1;
|
19 |
+
const TYPE_NUMERIC = 2;
|
20 |
+
const TYPE_ARRAY = 3;
|
21 |
+
const TYPE_OBJECT = 4;
|
22 |
+
const TYPE_RESOURCE = 5;
|
23 |
+
const TYPE_BOOLEAN = 6;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* The type that is required for a safe comparison
|
27 |
+
*
|
28 |
+
* @var int
|
29 |
+
*/
|
30 |
+
private $_expectedType;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* The subtype (e.g. class for objects) that is required
|
34 |
+
*
|
35 |
+
* @var string
|
36 |
+
*/
|
37 |
+
private $_expectedSubtype;
|
38 |
+
|
39 |
+
public function __construct($expectedType, $expectedSubtype = null)
|
40 |
+
{
|
41 |
+
$this->_expectedType = $expectedType;
|
42 |
+
$this->_expectedSubtype = $expectedSubtype;
|
43 |
+
}
|
44 |
+
|
45 |
+
final public function matches($item)
|
46 |
+
{
|
47 |
+
return $this->_isSafeType($item) && $this->matchesSafely($item);
|
48 |
+
}
|
49 |
+
|
50 |
+
final public function describeMismatch($item, Description $mismatchDescription)
|
51 |
+
{
|
52 |
+
if (!$this->_isSafeType($item)) {
|
53 |
+
parent::describeMismatch($item, $mismatchDescription);
|
54 |
+
} else {
|
55 |
+
$this->describeMismatchSafely($item, $mismatchDescription);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
// -- Protected Methods
|
60 |
+
|
61 |
+
/**
|
62 |
+
* The item will already have been checked for the specific type and subtype.
|
63 |
+
*/
|
64 |
+
abstract protected function matchesSafely($item);
|
65 |
+
|
66 |
+
/**
|
67 |
+
* The item will already have been checked for the specific type and subtype.
|
68 |
+
*/
|
69 |
+
abstract protected function describeMismatchSafely($item, Description $mismatchDescription);
|
70 |
+
|
71 |
+
// -- Private Methods
|
72 |
+
|
73 |
+
private function _isSafeType($value)
|
74 |
+
{
|
75 |
+
switch ($this->_expectedType) {
|
76 |
+
|
77 |
+
case self::TYPE_ANY:
|
78 |
+
return true;
|
79 |
+
|
80 |
+
case self::TYPE_STRING:
|
81 |
+
return is_string($value) || is_numeric($value);
|
82 |
+
|
83 |
+
case self::TYPE_NUMERIC:
|
84 |
+
return is_numeric($value) || is_string($value);
|
85 |
+
|
86 |
+
case self::TYPE_ARRAY:
|
87 |
+
return is_array($value);
|
88 |
+
|
89 |
+
case self::TYPE_OBJECT:
|
90 |
+
return is_object($value)
|
91 |
+
&& ($this->_expectedSubtype === null
|
92 |
+
|| $value instanceof $this->_expectedSubtype);
|
93 |
+
|
94 |
+
case self::TYPE_RESOURCE:
|
95 |
+
return is_resource($value)
|
96 |
+
&& ($this->_expectedSubtype === null
|
97 |
+
|| get_resource_type($value) == $this->_expectedSubtype);
|
98 |
+
|
99 |
+
case self::TYPE_BOOLEAN:
|
100 |
+
return true;
|
101 |
+
|
102 |
+
default:
|
103 |
+
return true;
|
104 |
+
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2012 hamcrest.org
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Contains utility methods for handling Hamcrest matchers.
|
10 |
+
*
|
11 |
+
* @see Hamcrest\Matcher
|
12 |
+
*/
|
13 |
+
class Util
|
14 |
+
{
|
15 |
+
public static function registerGlobalFunctions()
|
16 |
+
{
|
17 |
+
require_once __DIR__.'/../Hamcrest.php';
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Wraps the item with an IsEqual matcher if it isn't a matcher already.
|
22 |
+
*
|
23 |
+
* @param mixed $item matcher or any value
|
24 |
+
* @return \Hamcrest\Matcher
|
25 |
+
*/
|
26 |
+
public static function wrapValueWithIsEqual($item)
|
27 |
+
{
|
28 |
+
return ($item instanceof Matcher)
|
29 |
+
? $item
|
30 |
+
: Core\IsEqual::equalTo($item)
|
31 |
+
;
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Throws an exception if any item in $matchers is not a Hamcrest\Matcher.
|
36 |
+
*
|
37 |
+
* @param array $matchers expected to contain only matchers
|
38 |
+
* @throws \InvalidArgumentException if any item is not a matcher
|
39 |
+
*/
|
40 |
+
public static function checkAllAreMatchers(array $matchers)
|
41 |
+
{
|
42 |
+
foreach ($matchers as $m) {
|
43 |
+
if (!($m instanceof Matcher)) {
|
44 |
+
throw new \InvalidArgumentException(
|
45 |
+
'Each argument or element must be a Hamcrest matcher'
|
46 |
+
);
|
47 |
+
}
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Returns a copy of $items where each non-Matcher item is replaced by
|
53 |
+
* a Hamcrest\Core\IsEqual matcher for the item. If the first and only item
|
54 |
+
* is an array, it is used as the $items array to support the old style
|
55 |
+
* of passing an array as the sole argument to a matcher.
|
56 |
+
*
|
57 |
+
* @param array $items contains items and matchers
|
58 |
+
* @return array<Matchers> all items are
|
59 |
+
*/
|
60 |
+
public static function createMatcherArray(array $items)
|
61 |
+
{
|
62 |
+
//Extract single array item
|
63 |
+
if (count($items) == 1 && is_array($items[0])) {
|
64 |
+
$items = $items[0];
|
65 |
+
}
|
66 |
+
|
67 |
+
//Replace non-matchers
|
68 |
+
foreach ($items as &$item) {
|
69 |
+
if (!($item instanceof Matcher)) {
|
70 |
+
$item = Core\IsEqual::equalTo($item);
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
return $items;
|
75 |
+
}
|
76 |
+
}
|
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php
ADDED
@@ -0,0 +1,195 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Hamcrest\Xml;
|
3 |
+
|
4 |
+
/*
|
5 |
+
Copyright (c) 2009 hamcrest.org
|
6 |
+
*/
|
7 |
+
use Hamcrest\Core\IsEqual;
|
8 |
+
use Hamcrest\Description;
|
9 |
+
use Hamcrest\DiagnosingMatcher;
|
10 |
+
use Hamcrest\Matcher;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Matches if XPath applied to XML/HTML/XHTML document either
|
14 |
+
* evaluates to result matching the matcher or returns at least
|
15 |
+
* one node, matching the matcher if present.
|
16 |
+
*/
|
17 |
+
class HasXPath extends DiagnosingMatcher
|
18 |
+
{
|
19 |
+
|
20 |
+
/**
|
21 |
+
* XPath to apply to the DOM.
|
22 |
+
*
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
private $_xpath;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Optional matcher to apply to the XPath expression result
|
29 |
+
* or the content of the returned nodes.
|
30 |
+
*
|
31 |
+
* @var Matcher
|
32 |
+
*/
|
33 |
+
private $_matcher;
|
34 |
+
|
35 |
+
public function __construct($xpath, Matcher $matcher = null)
|
36 |
+
{
|
37 |
+
$this->_xpath = $xpath;
|
38 |
+
$this->_matcher = $matcher;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Matches if the XPath matches against the DOM node and the matcher.
|
43 |
+
*
|
44 |
+
* @param string|\DOMNode $actual
|
45 |
+
* @param Description $mismatchDescription
|
46 |
+
* @return bool
|
47 |
+
*/
|
48 |
+
protected function matchesWithDiagnosticDescription($actual, Description $mismatchDescription)
|
49 |
+
{
|
50 |
+
if (is_string($actual)) {
|
51 |
+
$actual = $this->createDocument($actual);
|
52 |
+
} elseif (!$actual instanceof \DOMNode) {
|
53 |
+
$mismatchDescription->appendText('was ')->appendValue($actual);
|
54 |
+
|
55 |
+
return false;
|
56 |
+
}
|
57 |
+
$result = $this->evaluate($actual);
|
58 |
+
if ($result instanceof \DOMNodeList) {
|
59 |
+
return $this->matchesContent($result, $mismatchDescription);
|
60 |
+
} else {
|
61 |
+
return $this->matchesExpression($result, $mismatchDescription);
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Creates and returns a <code>DOMDocument</code> from the given
|
67 |
+
* XML or HTML string.
|
68 |
+
*
|
69 |
+
* @param string $text
|
70 |
+
* @return \DOMDocument built from <code>$text</code>
|
71 |
+
* @throws \InvalidArgumentException if the document is not valid
|
72 |
+
*/
|
73 |
+
protected function createDocument($text)
|
74 |
+
{
|
75 |
+
$document = new \DOMDocument();
|
76 |
+
if (preg_match('/^\s*<\?xml/', $text)) {
|
77 |
+
if (!@$document->loadXML($text)) {
|
78 |
+
throw new \InvalidArgumentException('Must pass a valid XML document');
|
79 |
+
}
|
80 |
+
} else {
|
81 |
+
if (!@$document->loadHTML($text)) {
|
82 |
+
throw new \InvalidArgumentException('Must pass a valid HTML or XHTML document');
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
return $document;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Applies the configured XPath to the DOM node and returns either
|
91 |
+
* the result if it's an expression or the node list if it's a query.
|
92 |
+
*
|
93 |
+
* @param \DOMNode $node context from which to issue query
|
94 |
+
* @return mixed result of expression or DOMNodeList from query
|
95 |
+
*/
|
96 |
+
protected function evaluate(\DOMNode $node)
|
97 |
+
{
|
98 |
+
if ($node instanceof \DOMDocument) {
|
99 |
+
$xpathDocument = new \DOMXPath($node);
|
100 |
+
|
101 |
+
return $xpathDocument->evaluate($this->_xpath);
|
102 |
+
} else {
|
103 |
+
$xpathDocument = new \DOMXPath($node->ownerDocument);
|
104 |
+
|
105 |
+
return $xpathDocument->evaluate($this->_xpath, $node);
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Matches if the list of nodes is not empty and the content of at least
|
111 |
+
* one node matches the configured matcher, if supplied.
|
112 |
+
*
|
113 |
+
* @param \DOMNodeList $nodes selected by the XPath query
|
114 |
+
* @param Description $mismatchDescription
|
115 |
+
* @return bool
|
116 |
+
*/
|
117 |
+
protected function matchesContent(\DOMNodeList $nodes, Description $mismatchDescription)
|
118 |
+
{
|
119 |
+
if ($nodes->length == 0) {
|
120 |
+
$mismatchDescription->appendText('XPath returned no results');
|
121 |
+
} elseif ($this->_matcher === null) {
|
122 |
+
return true;
|
123 |
+
} else {
|
124 |
+
foreach ($nodes as $node) {
|
125 |
+
if ($this->_matcher->matches($node->textContent)) {
|
126 |
+
return true;
|
127 |
+
}
|
128 |
+
}
|
129 |
+
$content = array();
|
130 |
+
foreach ($nodes as $node) {
|
131 |
+
$content[] = $node->textContent;
|
132 |
+
}
|
133 |
+
$mismatchDescription->appendText('XPath returned ')
|
134 |
+
->appendValue($content);
|
135 |
+
}
|
136 |
+
|
137 |
+
return false;
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Matches if the result of the XPath expression matches the configured
|
142 |
+
* matcher or evaluates to <code>true</code> if there is none.
|
143 |
+
*
|
144 |
+
* @param mixed $result result of the XPath expression
|
145 |
+
* @param Description $mismatchDescription
|
146 |
+
* @return bool
|
147 |
+
*/
|
148 |
+
protected function matchesExpression($result, Description $mismatchDescription)
|
149 |
+
{
|
150 |
+
if ($this->_matcher === null) {
|
151 |
+
if ($result) {
|
152 |
+
return true;
|
153 |
+
}
|
154 |
+
$mismatchDescription->appendText('XPath expression result was ')
|
155 |
+
->appendValue($result);
|
156 |
+
} else {
|
157 |
+
if ($this->_matcher->matches($result)) {
|
158 |
+
return true;
|
159 |
+
}
|
160 |
+
$mismatchDescription->appendText('XPath expression result ');
|
161 |
+
$this->_matcher->describeMismatch($result, $mismatchDescription);
|
162 |
+
}
|
163 |
+
|
164 |
+
return false;
|
165 |
+
}
|
166 |
+
|
167 |
+
public function describeTo(Description $description)
|
168 |
+
{
|
169 |
+
$description->appendText('XML or HTML document with XPath "')
|
170 |
+
->appendText($this->_xpath)
|
171 |
+
->appendText('"');
|
172 |
+
if ($this->_matcher !== null) {
|
173 |
+
$description->appendText(' ');
|
174 |
+
$this->_matcher->describeTo($description);
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Wraps <code>$matcher</code> with {@link Hamcrest\Core\IsEqual)
|
180 |
+
* if it's not a matcher and the XPath in <code>count()</code>
|
181 |
+
* if it's an integer.
|
182 |
+
*
|
183 |
+
* @factory
|
184 |
+
*/
|
185 |
+
public static function hasXPath($xpath, $matcher = null)
|
186 |
+
{
|
187 |
+
if ($matcher === null || $matcher instanceof Matcher) {
|
188 |
+
return new self($xpath, $matcher);
|
189 |
+
} elseif (is_int($matcher) && strpos($xpath, 'count(') !== 0) {
|
190 |
+
$xpath = 'count(' . $xpath . ')';
|
191 |
+
}
|
192 |
+
|
193 |
+
return new self($xpath, IsEqual::equalTo($matcher));
|
194 |
+
}
|
195 |
+
}
|
vendor/lucatume/args/codeception.yml
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
actor: Tester
|
2 |
+
paths:
|
3 |
+
tests: tests
|
4 |
+
log: tests/_output
|
5 |
+
data: tests/_data
|
6 |
+
helpers: tests/_support
|
7 |
+
settings:
|
8 |
+
bootstrap: _bootstrap.php
|
9 |
+
colors: true
|
10 |
+
memory_limit: 1024M
|
11 |
+
modules:
|
12 |
+
config:
|
13 |
+
Db:
|
14 |
+
dsn: ''
|
15 |
+
user: ''
|
16 |
+
password: ''
|
17 |
+
dump: tests/_data/dump.sql
|
vendor/lucatume/function-mocker/cache/003718f94361bf05e7a0149d8c566eda.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class Admin_Notices {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/248b6c7ab72e92c63d8ea2dc0000ba0c.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class wpdb {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/35a0eb5e7c644778e349db32d7929a3b.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
2 |
+
class wpdb {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/51a4bafc9ebe4b76b8047ef2c4683321.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Cyr-To-Lat
|
4 |
+
*
|
5 |
+
* Plugin Name: Cyr-To-Lat
|
6 |
+
* Plugin URI: https://wordpress.org/plugins/cyr2lat/
|
7 |
+
* Description: Converts Cyrillic characters in post and term slugs to Latin characters. Useful for creating human-readable URLs. Based on the original plugin by Anton Skorobogatov.
|
8 |
+
* Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
|
9 |
+
* Author URI: https://profiles.wordpress.org/sergeybiryukov/
|
10 |
+
* Requires at least: 5.1
|
11 |
+
* Tested up to: 5.6
|
12 |
+
* Version: 4.5.1
|
13 |
+
* Stable tag: 4.5.1
|
14 |
+
*
|
15 |
+
* Text Domain: cyr2lat
|
16 |
+
* Domain Path: /languages/
|
17 |
+
*
|
18 |
+
* @package cyr-to-lat
|
19 |
+
* @author Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
|
20 |
+
*/
|
21 |
+
|
22 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
23 |
+
|
24 |
+
// @codeCoverageIgnoreStart
|
25 |
+
if ( ! \Patchwork\Redefinitions\defined(__NAMESPACE__, 'ABSPATH' ) ) {
|
26 |
+
exit; // Exit if accessed directly.
|
27 |
+
}
|
28 |
+
// @codeCoverageIgnoreEnd
|
29 |
+
|
30 |
+
if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ) ) {
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Plugin version.
|
36 |
+
*/
|
37 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_VERSION', '4.5.1' );
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Path to the plugin dir.
|
41 |
+
*/
|
42 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_PATH', dirname( __FILE__ ) );
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Plugin dir url.
|
46 |
+
*/
|
47 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Main plugin file.
|
51 |
+
*/
|
52 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_FILE', __FILE__ );
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Plugin prefix.
|
56 |
+
*/
|
57 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_PREFIX', 'cyr_to_lat' );
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Post conversion action.
|
61 |
+
*/
|
62 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_POST_CONVERSION_ACTION', 'post_conversion_action' );
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Term conversion action.
|
66 |
+
*/
|
67 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_TERM_CONVERSION_ACTION', 'term_conversion_action' );
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Minimum required php version.
|
71 |
+
*/
|
72 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION', '5.6' );
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Minimum required max_input_vars value.
|
76 |
+
*/
|
77 |
+
\Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS', 1000 );
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Init plugin on plugin load.
|
81 |
+
*/
|
82 |
+
require_once \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_PATH' ) . '/vendor/autoload.php';
|
83 |
+
|
84 |
+
$cyr_to_lat_requirements = new Requirements();
|
85 |
+
|
86 |
+
if ( ! $cyr_to_lat_requirements->are_requirements_met() ) {
|
87 |
+
return;
|
88 |
+
}
|
89 |
+
|
90 |
+
$cyr_to_lat_plugin = new Main();
|
91 |
+
|
vendor/lucatume/function-mocker/cache/539425a502f6acd0d5ae4dbbb111eebc.php
ADDED
@@ -0,0 +1,1226 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Conversion tables.
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
use Cyr_To_Lat\Symfony\Polyfill\Mbstring\Mbstring;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Conversion_Tables
|
14 |
+
*
|
15 |
+
* @class Conversion_Tables
|
16 |
+
*/
|
17 |
+
class Conversion_Tables {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Get conversion table by locale.
|
21 |
+
*
|
22 |
+
* @link https://ru.wikipedia.org/wiki/ISO_9
|
23 |
+
*
|
24 |
+
* @param string $locale WordPress locale.
|
25 |
+
*
|
26 |
+
* @return array
|
27 |
+
*/
|
28 |
+
public static function get( $locale = '' ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
29 |
+
switch ( $locale ) {
|
30 |
+
// Belorussian.
|
31 |
+
case 'bel':
|
32 |
+
$table = [
|
33 |
+
'А' => 'A',
|
34 |
+
'Б' => 'B',
|
35 |
+
'В' => 'V',
|
36 |
+
'Г' => 'G',
|
37 |
+
'Д' => 'D',
|
38 |
+
'Е' => 'E',
|
39 |
+
'Ё' => 'YO',
|
40 |
+
'Ж' => 'ZH',
|
41 |
+
'З' => 'Z',
|
42 |
+
'І' => 'I',
|
43 |
+
'Й' => 'J',
|
44 |
+
'К' => 'K',
|
45 |
+
'Л' => 'L',
|
46 |
+
'М' => 'M',
|
47 |
+
'Н' => 'N',
|
48 |
+
'О' => 'O',
|
49 |
+
'П' => 'P',
|
50 |
+
'Р' => 'R',
|
51 |
+
'С' => 'S',
|
52 |
+
'Т' => 'T',
|
53 |
+
'У' => 'U',
|
54 |
+
'Ў' => 'U',
|
55 |
+
'Ф' => 'F',
|
56 |
+
'Х' => 'H',
|
57 |
+
'Ц' => 'CZ',
|
58 |
+
'Ч' => 'CH',
|
59 |
+
'Ш' => 'SH',
|
60 |
+
'Ы' => 'Y',
|
61 |
+
'Ь' => '',
|
62 |
+
'Э' => 'E',
|
63 |
+
'Ю' => 'YU',
|
64 |
+
'Я' => 'YA',
|
65 |
+
'а' => 'a',
|
66 |
+
'б' => 'b',
|
67 |
+
'в' => 'v',
|
68 |
+
'г' => 'g',
|
69 |
+
'д' => 'd',
|
70 |
+
'е' => 'e',
|
71 |
+
'ё' => 'yo',
|
72 |
+
'ж' => 'zh',
|
73 |
+
'з' => 'z',
|
74 |
+
'і' => 'i',
|
75 |
+
'й' => 'j',
|
76 |
+
'к' => 'k',
|
77 |
+
'л' => 'l',
|
78 |
+
'м' => 'm',
|
79 |
+
'н' => 'n',
|
80 |
+
'о' => 'o',
|
81 |
+
'п' => 'p',
|
82 |
+
'р' => 'r',
|
83 |
+
'с' => 's',
|
84 |
+
'т' => 't',
|
85 |
+
'у' => 'u',
|
86 |
+
'ў' => 'u',
|
87 |
+
'ф' => 'f',
|
88 |
+
'х' => 'h',
|
89 |
+
'ц' => 'cz',
|
90 |
+
'ч' => 'ch',
|
91 |
+
'ш' => 'sh',
|
92 |
+
'ы' => 'y',
|
93 |
+
'ь' => '',
|
94 |
+
'э' => 'e',
|
95 |
+
'ю' => 'yu',
|
96 |
+
'я' => 'ya',
|
97 |
+
];
|
98 |
+
break;
|
99 |
+
// Ukrainian.
|
100 |
+
case 'uk':
|
101 |
+
$table = [
|
102 |
+
'А' => 'A',
|
103 |
+
'Б' => 'B',
|
104 |
+
'В' => 'V',
|
105 |
+
'Г' => 'G',
|
106 |
+
'Ґ' => 'G',
|
107 |
+
'Д' => 'D',
|
108 |
+
'Е' => 'E',
|
109 |
+
'Є' => 'YE',
|
110 |
+
'Ж' => 'ZH',
|
111 |
+
'З' => 'Z',
|
112 |
+
'И' => 'Y',
|
113 |
+
'І' => 'I',
|
114 |
+
'Ї' => 'YI',
|
115 |
+
'Й' => 'J',
|
116 |
+
'К' => 'K',
|
117 |
+
'Л' => 'L',
|
118 |
+
'М' => 'M',
|
119 |
+
'Н' => 'N',
|
120 |
+
'О' => 'O',
|
121 |
+
'П' => 'P',
|
122 |
+
'Р' => 'R',
|
123 |
+
'С' => 'S',
|
124 |
+
'Т' => 'T',
|
125 |
+
'У' => 'U',
|
126 |
+
'Ф' => 'F',
|
127 |
+
'Х' => 'H',
|
128 |
+
'Ц' => 'CZ',
|
129 |
+
'Ч' => 'CH',
|
130 |
+
'Ш' => 'SH',
|
131 |
+
'Щ' => 'SHH',
|
132 |
+
'Ь' => '',
|
133 |
+
'Ю' => 'YU',
|
134 |
+
'Я' => 'YA',
|
135 |
+
'а' => 'a',
|
136 |
+
'б' => 'b',
|
137 |
+
'в' => 'v',
|
138 |
+
'г' => 'g',
|
139 |
+
'ґ' => 'g',
|
140 |
+
'д' => 'd',
|
141 |
+
'е' => 'e',
|
142 |
+
'є' => 'ye',
|
143 |
+
'ж' => 'zh',
|
144 |
+
'з' => 'z',
|
145 |
+
'и' => 'y',
|
146 |
+
'і' => 'i',
|
147 |
+
'ї' => 'yi',
|
148 |
+
'й' => 'j',
|
149 |
+
'к' => 'k',
|
150 |
+
'л' => 'l',
|
151 |
+
'м' => 'm',
|
152 |
+
'н' => 'n',
|
153 |
+
'о' => 'o',
|
154 |
+
'п' => 'p',
|
155 |
+
'р' => 'r',
|
156 |
+
'с' => 's',
|
157 |
+
'т' => 't',
|
158 |
+
'у' => 'u',
|
159 |
+
'ф' => 'f',
|
160 |
+
'х' => 'h',
|
161 |
+
'ц' => 'cz',
|
162 |
+
'ч' => 'ch',
|
163 |
+
'ш' => 'sh',
|
164 |
+
'щ' => 'shh',
|
165 |
+
'ь' => '',
|
166 |
+
'ю' => 'yu',
|
167 |
+
'я' => 'ya',
|
168 |
+
];
|
169 |
+
break;
|
170 |
+
// Bulgarian.
|
171 |
+
case 'bg_BG':
|
172 |
+
$table = [
|
173 |
+
'А' => 'A',
|
174 |
+
'Б' => 'B',
|
175 |
+
'В' => 'V',
|
176 |
+
'Г' => 'G',
|
177 |
+
'Д' => 'D',
|
178 |
+
'Е' => 'E',
|
179 |
+
'Ж' => 'ZH',
|
180 |
+
'З' => 'Z',
|
181 |
+
'И' => 'I',
|
182 |
+
'Й' => 'J',
|
183 |
+
'К' => 'K',
|
184 |
+
'Л' => 'L',
|
185 |
+
'М' => 'M',
|
186 |
+
'Н' => 'N',
|
187 |
+
'О' => 'O',
|
188 |
+
'П' => 'P',
|
189 |
+
'Р' => 'R',
|
190 |
+
'С' => 'S',
|
191 |
+
'Т' => 'T',
|
192 |
+
'У' => 'U',
|
193 |
+
'Ф' => 'F',
|
194 |
+
'Х' => 'H',
|
195 |
+
'Ц' => 'CZ',
|
196 |
+
'Ч' => 'CH',
|
197 |
+
'Ш' => 'SH',
|
198 |
+
'Щ' => 'STH',
|
199 |
+
'Ъ' => 'A',
|
200 |
+
'Ь' => '',
|
201 |
+
'Ю' => 'YU',
|
202 |
+
'Я' => 'YA',
|
203 |
+
'а' => 'a',
|
204 |
+
'б' => 'b',
|
205 |
+
'в' => 'v',
|
206 |
+
'г' => 'g',
|
207 |
+
'д' => 'd',
|
208 |
+
'е' => 'e',
|
209 |
+
'ж' => 'zh',
|
210 |
+
'з' => 'z',
|
211 |
+
'и' => 'i',
|
212 |
+
'й' => 'j',
|
213 |
+
'к' => 'k',
|
214 |
+
'л' => 'l',
|
215 |
+
'м' => 'm',
|
216 |
+
'н' => 'n',
|
217 |
+
'о' => 'o',
|
218 |
+
'п' => 'p',
|
219 |
+
'р' => 'r',
|
220 |
+
'с' => 's',
|
221 |
+
'т' => 't',
|
222 |
+
'у' => 'u',
|
223 |
+
'ф' => 'f',
|
224 |
+
'х' => 'h',
|
225 |
+
'ц' => 'cz',
|
226 |
+
'ч' => 'ch',
|
227 |
+
'ш' => 'sh',
|
228 |
+
'щ' => 'sth',
|
229 |
+
'ъ' => 'a',
|
230 |
+
'ь' => '',
|
231 |
+
'ю' => 'yu',
|
232 |
+
'я' => 'ya',
|
233 |
+
'І' => 'I',
|
234 |
+
'і' => 'i',
|
235 |
+
'Ѣ' => 'YE',
|
236 |
+
'ѣ' => 'ye',
|
237 |
+
'Ѫ' => 'О',
|
238 |
+
'ѫ' => 'о',
|
239 |
+
'Ѳ' => 'FH',
|
240 |
+
'ѳ' => 'fh',
|
241 |
+
'Ѵ' => 'YH',
|
242 |
+
'ѵ' => 'yh',
|
243 |
+
];
|
244 |
+
break;
|
245 |
+
// Macedonian.
|
246 |
+
// @link https://ru.wikipedia.org/wiki/ISO_9#%D0%A2%D0%B0%D0%B1%D0%BB._2._%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_%D0%91.
|
247 |
+
case 'mk_MK':
|
248 |
+
$table = [
|
249 |
+
'А' => 'A',
|
250 |
+
'Б' => 'B',
|
251 |
+
'В' => 'V',
|
252 |
+
'Г' => 'G',
|
253 |
+
'Д' => 'D',
|
254 |
+
'Ѓ' => 'G',
|
255 |
+
'Е' => 'E',
|
256 |
+
'Ж' => 'ZH',
|
257 |
+
'З' => 'Z',
|
258 |
+
'И' => 'I',
|
259 |
+
'Ѕ' => 'Z',
|
260 |
+
'Ј' => 'J',
|
261 |
+
'К' => 'K',
|
262 |
+
'Л' => 'L',
|
263 |
+
'Љ' => 'L',
|
264 |
+
'М' => 'M',
|
265 |
+
'Н' => 'N',
|
266 |
+
'Њ' => 'N',
|
267 |
+
'О' => 'O',
|
268 |
+
'П' => 'P',
|
269 |
+
'Р' => 'R',
|
270 |
+
'С' => 'S',
|
271 |
+
'Т' => 'T',
|
272 |
+
'Ќ' => 'K',
|
273 |
+
'У' => 'U',
|
274 |
+
'Ф' => 'F',
|
275 |
+
'Х' => 'H',
|
276 |
+
'Ц' => 'CZ',
|
277 |
+
'Ч' => 'CH',
|
278 |
+
'Џ' => 'DH',
|
279 |
+
'Ш' => 'SH',
|
280 |
+
'а' => 'a',
|
281 |
+
'б' => 'b',
|
282 |
+
'в' => 'v',
|
283 |
+
'г' => 'g',
|
284 |
+
'д' => 'd',
|
285 |
+
'ѓ' => 'g',
|
286 |
+
'е' => 'e',
|
287 |
+
'ж' => 'zh',
|
288 |
+
'з' => 'z',
|
289 |
+
'и' => 'i',
|
290 |
+
'ѕ' => 'z',
|
291 |
+
'ј' => 'j',
|
292 |
+
'к' => 'k',
|
293 |
+
'л' => 'l',
|
294 |
+
'љ' => 'l',
|
295 |
+
'м' => 'm',
|
296 |
+
'н' => 'n',
|
297 |
+
'њ' => 'n',
|
298 |
+
'о' => 'o',
|
299 |
+
'п' => 'p',
|
300 |
+
'р' => 'r',
|
301 |
+
'с' => 's',
|
302 |
+
'т' => 't',
|
303 |
+
'ќ' => 'k',
|
304 |
+
'у' => 'u',
|
305 |
+
'ф' => 'f',
|
306 |
+
'х' => 'h',
|
307 |
+
'ц' => 'cz',
|
308 |
+
'ч' => 'ch',
|
309 |
+
'џ' => 'dh',
|
310 |
+
'ш' => 'sh',
|
311 |
+
];
|
312 |
+
break;
|
313 |
+
// Serbian.
|
314 |
+
case 'sr_RS':
|
315 |
+
$table = [
|
316 |
+
'А' => 'A',
|
317 |
+
'Б' => 'B',
|
318 |
+
'В' => 'V',
|
319 |
+
'Г' => 'G',
|
320 |
+
'Д' => 'D',
|
321 |
+
'Ђ' => 'Dj',
|
322 |
+
'Е' => 'E',
|
323 |
+
'Ж' => 'Z',
|
324 |
+
'З' => 'Z',
|
325 |
+
'И' => 'I',
|
326 |
+
'J' => 'J',
|
327 |
+
'К' => 'K',
|
328 |
+
'Л' => 'L',
|
329 |
+
'Љ' => 'Lj',
|
330 |
+
'М' => 'M',
|
331 |
+
'Н' => 'N',
|
332 |
+
'Њ' => 'Nj',
|
333 |
+
'О' => 'O',
|
334 |
+
'П' => 'P',
|
335 |
+
'Р' => 'R',
|
336 |
+
'С' => 'S',
|
337 |
+
'Т' => 'T',
|
338 |
+
'Ћ' => 'C',
|
339 |
+
'У' => 'U',
|
340 |
+
'Ф' => 'F',
|
341 |
+
'Х' => 'H',
|
342 |
+
'Ц' => 'C',
|
343 |
+
'Ч' => 'C',
|
344 |
+
'Џ' => 'Dz',
|
345 |
+
'Ш' => 'S',
|
346 |
+
'а' => 'a',
|
347 |
+
'б' => 'b',
|
348 |
+
'в' => 'v',
|
349 |
+
'г' => 'g',
|
350 |
+
'д' => 'd',
|
351 |
+
'ђ' => 'dj',
|
352 |
+
'е' => 'e',
|
353 |
+
'ж' => 'z',
|
354 |
+
'з' => 'z',
|
355 |
+
'и' => 'i',
|
356 |
+
'j' => 'j',
|
357 |
+
'к' => 'k',
|
358 |
+
'л' => 'l',
|
359 |
+
'љ' => 'lj',
|
360 |
+
'м' => 'm',
|
361 |
+
'н' => 'n',
|
362 |
+
'њ' => 'nj',
|
363 |
+
'о' => 'o',
|
364 |
+
'п' => 'p',
|
365 |
+
'р' => 'r',
|
366 |
+
'с' => 's',
|
367 |
+
'т' => 't',
|
368 |
+
'ћ' => 'c',
|
369 |
+
'у' => 'u',
|
370 |
+
'ф' => 'f',
|
371 |
+
'х' => 'h',
|
372 |
+
'ц' => 'c',
|
373 |
+
'ч' => 'c',
|
374 |
+
'џ' => 'dz',
|
375 |
+
'ш' => 's',
|
376 |
+
];
|
377 |
+
break;
|
378 |
+
// Greek.
|
379 |
+
// @link https://en.wikipedia.org/wiki/Greek_alphabet.
|
380 |
+
case 'el':
|
381 |
+
$table = [
|
382 |
+
'Α' => 'A',
|
383 |
+
'Β' => 'B',
|
384 |
+
'Γ' => 'G',
|
385 |
+
'Δ' => 'D',
|
386 |
+
'Ε' => 'E',
|
387 |
+
'Ζ' => 'Z',
|
388 |
+
'Η' => 'E',
|
389 |
+
'Θ' => 'TH',
|
390 |
+
'Ι' => 'I',
|
391 |
+
'Κ' => 'K',
|
392 |
+
'Λ' => 'L',
|
393 |
+
'Μ' => 'M',
|
394 |
+
'Ν' => 'N',
|
395 |
+
'Ξ' => 'X',
|
396 |
+
'Ο' => 'O',
|
397 |
+
'Π' => 'P',
|
398 |
+
'Ρ' => 'R',
|
399 |
+
'Σ' => 'S',
|
400 |
+
'Τ' => 'T',
|
401 |
+
'Υ' => 'U',
|
402 |
+
'Φ' => 'PH',
|
403 |
+
'Χ' => 'KH',
|
404 |
+
'Ψ' => 'PS',
|
405 |
+
'Ω' => 'O',
|
406 |
+
'α' => 'a',
|
407 |
+
'β' => 'b',
|
408 |
+
'γ' => 'g',
|
409 |
+
'δ' => 'd',
|
410 |
+
'ε' => 'e',
|
411 |
+
'ζ' => 'z',
|
412 |
+
'η' => 'e',
|
413 |
+
'θ' => 'th',
|
414 |
+
'ι' => 'i',
|
415 |
+
'κ' => 'k',
|
416 |
+
'λ' => 'l',
|
417 |
+
'μ' => 'm',
|
418 |
+
'ν' => 'n',
|
419 |
+
'ξ' => 'x',
|
420 |
+
'ο' => 'o',
|
421 |
+
'π' => 'p',
|
422 |
+
'ρ' => 'r',
|
423 |
+
'σ' => 's',
|
424 |
+
'ς' => 's',
|
425 |
+
'τ' => 't',
|
426 |
+
'υ' => 'u',
|
427 |
+
'φ' => 'ph',
|
428 |
+
'χ' => 'kh',
|
429 |
+
'ψ' => 'ps',
|
430 |
+
'ω' => 'o',
|
431 |
+
];
|
432 |
+
break;
|
433 |
+
// Armenian.
|
434 |
+
// @link https://en.wikipedia.org/wiki/Romanization_of_Armenian.
|
435 |
+
case 'hy':
|
436 |
+
$table = [
|
437 |
+
'Ա' => 'A',
|
438 |
+
'Բ' => 'B',
|
439 |
+
'Գ' => 'G',
|
440 |
+
'Դ' => 'D',
|
441 |
+
'Ե' => 'E',
|
442 |
+
'Զ' => 'Z',
|
443 |
+
'Է' => 'E',
|
444 |
+
'Ը' => 'Y',
|
445 |
+
'Թ' => 'T',
|
446 |
+
'Ժ' => 'ZH',
|
447 |
+
'Ի' => 'I',
|
448 |
+
'Լ' => 'L',
|
449 |
+
'Խ' => 'X',
|
450 |
+
'Ծ' => 'C',
|
451 |
+
'Կ' => 'K',
|
452 |
+
'Հ' => 'H',
|
453 |
+
'Ձ' => 'J',
|
454 |
+
'Ղ' => 'GH',
|
455 |
+
'Ճ' => 'CH',
|
456 |
+
'Մ' => 'M',
|
457 |
+
'Յ' => 'Y',
|
458 |
+
'Ն' => 'N',
|
459 |
+
'Շ' => 'SH',
|
460 |
+
'Ո' => 'O',
|
461 |
+
'Չ' => 'CH',
|
462 |
+
'Պ' => 'P',
|
463 |
+
'Ջ' => 'J',
|
464 |
+
'Ռ' => 'RR',
|
465 |
+
'Ս' => 'S',
|
466 |
+
'Վ' => 'V',
|
467 |
+
'Տ' => 'T',
|
468 |
+
'Ր' => 'R',
|
469 |
+
'Ց' => 'C',
|
470 |
+
'Ւ' => 'W',
|
471 |
+
'Փ' => 'P',
|
472 |
+
'Ք' => 'Q',
|
473 |
+
'Օ' => 'O',
|
474 |
+
'Ֆ' => 'F',
|
475 |
+
'ՈՒ' => 'U',
|
476 |
+
'ա' => 'a',
|
477 |
+
'բ' => 'b',
|
478 |
+
'գ' => 'g',
|
479 |
+
'դ' => 'd',
|
480 |
+
'ե' => 'e',
|
481 |
+
'զ' => 'z',
|
482 |
+
'է' => 'e',
|
483 |
+
'ը' => 'y',
|
484 |
+
'թ' => 't',
|
485 |
+
'ժ' => 'zh',
|
486 |
+
'ի' => 'i',
|
487 |
+
'լ' => 'l',
|
488 |
+
'խ' => 'x',
|
489 |
+
'ծ' => 'c',
|
490 |
+
'կ' => 'k',
|
491 |
+
'հ' => 'h',
|
492 |
+
'ձ' => 'j',
|
493 |
+
'ղ' => 'gh',
|
494 |
+
'ճ' => 'ch',
|
495 |
+
'մ' => 'm',
|
496 |
+
'յ' => 'y',
|
497 |
+
'ն' => 'n',
|
498 |
+
'շ' => 'sh',
|
499 |
+
'ո' => 'o',
|
500 |
+
'չ' => 'ch',
|
501 |
+
'պ' => 'p',
|
502 |
+
'ջ' => 'j',
|
503 |
+
'ռ' => 'rr',
|
504 |
+
'ս' => 's',
|
505 |
+
'վ' => 'v',
|
506 |
+
'տ' => 't',
|
507 |
+
'ր' => 'r',
|
508 |
+
'ց' => 'c',
|
509 |
+
'ւ' => 'w',
|
510 |
+
'փ' => 'p',
|
511 |
+
'ք' => 'q',
|
512 |
+
'օ' => 'o',
|
513 |
+
'ֆ' => 'f',
|
514 |
+
'ու' => 'u',
|
515 |
+
'և' => 'ew',
|
516 |
+
];
|
517 |
+
break;
|
518 |
+
// Georgian.
|
519 |
+
case 'ka_GE':
|
520 |
+
$table = [
|
521 |
+
'ა' => 'a',
|
522 |
+
'ბ' => 'b',
|
523 |
+
'გ' => 'g',
|
524 |
+
'დ' => 'd',
|
525 |
+
'ე' => 'e',
|
526 |
+
'ვ' => 'v',
|
527 |
+
'ზ' => 'z',
|
528 |
+
'ჱ' => '',
|
529 |
+
'თ' => 'th',
|
530 |
+
'ი' => 'i',
|
531 |
+
'კ' => 'k',
|
532 |
+
'ლ' => 'l',
|
533 |
+
'მ' => 'm',
|
534 |
+
'ნ' => 'n',
|
535 |
+
'ჲ' => '',
|
536 |
+
'ო' => 'o',
|
537 |
+
'პ' => 'p',
|
538 |
+
'ჟ' => 'zh',
|
539 |
+
'რ' => 'r',
|
540 |
+
'ს' => 's',
|
541 |
+
'ტ' => 't',
|
542 |
+
'ჳ' => '',
|
543 |
+
'უ' => 'u',
|
544 |
+
'ფ' => 'ph',
|
545 |
+
'ქ' => 'kh',
|
546 |
+
'ღ' => 'gh',
|
547 |
+
'ყ' => 'qh',
|
548 |
+
'შ' => 'sh',
|
549 |
+
'ჩ' => 'ch',
|
550 |
+
'ც' => 'ts',
|
551 |
+
'ძ' => 'dz',
|
552 |
+
'წ' => 'c',
|
553 |
+
'ჭ' => 'ch',
|
554 |
+
'ხ' => 'kh',
|
555 |
+
'ჴ' => '',
|
556 |
+
'ჯ' => 'j',
|
557 |
+
'ჰ' => 'h',
|
558 |
+
'ჵ' => '',
|
559 |
+
];
|
560 |
+
break;
|
561 |
+
// Kazakh.
|
562 |
+
case 'kk':
|
563 |
+
$table = [
|
564 |
+
'А' => 'A',
|
565 |
+
'Ә' => 'Ae',
|
566 |
+
'Б' => 'B',
|
567 |
+
'В' => 'V',
|
568 |
+
'Г' => 'G',
|
569 |
+
'Ғ' => 'Gh',
|
570 |
+
'Д' => 'D',
|
571 |
+
'Е' => 'E',
|
572 |
+
'Ё' => 'YO',
|
573 |
+
'Ж' => 'ZH',
|
574 |
+
'З' => 'Z',
|
575 |
+
'И' => 'I',
|
576 |
+
'Й' => 'J',
|
577 |
+
'К' => 'K',
|
578 |
+
'Қ' => 'Q',
|
579 |
+
'Л' => 'L',
|
580 |
+
'М' => 'M',
|
581 |
+
'Н' => 'N',
|
582 |
+
'Ң' => 'Ng',
|
583 |
+
'О' => 'O',
|
584 |
+
'Ө' => 'Oe',
|
585 |
+
'П' => 'P',
|
586 |
+
'Р' => 'R',
|
587 |
+
'С' => 'S',
|
588 |
+
'Т' => 'T',
|
589 |
+
'У' => 'W',
|
590 |
+
'Ұ' => 'U',
|
591 |
+
'Ү' => 'Ue',
|
592 |
+
'Ф' => 'F',
|
593 |
+
'Х' => 'H',
|
594 |
+
'Һ' => 'H',
|
595 |
+
'Ц' => 'C',
|
596 |
+
'Ч' => 'CH',
|
597 |
+
'Ш' => 'SH',
|
598 |
+
'Щ' => 'SHH',
|
599 |
+
'Ъ' => '',
|
600 |
+
'Ы' => 'Y',
|
601 |
+
'І' => 'I',
|
602 |
+
'Ь' => '',
|
603 |
+
'Э' => 'E',
|
604 |
+
'Ю' => 'YU',
|
605 |
+
'Я' => 'YA',
|
606 |
+
'а' => 'a',
|
607 |
+
'ә' => 'ae',
|
608 |
+
'б' => 'b',
|
609 |
+
'в' => 'v',
|
610 |
+
'г' => 'g',
|
611 |
+
'ғ' => 'gh',
|
612 |
+
'д' => 'd',
|
613 |
+
'е' => 'e',
|
614 |
+
'ё' => 'yo',
|
615 |
+
'ж' => 'zh',
|
616 |
+
'з' => 'z',
|
617 |
+
'и' => 'i',
|
618 |
+
'й' => 'j',
|
619 |
+
'к' => 'k',
|
620 |
+
'қ' => 'q',
|
621 |
+
'л' => 'l',
|
622 |
+
'м' => 'm',
|
623 |
+
'н' => 'n',
|
624 |
+
'ң' => 'ng',
|
625 |
+
'о' => 'o',
|
626 |
+
'ө' => 'oe',
|
627 |
+
'п' => 'p',
|
628 |
+
'р' => 'r',
|
629 |
+
'с' => 's',
|
630 |
+
'т' => 't',
|
631 |
+
'у' => 'w',
|
632 |
+
'ұ' => 'u',
|
633 |
+
'ү' => 'ue',
|
634 |
+
'ф' => 'f',
|
635 |
+
'х' => 'h',
|
636 |
+
'һ' => 'h',
|
637 |
+
'ц' => 'c',
|
638 |
+
'ч' => 'ch',
|
639 |
+
'ш' => 'sh',
|
640 |
+
'щ' => 'shh',
|
641 |
+
'ъ' => '',
|
642 |
+
'ы' => 'y',
|
643 |
+
'і' => 'i',
|
644 |
+
'ь' => '',
|
645 |
+
'э' => 'e',
|
646 |
+
'ю' => 'yu',
|
647 |
+
'я' => 'ya',
|
648 |
+
// Kazakh 2018 latin.
|
649 |
+
'Á' => 'A',
|
650 |
+
'Ǵ' => 'G',
|
651 |
+
'I' => 'I',
|
652 |
+
'Ń' => 'N',
|
653 |
+
'Ó' => 'O',
|
654 |
+
'Ú' => 'O',
|
655 |
+
'Ý' => 'O',
|
656 |
+
'á' => 'a',
|
657 |
+
'ǵ' => 'g',
|
658 |
+
'ı' => 'i',
|
659 |
+
'ń' => 'n',
|
660 |
+
'ó' => 'o',
|
661 |
+
'ú' => 'o',
|
662 |
+
'ý' => 'o',
|
663 |
+
];
|
664 |
+
break;
|
665 |
+
// Hebrew.
|
666 |
+
case 'he_IL':
|
667 |
+
$table = [
|
668 |
+
'א' => '',
|
669 |
+
'ב' => 'b',
|
670 |
+
'ג' => 'g',
|
671 |
+
'ד' => 'd',
|
672 |
+
'ה' => 'h',
|
673 |
+
'ו' => 'w',
|
674 |
+
'ז' => 'z',
|
675 |
+
'ח' => 'x',
|
676 |
+
'ט' => 't',
|
677 |
+
'י' => 'y',
|
678 |
+
'ך' => '',
|
679 |
+
'כ' => 'kh',
|
680 |
+
'ל' => 'l',
|
681 |
+
'ם' => '',
|
682 |
+
'מ' => 'm',
|
683 |
+
'ן' => '',
|
684 |
+
'נ' => 'n',
|
685 |
+
'ס' => 's',
|
686 |
+
'ע' => '',
|
687 |
+
'ף' => '',
|
688 |
+
'פ' => 'ph',
|
689 |
+
'ץ' => '',
|
690 |
+
'צ' => 's',
|
691 |
+
'ק' => 'k',
|
692 |
+
'ר' => 'r',
|
693 |
+
'ש' => 'sh',
|
694 |
+
'ת' => 'th',
|
695 |
+
];
|
696 |
+
for ( $code = 0x0590; $code <= 0x05CF; $code ++ ) {
|
697 |
+
$table[ Mbstring::mb_chr( $code ) ] = '';
|
698 |
+
}
|
699 |
+
for ( $code = 0x05F0; $code <= 0x05F5; $code ++ ) {
|
700 |
+
$table[ Mbstring::mb_chr( $code ) ] = '';
|
701 |
+
}
|
702 |
+
for ( $code = 0xFB1D; $code <= 0xFB4F; $code ++ ) {
|
703 |
+
$table[ Mbstring::mb_chr( $code ) ] = '';
|
704 |
+
}
|
705 |
+
break;
|
706 |
+
// phpcs:disable PSR2.ControlStructures.SwitchDeclaration.TerminatingComment
|
707 |
+
case 'zh_CN':
|
708 |
+
case 'zh_HK':
|
709 |
+
case 'zh_SG':
|
710 |
+
case 'zh_TW':
|
711 |
+
// phpcs:enable PSR2.ControlStructures.SwitchDeclaration.TerminatingComment
|
712 |
+
|
713 |
+
// Chinese dictionary copied from Pinyin Permalinks plugin.
|
714 |
+
$table = [
|
715 |
+
'A' => '啊阿吖嗄锕',
|
716 |
+
'Ai' => '埃挨哎唉哀皑癌蔼矮艾碍爱隘捱嗳嫒瑷暧砹锿霭',
|
717 |
+
'An' => '鞍氨安俺按暗岸胺案谙埯揞庵桉铵鹌黯',
|
718 |
+
'Ang' => '肮昂盎',
|
719 |
+
'Ao' => '凹敖熬翱袄傲奥懊澳坳拗嗷岙廒遨媪骜獒聱螯鏊鳌鏖',
|
720 |
+
'Ba' => '芭捌扒叭吧笆八疤巴拔跋靶把坝霸罢爸茇菝岜灞钯粑鲅魃',
|
721 |
+
'Bai' => '白柏百摆佰败拜稗捭掰',
|
722 |
+
'Ban' => '斑班搬扳般颁板版扮拌伴瓣半办绊阪坂钣瘢癍舨',
|
723 |
+
'Bang' => '邦帮梆榜膀绑棒磅蚌镑傍谤蒡浜',
|
724 |
+
'Bao' => '苞胞包褒薄雹保堡饱宝抱报暴豹鲍爆曝勹葆孢煲鸨褓趵龅',
|
725 |
+
'Bei' => '杯碑悲卑北辈背贝钡倍狈备惫焙被孛陂邶蓓呗悖碚鹎褙鐾鞴',
|
726 |
+
'Ben' => '奔苯本笨畚坌锛',
|
727 |
+
'Beng' => '崩绷甭泵蹦迸嘣甏',
|
728 |
+
'Bi' => '逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必壁臂避陛匕俾荜荸萆薜吡哔狴庳愎滗濞弼妣婢嬖璧贲睥畀铋秕裨筚箅篦舭襞跸髀',
|
729 |
+
'Bian' => '鞭边编贬扁便变卞辨辩辫遍匾弁苄忭汴缏煸砭碥窆褊蝙笾鳊',
|
730 |
+
'Biao' => '标彪膘表婊骠飑飙飚镖镳瘭裱鳔',
|
731 |
+
'Bie' => '鳖憋别瘪蹩',
|
732 |
+
'Bin' => '彬斌濒滨宾摈傧豳缤玢殡膑镔髌鬓',
|
733 |
+
'Bing' => '兵冰柄丙秉饼炳病并禀邴摒槟',
|
734 |
+
'Bo' => '剥玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳卜亳啵饽檗擘礴钹鹁簸跛踣',
|
735 |
+
'Bu' => '捕哺补埠不布步簿部怖卟逋瓿晡钚钸醭',
|
736 |
+
'Ca' => '擦礤',
|
737 |
+
'Cai' => '猜裁材才财睬踩采彩菜蔡',
|
738 |
+
'Can' => '餐参蚕残惭惨灿孱骖璨粲黪',
|
739 |
+
'Cang' => '苍舱仓沧藏伧',
|
740 |
+
'Cao' => '操糙槽曹草嘈漕螬艚',
|
741 |
+
'Ce' => '厕策侧册测恻',
|
742 |
+
'Cen' => '岑涔',
|
743 |
+
'Ceng' => '层蹭曾噌',
|
744 |
+
'Cha' => '插叉茬茶查碴搽察岔差诧嚓猹馇汊姹杈槎檫锸镲衩',
|
745 |
+
'Chai' => '拆柴豺侪钗瘥虿',
|
746 |
+
'Chan' => '搀掺蝉馋谗缠铲产阐颤冁谄蒇廛忏潺澶羼婵骣觇禅蟾躔',
|
747 |
+
'Chang' => '昌猖场尝常长偿肠厂敞畅唱倡伥鬯苌菖徜怅阊娼嫦昶氅鲳',
|
748 |
+
'Chao' => '超抄钞朝嘲潮巢吵炒怊晁焯耖',
|
749 |
+
'Che' => '车扯撤掣彻澈坼砗',
|
750 |
+
'Chen' => '郴臣辰尘晨忱沉陈趁衬谌谶抻嗔宸琛榇碜龀',
|
751 |
+
'Cheng' => '撑称城橙成呈乘程惩澄诚承逞骋秤丞埕枨柽塍瞠铖裎蛏酲',
|
752 |
+
'Chi' => '吃痴持池迟弛驰耻齿侈尺赤翅斥炽傺墀茌叱哧啻嗤彳饬媸敕眵鸱瘛褫蚩螭笞篪豉踟魑',
|
753 |
+
'Chong' => '充冲虫崇宠茺忡憧铳舂艟',
|
754 |
+
'Chou' => '抽酬畴踌稠愁筹仇绸瞅丑臭俦帱惆瘳雠',
|
755 |
+
'Chu' => '初出橱厨躇锄雏滁除楚础储矗搐触处畜亍刍怵憷绌杵楮樗褚蜍蹰黜',
|
756 |
+
'Chuai' => '揣搋啜膪踹',
|
757 |
+
'Chuan' => '川穿椽传船喘串舛遄氚钏舡',
|
758 |
+
'Chuang' => '疮窗床闯创怆',
|
759 |
+
'Chui' => '吹炊捶锤垂陲棰槌',
|
760 |
+
'Chun' => '春椿醇唇淳纯蠢莼鹑蝽',
|
761 |
+
'Chuo' => '戳绰辍踔龊',
|
762 |
+
'Ci' => '疵茨磁雌辞慈瓷词此刺赐次茈祠鹚糍',
|
763 |
+
'Cong' => '聪葱囱匆从丛苁淙骢琮璁枞',
|
764 |
+
'Cou' => '凑楱辏腠',
|
765 |
+
'Cu' => '粗醋簇促蔟徂猝殂蹙蹴',
|
766 |
+
'Cuan' => '蹿篡窜汆撺爨镩',
|
767 |
+
'Cui' => '摧崔催脆瘁粹淬翠萃啐悴璀榱毳',
|
768 |
+
'Cun' => '村存寸忖皴',
|
769 |
+
'Cuo' => '磋撮搓措挫错厝嵯脞锉矬痤鹾蹉',
|
770 |
+
'Da' => '搭达答瘩打大耷哒嗒怛妲沓褡笪靼鞑',
|
771 |
+
'Dai' => '呆歹傣戴带殆代贷袋待逮怠埭甙呔岱迨绐玳黛',
|
772 |
+
'Dan' => '耽担丹单郸掸胆旦氮但惮淡诞弹蛋儋凼萏菪啖澹宕殚赕眈疸瘅聃箪',
|
773 |
+
'Dang' => '当挡党荡档谠砀铛裆',
|
774 |
+
'Dao' => '刀捣蹈倒岛祷导到稻悼道盗叨氘焘纛',
|
775 |
+
'De' => '德得的锝',
|
776 |
+
'Deng' => '蹬灯登等瞪凳邓噔嶝戥磴镫簦',
|
777 |
+
'Di' => '堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔氐籴诋谛邸坻荻嘀娣柢棣觌祗砥碲睇镝羝骶',
|
778 |
+
'Dia' => '嗲',
|
779 |
+
'Dian' => '颠掂滇碘点典靛垫电佃甸店惦奠淀殿丶阽坫巅玷钿癜癫簟踮',
|
780 |
+
'Diao' => '碉叼雕凋刁掉吊钓调铞貂鲷',
|
781 |
+
'Die' => '跌爹碟蝶迭谍叠垤堞揲喋牒瓞耋鲽',
|
782 |
+
'Ding' => '丁盯叮钉顶鼎锭定订仃啶玎腚碇町疔耵酊',
|
783 |
+
'Diu' => '丢铥',
|
784 |
+
'Dong' => '东冬董懂动栋侗恫冻洞垌咚岽峒氡胨胴硐鸫',
|
785 |
+
'Dou' => '兜抖斗陡豆逗痘都蔸钭窦蚪篼',
|
786 |
+
'Du' => '督毒犊独读堵睹赌杜镀肚度渡妒芏嘟渎椟牍蠹笃髑黩',
|
787 |
+
'Duan' => '端短锻段断缎椴煅簖',
|
788 |
+
'Dui' => '堆兑队对怼憝碓镦',
|
789 |
+
'Dun' => '墩吨蹲敦顿钝盾遁沌炖砘礅盹趸',
|
790 |
+
'Duo' => '掇哆多夺垛躲朵跺舵剁惰堕咄哚沲缍铎裰踱',
|
791 |
+
'E' => '蛾峨鹅俄额讹娥恶厄扼遏鄂饿噩谔垩苊莪萼呃愕屙婀轭腭锇锷鹗颚鳄',
|
792 |
+
'Ei' => '诶',
|
793 |
+
'En' => '恩蒽摁嗯',
|
794 |
+
'Er' => '而儿耳尔饵洱二贰迩珥铒鸸鲕',
|
795 |
+
'Fa' => '发罚筏伐乏阀法珐垡砝',
|
796 |
+
'Fan' => '藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛蕃蘩幡梵燔畈蹯',
|
797 |
+
'Fang' => '坊芳方肪房防妨仿访纺放邡枋钫舫鲂',
|
798 |
+
'Fei' => '菲非啡飞肥匪诽吠肺废沸费芾狒悱淝妃绯榧腓斐扉砩镄痱蜚篚翡霏鲱',
|
799 |
+
'Fen' => '芬酚吩氛分纷坟焚汾粉奋份忿愤粪偾瀵棼鲼鼢',
|
800 |
+
'Feng' => '丰封枫蜂峰锋风疯烽逢冯缝讽奉凤俸酆葑唪沣砜',
|
801 |
+
'Fo' => '佛',
|
802 |
+
'Fou' => '否缶',
|
803 |
+
'Fu' => '夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐匐凫郛芙苻茯莩菔拊呋呒幞怫滏艴孚驸绂绋桴赙祓黻黼罘稃馥蚨蜉蝠蝮麸趺跗鲋鳆',
|
804 |
+
'Ga' => '噶嘎垓尬尕尜旮钆',
|
805 |
+
'Gai' => '该改概钙盖溉丐陔戤赅',
|
806 |
+
'Gan' => '干甘杆柑竿肝赶感秆敢赣坩苷尴擀泔淦澉绀橄旰矸疳酐',
|
807 |
+
'Gang' => '冈刚钢缸肛纲岗港杠戆罡筻',
|
808 |
+
'Gao' => '篙皋高膏羔糕搞镐稿告睾诰郜藁缟槔槁杲锆',
|
809 |
+
'Ge' => '哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各咯鬲仡哿圪塥嗝纥搿膈硌镉袼虼舸骼',
|
810 |
+
'Gei' => '给',
|
811 |
+
'Gen' => '根跟亘茛哏艮',
|
812 |
+
'Geng' => '耕更庚羹埂耿梗哽赓绠鲠',
|
813 |
+
'Gong' => '工攻功恭龚供躬公宫弓巩汞拱贡共珙肱蚣觥',
|
814 |
+
'Gou' => '钩勾沟苟狗垢构购够佝诟岣遘媾缑枸觏彀笱篝鞲',
|
815 |
+
'Gu' => '辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇嘏诂菰崮汩梏轱牯牿臌毂瞽罟钴锢鸪痼蛄酤觚鲴',
|
816 |
+
'Gua' => '刮瓜剐寡挂褂卦诖呱栝胍鸹',
|
817 |
+
'Guai' => '乖拐怪',
|
818 |
+
'Guan' => '棺关官冠观管馆罐惯灌贯倌莞掼涫盥鹳鳏',
|
819 |
+
'Guang' => '光广逛咣犷桄胱',
|
820 |
+
'Gui' => '瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽匦刿庋宄妫炅晷皈簋鲑鳜',
|
821 |
+
'Gun' => '辊滚棍衮绲磙鲧',
|
822 |
+
'Guo' => '锅郭国果裹过馘埚掴呙帼崞猓椁虢聒蜾蝈',
|
823 |
+
'Ha' => '哈铪',
|
824 |
+
'Hai' => '骸孩海氦亥害骇嗨胲醢',
|
825 |
+
'Han' => '酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉邗菡撖犴阚瀚晗焓顸颔蚶鼾',
|
826 |
+
'Hang' => '夯杭航沆绗颃',
|
827 |
+
'Hao' => '壕嚎豪毫郝好耗号浩蒿薅嗥嚆濠灏昊皓颢蚝',
|
828 |
+
'He' => '呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺诃劾壑嗬阖曷盍颌蚵翮',
|
829 |
+
'Hei' => '嘿黑',
|
830 |
+
'Hen' => '痕很狠恨',
|
831 |
+
'Heng' => '哼亨横衡恒蘅珩桁',
|
832 |
+
'Hong' => '轰哄烘虹鸿洪宏弘红黉訇讧荭蕻薨闳泓',
|
833 |
+
'Hou' => '喉侯猴吼厚候后堠後逅瘊篌糇鲎骺',
|
834 |
+
'Hu' => '呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户冱唿囫岵猢怙惚浒滹琥槲轷觳烀煳戽扈祜瓠鹄鹕鹱笏醐斛鹘',
|
835 |
+
'Hua' => '花哗华猾滑画划化话骅桦砉铧',
|
836 |
+
'Huai' => '槐徊怀淮坏踝',
|
837 |
+
'Huan' => '欢环桓还缓换患唤痪豢焕涣宦幻奂擐獾洹浣漶寰逭缳锾鲩鬟',
|
838 |
+
'Huang' => '荒慌黄磺蝗簧皇凰惶煌晃幌恍谎隍徨湟潢遑璜肓癀蟥篁鳇',
|
839 |
+
'Hui' => '灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘诙茴荟蕙咴喙隳洄彗缋桧晖恚虺蟪麾',
|
840 |
+
'Hun' => '荤昏婚魂浑混诨馄阍溷珲',
|
841 |
+
'Huo' => '豁活伙火获或惑霍货祸劐藿攉嚯夥钬锪镬耠蠖',
|
842 |
+
'Ji' => '击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪藉亟乩剞佶偈墼芨芰荠蒺蕺掎叽咭哜唧岌嵴洎屐骥畿玑楫殛戟戢赍觊犄齑矶羁嵇稷瘠虮笈笄暨跻跽霁鲚鲫髻麂',
|
843 |
+
'Jia' => '嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁伽郏葭岬浃迦珈戛胛恝铗镓痂瘕蛱笳袈跏',
|
844 |
+
'Jian' => '歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僭谏谫菅蒹搛湔蹇謇缣枧楗戋戬牮犍毽腱睑锏鹣裥笕翦踺鲣鞯',
|
845 |
+
'Jiang' => '僵姜将浆江疆蒋桨奖讲匠酱降茳洚绛缰犟礓耩糨豇',
|
846 |
+
'Jiao' => '蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖佼僬艽茭挢噍徼姣敫皎鹪蛟醮跤鲛',
|
847 |
+
'Jie' => '揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒芥界借介疥诫届讦诘拮喈嗟婕孑桀碣疖颉蚧羯鲒骱',
|
848 |
+
'Jin' => '巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲卺荩堇噤馑廑妗缙瑾槿赆觐衿矜',
|
849 |
+
'Jing' => '荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净刭儆阱菁獍憬泾迳弪婧肼胫腈旌箐',
|
850 |
+
'Jiong' => '炯窘迥扃',
|
851 |
+
'Jiu' => '揪究纠玖韭久灸九酒厩救旧臼舅咎就疚僦啾阄柩桕鸠鹫赳鬏',
|
852 |
+
'Ju' => '鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧倨讵苣苴莒掬遽屦琚椐榘榉橘犋飓钜锔窭裾醵踽龃雎鞫',
|
853 |
+
'Juan' => '捐鹃娟倦眷卷绢鄄狷涓桊蠲锩镌隽',
|
854 |
+
'Jue' => '撅攫抉掘倔爵觉决诀绝厥劂谲矍蕨噘崛獗孓珏桷橛爝镢蹶觖',
|
855 |
+
'Jun' => '均菌钧军君峻俊竣浚郡骏捃皲',
|
856 |
+
'Ka' => '喀咖卡佧咔胩',
|
857 |
+
'Kai' => '开揩楷凯慨剀垲蒈忾恺铠锎锴',
|
858 |
+
'Kan' => '刊堪勘坎砍看侃莰戡龛瞰',
|
859 |
+
'Kang' => '康慷糠扛抗亢炕伉闶钪',
|
860 |
+
'Kao' => '考拷烤靠尻栲犒铐',
|
861 |
+
'Ke' => '坷苛柯棵磕颗科壳咳可渴克刻客课嗑岢恪溘骒缂珂轲氪瞌钶锞稞疴窠颏蝌髁',
|
862 |
+
'Ken' => '肯啃垦恳裉',
|
863 |
+
'Keng' => '坑吭铿',
|
864 |
+
'Kong' => '空恐孔控倥崆箜',
|
865 |
+
'Kou' => '抠口扣寇芤蔻叩囗眍筘',
|
866 |
+
'Ku' => '枯哭窟苦酷库裤刳堀喾绔骷',
|
867 |
+
'Kua' => '夸垮挎跨胯侉',
|
868 |
+
'Kuai' => '块筷侩快蒯郐哙狯浍脍',
|
869 |
+
'Kuan' => '宽款髋',
|
870 |
+
'Kuang' => '匡筐狂框矿眶旷况诓诳邝圹夼哐纩贶',
|
871 |
+
'Kui' => '亏盔岿窥葵奎魁傀馈愧溃馗匮夔隗蒉揆喹喟悝愦逵暌睽聩蝰篑跬',
|
872 |
+
'Kun' => '坤昆捆困悃阃琨锟醌鲲髡',
|
873 |
+
'Kuo' => '括扩廓阔蛞',
|
874 |
+
'La' => '垃拉喇蜡腊辣啦剌邋旯砬瘌',
|
875 |
+
'Lai' => '莱来赖崃徕涞濑赉睐铼癞籁',
|
876 |
+
'Lan' => '蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥岚漤榄斓罱镧褴',
|
877 |
+
'Lang' => '琅榔狼廊郎朗浪蒗啷阆稂螂',
|
878 |
+
'Lao' => '捞劳牢老佬姥酪烙涝唠崂忉栳铑铹痨耢醪',
|
879 |
+
'Le' => '勒乐了仂叻泐鳓',
|
880 |
+
'Lei' => '雷镭蕾磊累儡垒擂肋类泪羸诔嘞嫘缧檑耒酹',
|
881 |
+
'Leng' => '棱楞冷塄愣',
|
882 |
+
'Li' => '厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俪俚郦坜苈莅蓠藜呖唳喱猁溧澧逦娌嫠骊缡枥栎轹膦戾砺詈罹锂鹂疠疬蛎蜊蠡笠篥粝醴跞雳鲡鳢黧',
|
883 |
+
'Lian' => '联莲连镰廉怜涟帘敛脸链恋炼练蔹奁潋濂琏楝殓臁裢裣蠊鲢',
|
884 |
+
'Liang' => '俩粮凉梁粱良两辆量晾亮谅墚莨椋锒踉靓魉',
|
885 |
+
'Liao' => '撩聊僚疗燎寥辽潦撂镣廖料蓼尥嘹獠寮缭钌鹩',
|
886 |
+
'Lie' => '列裂烈劣猎冽埒捩咧洌趔躐鬣',
|
887 |
+
'Lin' => '琳林磷霖临邻鳞淋凛赁吝拎蔺啉嶙廪懔遴檩辚瞵粼躏麟',
|
888 |
+
'Ling' => '玲菱零龄铃伶羚凌灵陵岭领另令酃苓呤囹泠绫柃棂瓴聆蛉翎鲮',
|
889 |
+
'Liu' => '溜琉榴硫馏留刘瘤流柳六浏遛骝绺旒熘锍镏鹨鎏',
|
890 |
+
'Long' => '龙聋咙笼窿隆垄拢陇垅茏泷珑栊胧砻癃',
|
891 |
+
'Lou' => '楼娄搂篓漏陋偻蒌喽嵝镂瘘耧蝼髅',
|
892 |
+
'Lu' => '芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮垆撸噜泸渌漉逯璐栌橹轳辂辘氇胪镥鸬鹭簏舻鲈',
|
893 |
+
'Luan' => '峦挛孪滦卵乱脔娈栾鸾銮',
|
894 |
+
'Lue' => '掠略锊',
|
895 |
+
'Lun' => '抡轮伦仑沦纶论囵',
|
896 |
+
'Luo' => '萝螺罗逻锣箩骡裸落洛骆络倮蠃荦摞猡泺漯珞椤脶镙瘰雒',
|
897 |
+
'Lv' => '驴吕铝侣旅履屡缕虑氯律滤绿捋闾榈膂稆褛',
|
898 |
+
'Ma' => '妈麻玛码蚂马骂嘛吗唛犸杩蟆',
|
899 |
+
'Mai' => '埋买麦卖迈脉劢荬霾',
|
900 |
+
'Man' => '瞒馒蛮满蔓曼慢漫谩墁幔缦熳镘颟螨鳗鞔',
|
901 |
+
'Mang' => '芒茫盲氓忙莽邙漭硭蟒',
|
902 |
+
'Mao' => '猫茅锚毛矛铆卯茂冒帽貌贸袤茆峁泖瑁昴牦耄旄懋瞀蝥蟊髦',
|
903 |
+
'Me' => '么麽',
|
904 |
+
'Mei' => '玫枚梅酶霉煤没眉媒镁每美昧寐妹媚莓嵋猸浼湄楣镅鹛袂魅',
|
905 |
+
'Men' => '门闷们扪焖懑钔',
|
906 |
+
'Meng' => '萌蒙檬盟锰猛梦孟勐甍瞢懵朦礞虻蜢蠓艋艨',
|
907 |
+
'Mi' => '眯醚靡糜迷谜弥米秘觅泌蜜密幂芈谧咪嘧猕汨宓弭脒祢敉縻麋',
|
908 |
+
'Mian' => '棉眠绵冕免勉娩缅面沔渑湎腼眄',
|
909 |
+
'Miao' => '苗描瞄藐秒渺庙妙喵邈缈杪淼眇鹋',
|
910 |
+
'Mie' => '蔑灭乜咩蠛篾',
|
911 |
+
'Min' => '民抿皿敏悯闽苠岷闵泯缗玟珉愍黾鳘',
|
912 |
+
'Ming' => '明螟鸣铭名命冥茗溟暝瞑酩',
|
913 |
+
'Miu' => '谬缪',
|
914 |
+
'Mo' => '摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谟茉蓦馍嫫嬷殁镆秣瘼耱貊貘',
|
915 |
+
'Mou' => '谋牟某侔哞眸蛑鍪',
|
916 |
+
'Mu' => '拇牡亩姆母墓暮幕募慕木目睦牧穆仫坶苜沐毪钼',
|
917 |
+
'Na' => '拿哪呐钠那娜纳讷捺肭镎衲',
|
918 |
+
'Nai' => '氖乃奶耐奈鼐佴艿萘柰',
|
919 |
+
'Nan' => '南男难喃囝囡楠腩蝻赧',
|
920 |
+
'Nang' => '囊攮囔馕曩',
|
921 |
+
'Nao' => '挠脑恼闹淖孬垴呶猱瑙硇铙蛲',
|
922 |
+
'Ne' => '呢',
|
923 |
+
'Nei' => '馁内',
|
924 |
+
'Nen' => '嫩恁',
|
925 |
+
'Neng' => '能',
|
926 |
+
'Ni' => '妮霓倪泥尼拟你匿腻逆溺伲坭蘼猊怩昵旎睨铌鲵',
|
927 |
+
'Nian' => '蔫拈年碾撵捻念廿埝辇黏鲇鲶',
|
928 |
+
'Niang' => '娘酿',
|
929 |
+
'Niao' => '鸟尿茑嬲脲袅',
|
930 |
+
'Nie' => '捏聂孽啮镊镍涅陧蘖嗫颞臬蹑',
|
931 |
+
'Nin' => '您',
|
932 |
+
'Ning' => '柠狞凝宁拧泞佞咛甯聍',
|
933 |
+
'Niu' => '牛扭钮纽狃忸妞',
|
934 |
+
'Nong' => '脓浓农弄侬哝',
|
935 |
+
'Nou' => '耨',
|
936 |
+
'Nu' => '奴努怒弩胬孥驽',
|
937 |
+
'Nuan' => '暖',
|
938 |
+
'Nue' => '虐疟挪',
|
939 |
+
'Nuo' => '懦糯诺傩搦喏锘',
|
940 |
+
'Nv' => '女恧钕衄',
|
941 |
+
'O' => '哦噢',
|
942 |
+
'Ou' => '欧鸥殴藕呕偶沤讴怄瓯耦',
|
943 |
+
'Pa' => '耙啪趴爬帕怕琶葩杷筢',
|
944 |
+
'Pai' => '拍排牌徘湃派俳蒎哌',
|
945 |
+
'Pan' => '攀潘盘磐盼畔判叛拚爿泮袢襻蟠蹒',
|
946 |
+
'Pang' => '乓庞旁耪胖彷滂逄螃',
|
947 |
+
'Pao' => '抛咆刨炮袍跑泡匏狍庖脬疱',
|
948 |
+
'Pei' => '呸胚培裴赔陪配佩沛辔帔旆锫醅霈',
|
949 |
+
'Pen' => '喷盆湓',
|
950 |
+
'Peng' => '砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰堋嘭怦蟛',
|
951 |
+
'Pi' => '辟坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬丕仳陴邳郫圮埤鼙芘擗噼庀淠媲纰枇甓罴铍癖疋蚍蜱貔',
|
952 |
+
'Pian' => '篇偏片骗谝骈犏胼翩蹁',
|
953 |
+
'Piao' => '飘漂瓢票剽嘌嫖缥殍瞟螵',
|
954 |
+
'Pie' => '撇瞥丿苤氕',
|
955 |
+
'Pin' => '拼频贫品聘姘嫔榀牝颦',
|
956 |
+
'Ping' => '乒坪苹萍平凭瓶评屏俜娉枰鲆',
|
957 |
+
'Po' => '坡泼颇婆破魄迫粕叵鄱珀钋钷皤笸',
|
958 |
+
'Pou' => '剖裒掊',
|
959 |
+
'Pu' => '扑铺仆莆葡菩蒲埔朴圃普浦谱瀑匍噗溥濮璞氆镤镨蹼',
|
960 |
+
'Qi' => '期欺戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫亓圻芑芪萁萋葺蕲嘁屺岐汔淇骐绮琪琦杞桤槭耆祺憩碛颀蛴蜞綦鳍麒',
|
961 |
+
'Qia' => '掐恰洽葜袷髂',
|
962 |
+
'Qian' => '牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉倩佥阡芊芡掮岍悭慊骞搴褰缱椠肷愆钤虔箝',
|
963 |
+
'Qiang' => '枪呛腔羌墙蔷强抢戕嫱樯戗炝锖锵镪襁蜣羟跄',
|
964 |
+
'Qiao' => '橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍劁诮谯荞峤愀憔缲樵硗跷鞒',
|
965 |
+
'Qie' => '切茄且怯窃郄惬妾挈锲箧趄',
|
966 |
+
'Qin' => '钦侵亲秦琴勤芹擒禽寝沁芩揿吣嗪噙溱檎锓螓衾',
|
967 |
+
'Qing' => '青轻氢倾卿清擎晴氰情顷请庆苘圊檠磬蜻罄綮謦鲭黥',
|
968 |
+
'Qiong' => '琼穷邛茕穹蛩筇跫銎',
|
969 |
+
'Qiu' => '秋丘邱球求囚酋泅俅巯犰湫逑遒楸赇虬蚯蝤裘糗鳅鼽',
|
970 |
+
'Qu' => '趋区蛆曲躯屈驱渠取娶龋趣去诎劬蕖蘧岖衢阒璩觑氍朐祛磲鸲癯蛐蠼麴瞿黢',
|
971 |
+
'Quan' => '圈颧权醛泉全痊拳犬券劝诠荃犭悛绻辁畎铨蜷筌鬈',
|
972 |
+
'Que' => '缺炔瘸却鹊榷确雀阕阙悫',
|
973 |
+
'Qun' => '裙群逡麇',
|
974 |
+
'Ran' => '然燃冉染苒蚺髯',
|
975 |
+
'Rang' => '瓤壤攘嚷让禳穰',
|
976 |
+
'Rao' => '饶扰绕荛娆桡',
|
977 |
+
'Re' => '惹热',
|
978 |
+
'Ren' => '壬仁人忍韧任认刃妊纫仞荏饪轫稔衽',
|
979 |
+
'Reng' => '扔仍',
|
980 |
+
'Ri' => '日',
|
981 |
+
'Rong' => '戎茸蓉荣融熔溶容绒冗嵘狨榕肜蝾',
|
982 |
+
'Rou' => '揉柔肉糅蹂鞣',
|
983 |
+
'Ru' => '茹蠕儒孺如辱乳汝入褥蓐薷嚅洳溽濡缛铷襦颥',
|
984 |
+
'Ruan' => '软阮朊',
|
985 |
+
'Rui' => '蕊瑞锐芮蕤枘睿蚋',
|
986 |
+
'Run' => '闰润',
|
987 |
+
'Ruo' => '若弱偌箬',
|
988 |
+
'Sa' => '撒洒萨卅挲脎飒',
|
989 |
+
'Sai' => '腮鳃塞赛噻',
|
990 |
+
'San' => '三叁伞散仨彡馓毵',
|
991 |
+
'Sang' => '桑嗓丧搡磉颡',
|
992 |
+
'Sao' => '搔骚扫嫂埽缫臊瘙鳋',
|
993 |
+
'Se' => '瑟色涩啬铯穑',
|
994 |
+
'Sen' => '森',
|
995 |
+
'Seng' => '僧',
|
996 |
+
'Sha' => '莎砂杀刹沙纱傻啥煞唼歃铩痧裟霎鲨',
|
997 |
+
'Shai' => '筛晒酾',
|
998 |
+
'Shan' => '珊苫杉山删煽衫闪陕擅赡膳善汕扇缮栅讪鄯芟潸姗嬗骟膻钐疝蟮舢跚鳝',
|
999 |
+
'Shang' => '墒伤商赏晌上尚裳垧绱殇熵觞',
|
1000 |
+
'Shao' => '梢捎稍烧芍勺韶少哨邵绍劭潲杓蛸筲艄',
|
1001 |
+
'She' => '奢赊蛇舌舍赦摄射慑涉社设厍佘猞滠畲麝',
|
1002 |
+
'Shen' => '砷申呻伸身深娠绅神沈审婶甚肾慎渗什诜谂莘葚哂渖胂矧蜃糁',
|
1003 |
+
'Sheng' => '声生甥牲升绳省盛剩胜圣嵊晟眚笙',
|
1004 |
+
'Shi' => '匙师失狮施湿诗尸虱十石拾时食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试谥埘莳蓍弑轼贳炻礻铈舐筮豕鲥鲺',
|
1005 |
+
'Shou' => '收手首守寿授售受瘦兽狩绶艏',
|
1006 |
+
'Shu' => '蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕丨倏塾菽摅沭澍姝纾毹腧殳秫',
|
1007 |
+
'Shua' => '刷耍唰',
|
1008 |
+
'Shuai' => '率摔衰甩帅蟀',
|
1009 |
+
'Shuan' => '栓拴闩涮',
|
1010 |
+
'Shuang' => '霜双爽孀',
|
1011 |
+
'Shui' => '谁水睡税',
|
1012 |
+
'Shun' => '吮瞬顺舜',
|
1013 |
+
'Shuo' => '说硕朔烁蒴搠妁槊铄',
|
1014 |
+
'Si' => '斯撕嘶思私司丝死肆寺嗣四伺似饲巳厮俟兕厶咝汜泗澌姒驷缌祀锶鸶耜蛳笥',
|
1015 |
+
'Song' => '松耸怂颂送宋讼诵凇菘崧嵩忪悚淞竦',
|
1016 |
+
'Sou' => '搜艘擞嗽叟薮嗖嗾馊溲飕瞍锼螋',
|
1017 |
+
'Su' => '苏酥俗素速粟僳塑溯宿诉肃夙谡蔌嗉愫涑簌觫稣',
|
1018 |
+
'Suan' => '酸蒜算狻',
|
1019 |
+
'Sui' => '虽隋随绥髓碎岁穗遂隧祟谇荽濉邃燧眭睢',
|
1020 |
+
'Sun' => '孙损笋荪狲飧榫隼',
|
1021 |
+
'Suo' => '蓑梭唆缩琐索锁所唢嗦嗍娑桫睃羧',
|
1022 |
+
'Ta' => '塌他它她塔獭挞蹋踏闼溻遢榻铊趿鳎',
|
1023 |
+
'Tai' => '胎苔抬台泰酞太态汰邰薹骀肽炱钛跆鲐',
|
1024 |
+
'Tan' => '坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭郯昙忐钽锬覃',
|
1025 |
+
'Tang' => '汤塘搪堂棠膛唐糖倘躺淌趟烫傥帑惝溏瑭樘铴镗耥螗螳羰醣',
|
1026 |
+
'Tao' => '掏涛滔绦萄桃逃淘陶讨套鼗啕洮韬饕',
|
1027 |
+
'Te' => '特忒忑慝铽',
|
1028 |
+
'Teng' => '藤腾疼誊滕',
|
1029 |
+
'Ti' => '梯剔踢锑提题蹄啼体替嚏惕涕剃屉倜悌逖绨缇鹈醍',
|
1030 |
+
'Tian' => '天添填田甜恬舔腆掭忝阗殄畋',
|
1031 |
+
'Tiao' => '挑条迢眺跳佻苕祧窕蜩笤粜龆鲦髫',
|
1032 |
+
'Tie' => '贴铁帖萜餮',
|
1033 |
+
'Ting' => '厅听烃汀廷停亭庭挺艇莛葶婷梃铤蜓霆',
|
1034 |
+
'Tong' => '通桐酮瞳同铜彤童桶捅筒统痛佟仝茼嗵恸潼砼',
|
1035 |
+
'Tou' => '偷投头透骰',
|
1036 |
+
'Tu' => '凸秃突图徒途涂屠土吐兔堍荼菟钍酴',
|
1037 |
+
'Tuan' => '湍团抟彖疃',
|
1038 |
+
'Tui' => '推颓腿蜕褪退煺',
|
1039 |
+
'Tun' => '囤吞屯臀氽饨暾豚',
|
1040 |
+
'Tuo' => '拖托脱鸵陀驮驼椭妥拓唾佗坨庹沱柝柁橐砣箨酡跎鼍',
|
1041 |
+
'Wa' => '挖哇蛙洼娃瓦袜佤娲腽',
|
1042 |
+
'Wai' => '歪外崴',
|
1043 |
+
'Wan' => '豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕剜芄菀纨绾琬脘畹蜿',
|
1044 |
+
'Wang' => '汪王亡枉网往旺望忘妄罔惘辋魍',
|
1045 |
+
'Wei' => '威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫偎诿隈圩葳薇帏帷嵬猥猬闱沩洧涠逶娓玮韪軎炜煨痿艉鲔',
|
1046 |
+
'Wen' => '瘟温蚊文闻纹吻稳紊问刎夂阌汶璺攵雯',
|
1047 |
+
'Weng' => '嗡翁瓮蓊蕹',
|
1048 |
+
'Wo' => '挝蜗涡窝我斡卧握沃倭莴喔幄渥肟硪龌',
|
1049 |
+
'Wu' => '巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误兀仵阢邬圬芴唔庑怃忤寤迕妩婺骛杌牾焐鹉鹜痦蜈鋈鼯',
|
1050 |
+
'Xi' => '栖昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细僖兮隰郗茜菥葸蓰奚唏徙饩阋浠淅屣嬉玺樨曦觋欷歙熹禊禧皙穸裼蜥螅蟋舄舾羲粞翕醯蹊鼷',
|
1051 |
+
'Xia' => '瞎虾匣霞辖暇峡侠狭下厦夏吓呷狎遐瑕柙硖罅黠',
|
1052 |
+
'Xian' => '掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线冼苋莶藓岘猃暹娴氙燹祆鹇痫蚬筅籼酰跣跹霰',
|
1053 |
+
'Xiang' => '相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象芗葙饷庠骧缃蟓鲞飨',
|
1054 |
+
'Xiao' => '萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效哓崤潇逍骁绡枭枵筱箫魈',
|
1055 |
+
'Xie' => '楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑偕亵勰燮薤撷獬廨渫瀣邂绁缬榭榍蹀躞',
|
1056 |
+
'Xin' => '薪芯锌欣辛新忻心信衅囟馨昕歆镡鑫',
|
1057 |
+
'Xing' => '星腥猩惺兴刑型形邢行醒幸杏性姓陉荇荥擤饧悻硎',
|
1058 |
+
'Xiong' => '兄凶胸匈汹雄熊芎',
|
1059 |
+
'Xiu' => '休修羞朽嗅锈秀袖绣咻岫馐庥溴鸺貅髹',
|
1060 |
+
'Xu' => '墟戌需虚嘘须徐许蓄酗叙旭序恤絮婿绪续吁诩勖蓿洫溆顼栩煦盱胥糈醑',
|
1061 |
+
'Xuan' => '轩喧宣悬旋玄选癣眩绚儇谖萱揎泫渲漩璇楦暄炫煊碹铉镟痃',
|
1062 |
+
'Xue' => '靴薛学穴雪血谑噱泶踅鳕',
|
1063 |
+
'Xun' => '勋熏循旬询寻驯巡殉汛训讯逊迅巽郇埙荀荨蕈薰峋徇獯恂洵浔曛醺鲟',
|
1064 |
+
'Ya' => '压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶伢垭揠岈迓娅琊桠氩砑睚痖',
|
1065 |
+
'Yan' => '焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验厣赝剡俨偃兖谳郾鄢埏菸崦恹闫阏湮滟妍嫣琰檐晏胭腌焱罨筵酽趼魇餍鼹',
|
1066 |
+
'Yang' => '殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾徉怏泱炀烊恙蛘鞅',
|
1067 |
+
'Yao' => '邀腰妖瑶摇尧遥窑谣姚咬舀药要耀钥夭爻吆崾徭幺珧杳轺曜肴铫鹞窈繇鳐',
|
1068 |
+
'Ye' => '椰噎耶爷野冶也页掖业叶曳腋夜液靥谒邺揶晔烨铘',
|
1069 |
+
'Yi' => '一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎刈劓佚佾诒圯埸懿苡荑薏弈奕挹弋呓咦咿嗌噫峄嶷猗饴怿怡悒漪迤驿缢殪轶贻欹旖熠眙钇镒镱痍瘗癔翊蜴舣羿翳酏黟',
|
1070 |
+
'Yin' => '茵荫因殷音阴姻吟银淫寅饮尹引隐印胤鄞垠堙茚吲喑狺夤洇氤铟瘾窨蚓霪龈',
|
1071 |
+
'Ying' => '英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映嬴郢茔莺萦蓥撄嘤膺滢潆瀛瑛璎楹媵鹦瘿颍罂',
|
1072 |
+
'Yo' => '哟唷',
|
1073 |
+
'Yong' => '拥佣臃痈庸雍踊蛹咏泳涌永恿勇用俑壅墉喁慵邕镛甬鳙饔',
|
1074 |
+
'You' => '幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼卣攸侑莠莜莸尢呦囿宥柚猷牖铕疣蚰蚴蝣鱿黝鼬',
|
1075 |
+
'Yu' => '迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁遇喻峪御愈欲狱育誉浴寓裕预豫驭禺毓伛俣谀谕萸蓣揄圄圉嵛狳饫馀庾阈鬻妪妤纡瑜昱觎腴欤於煜燠聿钰鹆鹬瘐瘀窬窳蜮蝓竽臾舁雩龉',
|
1076 |
+
'Yuan' => '鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院垸塬芫掾圜沅媛瑗橼爰眢鸢螈箢鼋',
|
1077 |
+
'Yue' => '曰约越跃岳粤月悦阅龠哕瀹樾刖钺',
|
1078 |
+
'Yun' => '耘云郧匀陨允运蕴酝晕韵孕郓芸狁恽愠纭韫殒昀氲熨筠',
|
1079 |
+
'Za' => '匝砸杂咋拶咂',
|
1080 |
+
'Zai' => '栽哉灾宰载再在崽甾',
|
1081 |
+
'Zan' => '咱攒暂赞瓒昝簪糌趱錾',
|
1082 |
+
'Zang' => '赃脏葬奘驵臧',
|
1083 |
+
'Zao' => '遭糟凿藻枣早澡蚤躁噪造皂灶燥唣',
|
1084 |
+
'Ze' => '责择则泽仄赜啧帻迮昃笮箦舴',
|
1085 |
+
'Zei' => '贼',
|
1086 |
+
'Zen' => '怎谮',
|
1087 |
+
'Zeng' => '增憎赠缯甑罾锃',
|
1088 |
+
'Zha' => '扎喳渣札轧铡闸眨榨乍炸诈柞揸吒咤哳楂砟痄蚱齄',
|
1089 |
+
'Zhai' => '摘斋宅窄债寨砦瘵',
|
1090 |
+
'Zhan' => '瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽谵搌旃',
|
1091 |
+
'Zhang' => '樟章彰漳张掌涨杖丈帐账仗胀瘴障仉鄣幛嶂獐嫜璋蟑',
|
1092 |
+
'Zhao' => '招昭找沼赵照罩兆肇召诏棹钊笊',
|
1093 |
+
'Zhe' => '遮折哲蛰辙者锗蔗这浙着乇谪摺柘辄磔鹧褶蜇螫赭',
|
1094 |
+
'Zhen' => '珍斟真甄砧臻贞针侦枕疹诊震振镇阵帧圳蓁浈缜桢椹榛轸赈胗朕祯畛稹鸩箴',
|
1095 |
+
'Zheng' => '蒸挣睁征狰争怔整拯正政症郑证诤峥徵钲铮筝',
|
1096 |
+
'Zhi' => '芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒卮陟郅埴芷摭帙忮彘咫骘栉枳栀桎轵轾贽胝膣祉黹雉鸷痣蛭絷酯跖踬踯豸觯',
|
1097 |
+
'Zhong' => '中盅忠钟衷终种肿重仲众冢锺螽舯踵',
|
1098 |
+
'Zhou' => '舟周州洲诌粥轴肘帚咒皱宙昼骤荮啁妯纣绉胄碡籀酎',
|
1099 |
+
'Zhu' => '珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻伫侏邾苎茱洙渚潴杼槠橥炷铢疰瘃竺箸舳翥躅麈',
|
1100 |
+
'Zhua' => '抓爪',
|
1101 |
+
'Zhuai' => '拽',
|
1102 |
+
'Zhuan' => '专砖转撰赚篆啭馔颛',
|
1103 |
+
'Zhuang' => '幢桩庄装妆撞壮状僮',
|
1104 |
+
'Zhui' => '椎锥追赘坠缀萑惴骓缒隹',
|
1105 |
+
'Zhun' => '谆准肫窀',
|
1106 |
+
'Zhuo' => '捉拙卓桌琢茁酌啄灼浊倬诼擢浞涿濯禚斫镯',
|
1107 |
+
'Zi' => '兹咨资姿滋淄孜紫仔籽滓子自渍字谘呲嵫姊孳缁梓辎赀恣眦锱秭耔笫粢趑訾龇鲻髭',
|
1108 |
+
'Zong' => '鬃棕踪宗综总纵偬腙粽',
|
1109 |
+
'Zou' => '邹走奏揍诹陬鄹驺鲰',
|
1110 |
+
'Zu' => '租足卒族祖诅阻组俎菹镞',
|
1111 |
+
'Zuan' => '钻纂攥缵躜',
|
1112 |
+
'Zui' => '嘴醉最罪蕞觜',
|
1113 |
+
'Zun' => '尊遵撙樽鳟',
|
1114 |
+
'Zuo' => '昨左佐做作坐座阼唑嘬怍胙祚酢',
|
1115 |
+
];
|
1116 |
+
break;
|
1117 |
+
case 'iso9':
|
1118 |
+
default:
|
1119 |
+
$table = [
|
1120 |
+
'А' => 'A',
|
1121 |
+
'Б' => 'B',
|
1122 |
+
'В' => 'V',
|
1123 |
+
'Г' => 'G',
|
1124 |
+
'Д' => 'D',
|
1125 |
+
'Е' => 'E',
|
1126 |
+
'Ё' => 'YO',
|
1127 |
+
'Ж' => 'ZH',
|
1128 |
+
'З' => 'Z',
|
1129 |
+
'И' => 'I',
|
1130 |
+
'Й' => 'J',
|
1131 |
+
'К' => 'K',
|
1132 |
+
'Л' => 'L',
|
1133 |
+
'М' => 'M',
|
1134 |
+
'Н' => 'N',
|
1135 |
+
'О' => 'O',
|
1136 |
+
'П' => 'P',
|
1137 |
+
'Р' => 'R',
|
1138 |
+
'С' => 'S',
|
1139 |
+
'Т' => 'T',
|
1140 |
+
'У' => 'U',
|
1141 |
+
'Ф' => 'F',
|
1142 |
+
'Х' => 'H',
|
1143 |
+
'Ц' => 'CZ',
|
1144 |
+
'Ч' => 'CH',
|
1145 |
+
'Ш' => 'SH',
|
1146 |
+
'Щ' => 'SHH',
|
1147 |
+
'Ъ' => '',
|
1148 |
+
'Ы' => 'Y',
|
1149 |
+
'Ь' => '',
|
1150 |
+
'Э' => 'E',
|
1151 |
+
'Ю' => 'YU',
|
1152 |
+
'Я' => 'YA',
|
1153 |
+
'а' => 'a',
|
1154 |
+
'б' => 'b',
|
1155 |
+
'в' => 'v',
|
1156 |
+
'г' => 'g',
|
1157 |
+
'д' => 'd',
|
1158 |
+
'е' => 'e',
|
1159 |
+
'ё' => 'yo',
|
1160 |
+
'ж' => 'zh',
|
1161 |
+
'з' => 'z',
|
1162 |
+
'и' => 'i',
|
1163 |
+
'й' => 'j',
|
1164 |
+
'к' => 'k',
|
1165 |
+
'л' => 'l',
|
1166 |
+
'м' => 'm',
|
1167 |
+
'н' => 'n',
|
1168 |
+
'о' => 'o',
|
1169 |
+
'п' => 'p',
|
1170 |
+
'р' => 'r',
|
1171 |
+
'с' => 's',
|
1172 |
+
'т' => 't',
|
1173 |
+
'у' => 'u',
|
1174 |
+
'ф' => 'f',
|
1175 |
+
'х' => 'h',
|
1176 |
+
'ц' => 'cz',
|
1177 |
+
'ч' => 'ch',
|
1178 |
+
'ш' => 'sh',
|
1179 |
+
'щ' => 'shh',
|
1180 |
+
'ъ' => '',
|
1181 |
+
'ы' => 'y',
|
1182 |
+
'ь' => '',
|
1183 |
+
'э' => 'e',
|
1184 |
+
'ю' => 'yu',
|
1185 |
+
'я' => 'ya',
|
1186 |
+
'І' => 'I',
|
1187 |
+
'і' => 'i',
|
1188 |
+
'Ѣ' => 'YE',
|
1189 |
+
'ѣ' => 'ye',
|
1190 |
+
'Ѳ' => 'FH',
|
1191 |
+
'ѳ' => 'fh',
|
1192 |
+
'Ѵ' => 'YH',
|
1193 |
+
'ѵ' => 'yh',
|
1194 |
+
];
|
1195 |
+
}
|
1196 |
+
|
1197 |
+
return $table;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
/**
|
1201 |
+
* Get fix table for MacOS.
|
1202 |
+
* On MacOS, files containing characters in the table, are sometimes encoded improperly.
|
1203 |
+
*
|
1204 |
+
* @return array
|
1205 |
+
*/
|
1206 |
+
public static function get_fix_table_for_mac() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
1207 |
+
/**
|
1208 |
+
* Keys in the table are standard ISO9 characters.
|
1209 |
+
*
|
1210 |
+
* Example of wrong encoding on Mac:
|
1211 |
+
* берЁзовыЙ-белозёрский - original input,
|
1212 |
+
* берЁзовыЙ-белозёрский.png - actual filename created on Mac (ЁёЙй are already wrongly encoded),
|
1213 |
+
* ber%d0%95%cc%88zovy%d0%98%cc%86-beloz%d0%B5%cc%88rski%d0%B8%cc%86.png - urlencode() of the above,
|
1214 |
+
* berËzovyĬ-belozërskiĭ.png - actual filename passed via standard ISO9 transliteration table,
|
1215 |
+
* berE%CC%88zovyI%CC%86-beloze%CC%88rskii%CC%86.png - urlencode() of the above.
|
1216 |
+
*
|
1217 |
+
* To avoid misunderstanding, we use urldecode() here.
|
1218 |
+
*/
|
1219 |
+
return [
|
1220 |
+
'Ё' => urldecode( '%d0%95%cc%88' ),
|
1221 |
+
'ё' => urldecode( '%d0%B5%cc%88' ),
|
1222 |
+
'Й' => urldecode( '%d0%98%cc%86' ),
|
1223 |
+
'й' => urldecode( '%d0%B8%cc%86' ),
|
1224 |
+
];
|
1225 |
+
}
|
1226 |
+
}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/5c160974325c7689e4934dd71fd72c04.php
ADDED
@@ -0,0 +1,401 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Main class of the plugin.
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
use wpdb;
|
11 |
+
use Exception;
|
12 |
+
use Cyr_To_Lat\Symfony\Polyfill\Mbstring\Mbstring;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class Main
|
16 |
+
*/
|
17 |
+
class Main {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Plugin settings.
|
21 |
+
*
|
22 |
+
* @var Settings
|
23 |
+
*/
|
24 |
+
protected $settings;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Process posts instance.
|
28 |
+
*
|
29 |
+
* @var Post_Conversion_Process
|
30 |
+
*/
|
31 |
+
protected $process_all_posts;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Process terms instance.
|
35 |
+
*
|
36 |
+
* @var Term_Conversion_Process
|
37 |
+
*/
|
38 |
+
protected $process_all_terms;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Admin Notices instance.
|
42 |
+
*
|
43 |
+
* @var Admin_Notices
|
44 |
+
*/
|
45 |
+
protected $admin_notices;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Converter instance.
|
49 |
+
*
|
50 |
+
* @var Converter
|
51 |
+
*/
|
52 |
+
protected $converter;
|
53 |
+
|
54 |
+
/**
|
55 |
+
* WP_CLI instance.
|
56 |
+
*
|
57 |
+
* @var WP_CLI
|
58 |
+
*/
|
59 |
+
protected $cli;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* ACF instance.
|
63 |
+
*
|
64 |
+
* @var ACF
|
65 |
+
*/
|
66 |
+
protected $acf;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Main constructor.
|
70 |
+
*/
|
71 |
+
public function __construct() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
72 |
+
$this->settings = new Settings();
|
73 |
+
$this->process_all_posts = new Post_Conversion_Process( $this );
|
74 |
+
$this->process_all_terms = new Term_Conversion_Process( $this );
|
75 |
+
$this->admin_notices = new Admin_Notices();
|
76 |
+
$this->converter = new Converter(
|
77 |
+
$this,
|
78 |
+
$this->settings,
|
79 |
+
$this->process_all_posts,
|
80 |
+
$this->process_all_terms,
|
81 |
+
$this->admin_notices
|
82 |
+
);
|
83 |
+
|
84 |
+
if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'WP_CLI' ) && \Patchwork\Redefinitions\constant(__NAMESPACE__, 'WP_CLI' ) ) {
|
85 |
+
$this->cli = new WP_CLI( $this->converter );
|
86 |
+
}
|
87 |
+
|
88 |
+
$this->acf = new ACF( $this->settings );
|
89 |
+
|
90 |
+
$this->init();
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Init class.
|
95 |
+
*/
|
96 |
+
public function init() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
97 |
+
if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'WP_CLI' ) && \Patchwork\Redefinitions\constant(__NAMESPACE__, 'WP_CLI' ) ) {
|
98 |
+
try {
|
99 |
+
/**
|
100 |
+
* Method WP_CLI::add_command() accepts class as callable.
|
101 |
+
*
|
102 |
+
* @noinspection PhpParamsInspection
|
103 |
+
*/
|
104 |
+
\WP_CLI::add_command( 'cyr2lat', $this->cli );
|
105 |
+
} catch ( Exception $e ) {
|
106 |
+
return;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
$this->init_hooks();
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Init class hooks.
|
115 |
+
*/
|
116 |
+
public function init_hooks() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
117 |
+
add_filter( 'sanitize_title', [ $this, 'sanitize_title' ], 9, 3 );
|
118 |
+
add_filter( 'sanitize_file_name', [ $this, 'sanitize_filename' ], 10, 2 );
|
119 |
+
add_filter( 'wp_insert_post_data', [ $this, 'sanitize_post_name' ], 10, 2 );
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Sanitize title.
|
124 |
+
*
|
125 |
+
* @param string $title Sanitized title.
|
126 |
+
* @param string $raw_title The title prior to sanitization.
|
127 |
+
* @param string $context The context for which the title is being sanitized.
|
128 |
+
*
|
129 |
+
* @return string
|
130 |
+
*/
|
131 |
+
public function sanitize_title( $title, $raw_title = '', $context = '' ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
132 |
+
global $wpdb;
|
133 |
+
|
134 |
+
if ( ! $title ) {
|
135 |
+
return $title;
|
136 |
+
}
|
137 |
+
|
138 |
+
// Fixed bug with `_wp_old_slug` redirect.
|
139 |
+
if ( 'query' === $context ) {
|
140 |
+
return $title;
|
141 |
+
}
|
142 |
+
|
143 |
+
$title = urldecode( $title );
|
144 |
+
$pre = apply_filters( 'ctl_pre_sanitize_title', false, $title );
|
145 |
+
|
146 |
+
if ( false !== $pre ) {
|
147 |
+
return $pre;
|
148 |
+
}
|
149 |
+
|
150 |
+
$is_term = false;
|
151 |
+
// phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
|
152 |
+
$backtrace = debug_backtrace( ~DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS );
|
153 |
+
// phpcs:enable
|
154 |
+
foreach ( $backtrace as $backtrace_entry ) {
|
155 |
+
if ( 'wp_insert_term' === $backtrace_entry['function'] ) {
|
156 |
+
$is_term = true;
|
157 |
+
break;
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
// phpcs:disable WordPress.DB.DirectDatabaseQuery
|
162 |
+
$term = $is_term ? $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM $wpdb->terms WHERE name = %s", $title ) ) : '';
|
163 |
+
// phpcs:enable
|
164 |
+
|
165 |
+
if ( ! empty( $term ) ) {
|
166 |
+
$title = $term;
|
167 |
+
} else {
|
168 |
+
$title = $this->is_wc_attribute_taxonomy( $title ) ? $title : $this->transliterate( $title );
|
169 |
+
}
|
170 |
+
|
171 |
+
return $title;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Check if title is an attribute taxonomy.
|
176 |
+
*
|
177 |
+
* @param string $title Title.
|
178 |
+
*
|
179 |
+
* @return bool
|
180 |
+
*/
|
181 |
+
protected function is_wc_attribute_taxonomy( $title ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
182 |
+
if ( ! \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'wc_get_attribute_taxonomies' ) ) {
|
183 |
+
return false;
|
184 |
+
}
|
185 |
+
|
186 |
+
$attribute_taxonomies = wc_get_attribute_taxonomies();
|
187 |
+
|
188 |
+
foreach ( $attribute_taxonomies as $attribute_taxonomy ) {
|
189 |
+
if ( $title === $attribute_taxonomy->attribute_name ) {
|
190 |
+
return true;
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
return false;
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Sanitize filename.
|
199 |
+
*
|
200 |
+
* @param string $filename Sanitized filename.
|
201 |
+
* @param string $filename_raw The filename prior to sanitization.
|
202 |
+
*
|
203 |
+
* @return string
|
204 |
+
*/
|
205 |
+
public function sanitize_filename( $filename, $filename_raw ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
206 |
+
$pre = apply_filters( 'ctl_pre_sanitize_filename', false, $filename );
|
207 |
+
|
208 |
+
if ( false !== $pre ) {
|
209 |
+
return $pre;
|
210 |
+
}
|
211 |
+
|
212 |
+
if ( seems_utf8( $filename ) ) {
|
213 |
+
$filename = \Patchwork\Redefinitions\mb_strtolower(__NAMESPACE__, $filename );
|
214 |
+
}
|
215 |
+
|
216 |
+
return $this->transliterate( $filename );
|
217 |
+
}
|
218 |
+
|
219 |
+
/**
|
220 |
+
* Fix string encoding on MacOS.
|
221 |
+
*
|
222 |
+
* @param string $string String.
|
223 |
+
*
|
224 |
+
* @return string
|
225 |
+
*/
|
226 |
+
private function fix_mac_string( $string ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
227 |
+
$table = $this->get_filtered_table();
|
228 |
+
$fix_table = Conversion_Tables::get_fix_table_for_mac();
|
229 |
+
|
230 |
+
$fix = [];
|
231 |
+
foreach ( $fix_table as $key => $value ) {
|
232 |
+
if ( isset( $table[ $key ] ) ) {
|
233 |
+
$fix[ $value ] = $table[ $key ];
|
234 |
+
}
|
235 |
+
}
|
236 |
+
|
237 |
+
return strtr( $string, $fix );
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* Split Chinese string by hyphens.
|
242 |
+
*
|
243 |
+
* @param string $string String.
|
244 |
+
* @param array $table Conversion table.
|
245 |
+
*
|
246 |
+
* @return string
|
247 |
+
*/
|
248 |
+
protected function split_chinese_string( $string, $table ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
249 |
+
if ( ! $this->settings->is_chinese_locale() || mb_strlen( $string ) < 4 ) {
|
250 |
+
return $string;
|
251 |
+
}
|
252 |
+
|
253 |
+
$chars = Mbstring::mb_str_split( $string );
|
254 |
+
$string = '';
|
255 |
+
|
256 |
+
foreach ( $chars as $char ) {
|
257 |
+
if ( isset( $table[ $char ] ) ) {
|
258 |
+
$string .= '-' . $char . '-';
|
259 |
+
} else {
|
260 |
+
$string .= $char;
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
return $string;
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Get transliteration table.
|
269 |
+
*
|
270 |
+
* @return array
|
271 |
+
*/
|
272 |
+
private function get_filtered_table() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
273 |
+
return (array) apply_filters( 'ctl_table', $this->settings->get_table() );
|
274 |
+
}
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Transliterate string using a table.
|
278 |
+
*
|
279 |
+
* @param string $string String.
|
280 |
+
*
|
281 |
+
* @return string
|
282 |
+
*/
|
283 |
+
public function transliterate( $string ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
284 |
+
$table = $this->get_filtered_table();
|
285 |
+
|
286 |
+
$string = $this->fix_mac_string( $string );
|
287 |
+
$string = $this->split_chinese_string( $string, $table );
|
288 |
+
$string = strtr( $string, $table );
|
289 |
+
|
290 |
+
if ( \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'iconv' ) ) {
|
291 |
+
$new_string = iconv( 'UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string );
|
292 |
+
$string = $new_string ? $new_string : $string;
|
293 |
+
}
|
294 |
+
|
295 |
+
return $string;
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Check if Classic Editor plugin is active.
|
300 |
+
*
|
301 |
+
* @link https://kagg.eu/how-to-catch-gutenberg/
|
302 |
+
*
|
303 |
+
* @return bool
|
304 |
+
*/
|
305 |
+
private function is_classic_editor_plugin_active() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
306 |
+
// @codeCoverageIgnoreStart
|
307 |
+
if ( ! \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'is_plugin_active' ) ) {
|
308 |
+
include_once ABSPATH . 'wp-admin/includes/plugin.php';
|
309 |
+
}
|
310 |
+
// @codeCoverageIgnoreEnd
|
311 |
+
|
312 |
+
return is_plugin_active( 'classic-editor/classic-editor.php' );
|
313 |
+
}
|
314 |
+
|
315 |
+
/**
|
316 |
+
* Check if Block Editor is active.
|
317 |
+
* Must only be used after plugins_loaded action is fired.
|
318 |
+
*
|
319 |
+
* @link https://kagg.eu/how-to-catch-gutenberg/
|
320 |
+
*
|
321 |
+
* @return bool
|
322 |
+
*/
|
323 |
+
private function is_gutenberg_editor_active() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
324 |
+
|
325 |
+
// Gutenberg plugin is installed and activated.
|
326 |
+
$gutenberg = ! ( false === has_filter( 'replace_editor', 'gutenberg_init' ) );
|
327 |
+
|
328 |
+
// Block editor since 5.0.
|
329 |
+
$block_editor = version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' );
|
330 |
+
|
331 |
+
if ( ! $gutenberg && ! $block_editor ) {
|
332 |
+
return false;
|
333 |
+
}
|
334 |
+
|
335 |
+
if ( $this->is_classic_editor_plugin_active() ) {
|
336 |
+
$editor_option = get_option( 'classic-editor-replace' );
|
337 |
+
$block_editor_active = [ 'no-replace', 'block' ];
|
338 |
+
|
339 |
+
return in_array( $editor_option, $block_editor_active, true );
|
340 |
+
}
|
341 |
+
|
342 |
+
return true;
|
343 |
+
}
|
344 |
+
|
345 |
+
/**
|
346 |
+
* Gutenberg support
|
347 |
+
*
|
348 |
+
* @param array $data An array of slashed post data.
|
349 |
+
* @param array $postarr An array of sanitized, but otherwise unmodified post data.
|
350 |
+
*
|
351 |
+
* @return mixed
|
352 |
+
*/
|
353 |
+
public function sanitize_post_name( $data, $postarr = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
354 |
+
global $current_screen;
|
355 |
+
|
356 |
+
if ( ! $this->is_gutenberg_editor_active() ) {
|
357 |
+
return $data;
|
358 |
+
}
|
359 |
+
|
360 |
+
// Run code only on post edit screen.
|
361 |
+
if ( ! ( $current_screen && 'post' === $current_screen->base ) ) {
|
362 |
+
return $data;
|
363 |
+
}
|
364 |
+
|
365 |
+
if (
|
366 |
+
! $data['post_name'] && $data['post_title'] &&
|
367 |
+
! in_array( $data['post_status'], [ 'auto-draft', 'revision' ], true )
|
368 |
+
) {
|
369 |
+
$data['post_name'] = sanitize_title( $data['post_title'] );
|
370 |
+
}
|
371 |
+
|
372 |
+
return $data;
|
373 |
+
}
|
374 |
+
|
375 |
+
/**
|
376 |
+
* Changes array of items into string of items, separated by comma and sql-escaped
|
377 |
+
*
|
378 |
+
* @see https://coderwall.com/p/zepnaw
|
379 |
+
* @global wpdb $wpdb
|
380 |
+
*
|
381 |
+
* @param mixed|array $items item(s) to be joined into string.
|
382 |
+
* @param string $format %s or %d.
|
383 |
+
*
|
384 |
+
* @return string Items separated by comma and sql-escaped
|
385 |
+
*/
|
386 |
+
public function prepare_in( $items, $format = '%s' ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
387 |
+
global $wpdb;
|
388 |
+
|
389 |
+
$items = (array) $items;
|
390 |
+
$how_many = count( $items );
|
391 |
+
if ( $how_many > 0 ) {
|
392 |
+
$placeholders = array_fill( 0, $how_many, $format );
|
393 |
+
$prepared_format = implode( ',', $placeholders );
|
394 |
+
$prepared_in = $wpdb->prepare( $prepared_format, $items ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
|
395 |
+
} else {
|
396 |
+
$prepared_in = '';
|
397 |
+
}
|
398 |
+
|
399 |
+
return $prepared_in;
|
400 |
+
}
|
401 |
+
}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/5ef18fdb052a08d48b73f70c53e22f6f.php
ADDED
@@ -0,0 +1,287 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Old slugs converter.
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Class Converter
|
12 |
+
*
|
13 |
+
* @class Converter
|
14 |
+
*/
|
15 |
+
class Converter {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Query arg in url to start conversion.
|
19 |
+
*/
|
20 |
+
const QUERY_ARG = 'cyr-to-lat-convert';
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Regex of prohibited chars in slugs
|
24 |
+
* [^A-Za-z0-9[.apostrophe.][.underscore.][.period.][.hyphen.]]+
|
25 |
+
* So, allowed chars are A-Za-z0-9[.apostrophe.][.underscore.][.period.][.hyphen.]
|
26 |
+
* % is not allowed in the slug, but could present if slug is url_encoded
|
27 |
+
*
|
28 |
+
* @link https://dev.mysql.com/doc/refman/5.6/en/regexp.html
|
29 |
+
*/
|
30 |
+
const PROHIBITED_CHARS_REGEX = "[^A-Za-z0-9'_\.\-]+";
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Plugin main class.
|
34 |
+
*
|
35 |
+
* @var Main
|
36 |
+
*/
|
37 |
+
private $main;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Plugin settings.
|
41 |
+
*
|
42 |
+
* @var Settings
|
43 |
+
*/
|
44 |
+
private $settings;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Background process to convert posts.
|
48 |
+
*
|
49 |
+
* @var Post_Conversion_Process
|
50 |
+
*/
|
51 |
+
private $process_all_posts;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Background process to convert terms.
|
55 |
+
*
|
56 |
+
* @var Term_Conversion_Process
|
57 |
+
*/
|
58 |
+
private $process_all_terms;
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Admin notices.
|
62 |
+
*
|
63 |
+
* @var Admin_Notices
|
64 |
+
*/
|
65 |
+
private $admin_notices;
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Option group.
|
69 |
+
*
|
70 |
+
* @var string
|
71 |
+
*/
|
72 |
+
private $option_group = '';
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Converter constructor.
|
76 |
+
*
|
77 |
+
* @param Main $main Plugin main class.
|
78 |
+
* @param Settings $settings Plugin settings.
|
79 |
+
* @param Post_Conversion_Process $process_all_posts Post conversion process.
|
80 |
+
* @param Term_Conversion_Process $process_all_terms Term conversion process.
|
81 |
+
* @param Admin_Notices $admin_notices Admin notices.
|
82 |
+
*/
|
83 |
+
public function __construct( $main, $settings, $process_all_posts, $process_all_terms, $admin_notices ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
84 |
+
$this->main = $main;
|
85 |
+
$this->settings = $settings;
|
86 |
+
$this->option_group = Settings::OPTION_GROUP;
|
87 |
+
$this->process_all_posts = $process_all_posts;
|
88 |
+
$this->process_all_terms = $process_all_terms;
|
89 |
+
$this->admin_notices = $admin_notices;
|
90 |
+
|
91 |
+
$this->init_hooks();
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Init class hooks.
|
96 |
+
*/
|
97 |
+
public function init_hooks() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
98 |
+
add_action( 'admin_init', [ $this, 'process_handler' ] );
|
99 |
+
add_action( 'admin_init', [ $this, 'conversion_notices' ] );
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Show conversion notices.
|
104 |
+
*/
|
105 |
+
public function conversion_notices() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
106 |
+
$posts_process_running = $this->process_all_posts->is_process_running();
|
107 |
+
$terms_process_running = $this->process_all_terms->is_process_running();
|
108 |
+
|
109 |
+
if ( ! $posts_process_running && ! $terms_process_running ) {
|
110 |
+
add_action( 'admin_init', [ $this, 'start_conversion' ], 20 );
|
111 |
+
}
|
112 |
+
|
113 |
+
if ( $posts_process_running ) {
|
114 |
+
$this->admin_notices->add_notice(
|
115 |
+
__( 'Cyr To Lat converts existing post slugs in the background process.', 'cyr2lat' ),
|
116 |
+
'notice notice-info is-dismissible'
|
117 |
+
);
|
118 |
+
}
|
119 |
+
|
120 |
+
if ( $terms_process_running ) {
|
121 |
+
$this->admin_notices->add_notice(
|
122 |
+
__( 'Cyr To Lat converts existing term slugs in the background process.', 'cyr2lat' ),
|
123 |
+
'notice notice-info is-dismissible'
|
124 |
+
);
|
125 |
+
}
|
126 |
+
|
127 |
+
if ( $this->process_all_posts->is_process_completed() ) {
|
128 |
+
$this->admin_notices->add_notice(
|
129 |
+
__( 'Cyr To Lat completed conversion of existing post slugs.', 'cyr2lat' ),
|
130 |
+
'notice notice-success is-dismissible'
|
131 |
+
);
|
132 |
+
}
|
133 |
+
|
134 |
+
if ( $this->process_all_terms->is_process_completed() ) {
|
135 |
+
$this->admin_notices->add_notice(
|
136 |
+
__( 'Cyr To Lat completed conversion of existing term slugs.', 'cyr2lat' ),
|
137 |
+
'notice notice-success is-dismissible'
|
138 |
+
);
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Check if we have to start conversion and start it.
|
144 |
+
*/
|
145 |
+
public function start_conversion() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
146 |
+
if ( ! isset( $_POST['cyr2lat-convert'] ) ) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
check_admin_referer( $this->option_group . '-options' );
|
150 |
+
$this->convert_existing_slugs();
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Process handler.
|
155 |
+
*/
|
156 |
+
public function process_handler() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
157 |
+
if ( ! isset( $_GET[ self::QUERY_ARG ] ) || ! isset( $_GET['_wpnonce'] ) ) {
|
158 |
+
return;
|
159 |
+
}
|
160 |
+
|
161 |
+
if ( ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), self::QUERY_ARG ) ) {
|
162 |
+
return;
|
163 |
+
}
|
164 |
+
|
165 |
+
$this->convert_existing_slugs();
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Convert Existing Slugs.
|
170 |
+
*
|
171 |
+
* @param array $args Arguments for query.
|
172 |
+
*/
|
173 |
+
public function convert_existing_slugs( $args = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
174 |
+
$this->convert_existing_post_slugs( $args );
|
175 |
+
$this->convert_existing_term_slugs();
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Convert existing post slugs.
|
180 |
+
*
|
181 |
+
* @param array $args Arguments for query.
|
182 |
+
*/
|
183 |
+
protected function convert_existing_post_slugs( $args = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
184 |
+
global $wpdb;
|
185 |
+
|
186 |
+
$post_types = get_post_types( [ 'public' => true ] );
|
187 |
+
|
188 |
+
$post_types += [ 'nav_menu_item' => 'nav_menu_item' ];
|
189 |
+
|
190 |
+
$defaults = [
|
191 |
+
'post_type' => apply_filters( 'ctl_post_types', $post_types ),
|
192 |
+
'post_status' => [ 'publish', 'future', 'private' ],
|
193 |
+
];
|
194 |
+
|
195 |
+
$args = wp_parse_args( $args, $defaults );
|
196 |
+
|
197 |
+
$regexp = $wpdb->prepare( '%s', self::PROHIBITED_CHARS_REGEX );
|
198 |
+
|
199 |
+
$post_sql =
|
200 |
+
'post_status IN (' . $this->main->prepare_in( $args['post_status'] ) . ')' .
|
201 |
+
' AND post_type IN (' . $this->main->prepare_in( $args['post_type'] ) . ')';
|
202 |
+
$media_sql = "post_status = 'inherit' AND post_type = 'attachment'";
|
203 |
+
$all_posts_sql = '(' . $post_sql . ') OR (' . $media_sql . ')';
|
204 |
+
|
205 |
+
$sql = "SELECT ID, post_name, post_type FROM $wpdb->posts WHERE post_name REGEXP($regexp) AND ($all_posts_sql)";
|
206 |
+
|
207 |
+
// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
|
208 |
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
209 |
+
$posts = $wpdb->get_results( $sql );
|
210 |
+
// phpcs:enable WordPress.DB.PreparedSQL.NotPrepared
|
211 |
+
|
212 |
+
if ( ! $posts ) {
|
213 |
+
$this->admin_notices->add_notice(
|
214 |
+
__( 'Cyr To Lat has not found existing post slugs for conversion.', 'cyr2lat' ),
|
215 |
+
'notice notice-info is-dismissible'
|
216 |
+
);
|
217 |
+
|
218 |
+
return;
|
219 |
+
}
|
220 |
+
|
221 |
+
if ( $posts ) {
|
222 |
+
foreach ( (array) $posts as $post ) {
|
223 |
+
$this->process_all_posts->push_to_queue( $post );
|
224 |
+
}
|
225 |
+
|
226 |
+
$this->log( __( 'Post slugs conversion started.', 'cyr2lat' ) );
|
227 |
+
$this->admin_notices->add_notice(
|
228 |
+
__( 'Cyr To Lat started conversion of existing post slugs.', 'cyr2lat' ),
|
229 |
+
'notice notice-info is-dismissible'
|
230 |
+
);
|
231 |
+
|
232 |
+
$this->process_all_posts->save()->dispatch();
|
233 |
+
}
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Convert existing term slugs.
|
238 |
+
*/
|
239 |
+
protected function convert_existing_term_slugs() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
240 |
+
global $wpdb;
|
241 |
+
|
242 |
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
243 |
+
$terms = $wpdb->get_results(
|
244 |
+
$wpdb->prepare(
|
245 |
+
"SELECT t.term_id, slug, tt.taxonomy, tt.term_taxonomy_id FROM $wpdb->terms t, $wpdb->term_taxonomy tt
|
246 |
+
WHERE t.slug REGEXP(%s) AND tt.term_id = t.term_id",
|
247 |
+
self::PROHIBITED_CHARS_REGEX
|
248 |
+
)
|
249 |
+
);
|
250 |
+
|
251 |
+
if ( ! $terms ) {
|
252 |
+
$this->admin_notices->add_notice(
|
253 |
+
__( 'Cyr To Lat has not found existing term slugs for conversion.', 'cyr2lat' ),
|
254 |
+
'notice notice-info is-dismissible'
|
255 |
+
);
|
256 |
+
|
257 |
+
return;
|
258 |
+
}
|
259 |
+
|
260 |
+
if ( $terms ) {
|
261 |
+
foreach ( (array) $terms as $term ) {
|
262 |
+
$this->process_all_terms->push_to_queue( $term );
|
263 |
+
}
|
264 |
+
|
265 |
+
$this->log( __( 'Term slugs conversion started.', 'cyr2lat' ) );
|
266 |
+
$this->admin_notices->add_notice(
|
267 |
+
__( 'Cyr To Lat started conversion of existing term slugs.', 'cyr2lat' ),
|
268 |
+
'notice notice-info is-dismissible'
|
269 |
+
);
|
270 |
+
|
271 |
+
$this->process_all_terms->save()->dispatch();
|
272 |
+
}
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* Log.
|
277 |
+
*
|
278 |
+
* @param string $message Message to log.
|
279 |
+
*/
|
280 |
+
protected function log( $message ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
281 |
+
if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'WP_DEBUG_LOG' ) && \Patchwork\Redefinitions\constant(__NAMESPACE__, 'WP_DEBUG_LOG' ) ) {
|
282 |
+
// @phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_error_log
|
283 |
+
\Patchwork\Redefinitions\error_log(__NAMESPACE__, 'Cyr To Lat: ' . $message );
|
284 |
+
// @phpcs:enable WordPress.PHP.DevelopmentFunctions.error_log_error_log
|
285 |
+
}
|
286 |
+
}
|
287 |
+
}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/64c11395d6a993bb4748cbb13c06e511.php
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WP-CLI support.
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
* @link https://github.com/mihdan/wp-rocket-cli/blob/master/command.php
|
7 |
+
*/
|
8 |
+
|
9 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
10 |
+
|
11 |
+
use cli\progress\Bar;
|
12 |
+
use WP_CLI\NoOp;
|
13 |
+
use WP_CLI_Command;
|
14 |
+
use function WP_CLI\Utils\make_progress_bar;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class WP_CLI
|
18 |
+
*
|
19 |
+
* @class WP_CLI
|
20 |
+
*/
|
21 |
+
class WP_CLI extends WP_CLI_Command {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Converter class.
|
25 |
+
*
|
26 |
+
* @var Converter
|
27 |
+
*/
|
28 |
+
private $converter;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* WP_CLI constructor.
|
32 |
+
*
|
33 |
+
* @param Converter $converter Converter.
|
34 |
+
*/
|
35 |
+
public function __construct( Converter $converter ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
36 |
+
parent::__construct();
|
37 |
+
$this->converter = $converter;
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Regenerate old slugs.
|
42 |
+
*
|
43 |
+
* ## EXAMPLES
|
44 |
+
*
|
45 |
+
* $ wp cyr2lat regenerate
|
46 |
+
* Success: Regenerate Completed.
|
47 |
+
*
|
48 |
+
* @subcommand regenerate
|
49 |
+
*
|
50 |
+
* @param array $args Arguments.
|
51 |
+
* @param array $assoc_args Arguments in associative array.
|
52 |
+
*/
|
53 |
+
public function regenerate( $args = [], $assoc_args = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Notify instance.
|
57 |
+
*
|
58 |
+
* @var Bar $notify
|
59 |
+
*/
|
60 |
+
$notify = $this->make_progress_bar();
|
61 |
+
|
62 |
+
$result = [];
|
63 |
+
|
64 |
+
if ( ! empty( $assoc_args['post_status'] ) ) {
|
65 |
+
$result['post_status'] = explode( ',', $assoc_args['post_status'] );
|
66 |
+
$result['post_status'] = array_values( \Patchwork\Redefinitions\array_filter(__NAMESPACE__, \Patchwork\Redefinitions\array_map(__NAMESPACE__, 'trim', $result['post_status'] ) ) );
|
67 |
+
}
|
68 |
+
|
69 |
+
if ( ! empty( $assoc_args['post_type'] ) ) {
|
70 |
+
$result['post_type'] = explode( ',', $assoc_args['post_type'] );
|
71 |
+
$result['post_type'] = array_values( \Patchwork\Redefinitions\array_filter(__NAMESPACE__, \Patchwork\Redefinitions\array_map(__NAMESPACE__, 'trim', $result['post_type'] ) ) );
|
72 |
+
}
|
73 |
+
|
74 |
+
$this->converter->convert_existing_slugs( $result );
|
75 |
+
$notify->tick();
|
76 |
+
$notify->finish();
|
77 |
+
|
78 |
+
\WP_CLI::success( 'Regenerate Completed.' );
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Make progress bar.
|
83 |
+
*
|
84 |
+
* @return Bar|NoOp
|
85 |
+
*/
|
86 |
+
public function make_progress_bar() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
87 |
+
return make_progress_bar( 'Regenerate existing slugs', 1 );
|
88 |
+
}
|
89 |
+
}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/7a6bb82a1570d399a0fc0211458a3b75.php
ADDED
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class to check requirements of the plugin.
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
use WP_Filesystem_Direct;
|
11 |
+
|
12 |
+
if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class Requirements
|
16 |
+
*/
|
17 |
+
class Requirements {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Admin notices.
|
21 |
+
*
|
22 |
+
* @var Admin_Notices
|
23 |
+
*/
|
24 |
+
protected $admin_notices;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* WP file system direct.
|
28 |
+
*
|
29 |
+
* @var WP_Filesystem_Direct
|
30 |
+
*/
|
31 |
+
protected $wp_filesystem;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Restrict notice to Cyr To Lat settings page.
|
35 |
+
*
|
36 |
+
* @var array
|
37 |
+
*/
|
38 |
+
protected $cyr2lat_page;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Requirements constructor.
|
42 |
+
*
|
43 |
+
* @param Admin_Notices $admin_notices Admin notices.
|
44 |
+
* @param WP_Filesystem_Direct $wp_filesystem File system.
|
45 |
+
*/
|
46 |
+
public function __construct( $admin_notices = null, $wp_filesystem = null ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
47 |
+
$this->admin_notices = $admin_notices;
|
48 |
+
if ( ! $this->admin_notices ) {
|
49 |
+
$this->admin_notices = new Admin_Notices();
|
50 |
+
}
|
51 |
+
|
52 |
+
$this->cyr2lat_page = [ 'page' => Settings::SCREEN_ID ];
|
53 |
+
|
54 |
+
// @codeCoverageIgnoreStart
|
55 |
+
if ( ! \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'WP_Filesystem' ) ) {
|
56 |
+
require_once ABSPATH . 'wp-admin/includes/file.php';
|
57 |
+
}
|
58 |
+
// @codeCoverageIgnoreEnd
|
59 |
+
|
60 |
+
if ( ! WP_Filesystem() ) {
|
61 |
+
return;
|
62 |
+
}
|
63 |
+
|
64 |
+
$this->wp_filesystem = $wp_filesystem;
|
65 |
+
if ( ! $this->wp_filesystem ) {
|
66 |
+
$this->wp_filesystem = new WP_Filesystem_Direct( null );
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Check if requirements are met.
|
72 |
+
*
|
73 |
+
* @return bool
|
74 |
+
*/
|
75 |
+
public function are_requirements_met() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
76 |
+
$is_php_version_required = $this->is_php_version_required();
|
77 |
+
$is_max_input_vars_required = $this->is_max_input_vars_required();
|
78 |
+
|
79 |
+
if ( ! $is_php_version_required ) {
|
80 |
+
add_action( 'admin_init', [ $this, 'deactivate_plugin' ] );
|
81 |
+
}
|
82 |
+
|
83 |
+
return $is_php_version_required && $is_max_input_vars_required;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Deactivate plugin.
|
88 |
+
*/
|
89 |
+
public function deactivate_plugin() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
90 |
+
if ( is_plugin_active( plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ) ) ) {
|
91 |
+
deactivate_plugins( plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ) );
|
92 |
+
// phpcs:disable WordPress.Security.NonceVerification.Recommended
|
93 |
+
if ( isset( $_GET['activate'] ) ) {
|
94 |
+
unset( $_GET['activate'] );
|
95 |
+
}
|
96 |
+
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
97 |
+
|
98 |
+
$this->admin_notices->add_notice(
|
99 |
+
__( 'Cyr To Lat plugin has been deactivated.', 'cyr2lat' ),
|
100 |
+
'notice notice-info is-dismissible'
|
101 |
+
);
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Check php version.
|
107 |
+
*
|
108 |
+
* @return bool
|
109 |
+
*/
|
110 |
+
private function is_php_version_required() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
111 |
+
if ( version_compare( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION' ), \Patchwork\Redefinitions\phpversion(__NAMESPACE__), '>' ) ) {
|
112 |
+
/* translators: 1: Current PHP version number, 2: Cyr To Lat version, 3: Minimum required PHP version number */
|
113 |
+
$message = sprintf( __( 'Your server is running PHP version %1$s but Cyr To Lat %2$s requires at least %3$s.', 'cyr2lat' ), \Patchwork\Redefinitions\phpversion(__NAMESPACE__), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION' ) );
|
114 |
+
|
115 |
+
$this->admin_notices->add_notice( $message, 'notice notice-error' );
|
116 |
+
|
117 |
+
return false;
|
118 |
+
}
|
119 |
+
|
120 |
+
return true;
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Check max_input_vars.
|
125 |
+
*
|
126 |
+
* @return bool
|
127 |
+
*/
|
128 |
+
private function is_max_input_vars_required() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
129 |
+
if ( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) > \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'max_input_vars' ) ) {
|
130 |
+
if ( $this->wp_filesystem ) {
|
131 |
+
$this->try_to_fix_max_input_vars();
|
132 |
+
} else {
|
133 |
+
$this->admin_notices->add_notice(
|
134 |
+
__( 'Unable to get filesystem access.', 'cyr2lat' ),
|
135 |
+
'notice notice-error',
|
136 |
+
$this->cyr2lat_page
|
137 |
+
);
|
138 |
+
$this->ask_to_increase_max_input_vars();
|
139 |
+
|
140 |
+
return true;
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
if ( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) > \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'max_input_vars' ) ) {
|
145 |
+
$mtime = $this->wp_filesystem->mtime( $this->get_user_ini_filename() );
|
146 |
+
$ini_ttl = intval( \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'user_ini.cache_ttl' ) );
|
147 |
+
$time_left = ( $mtime + $ini_ttl ) - \Patchwork\Redefinitions\time(__NAMESPACE__);
|
148 |
+
|
149 |
+
if ( 0 < $time_left ) {
|
150 |
+
/* translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum required max_input_vars */
|
151 |
+
$message = sprintf( __( 'Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s requires at least %3$d.', 'cyr2lat' ), \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'max_input_vars' ), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) );
|
152 |
+
|
153 |
+
$message .= '<br>';
|
154 |
+
/* translators: 1: .user.ini filename */
|
155 |
+
$message .= sprintf( __( 'We have updated settings in %s.', 'cyr2lat' ), \Patchwork\Redefinitions\realpath(__NAMESPACE__, $this->get_user_ini_filename() ) );
|
156 |
+
$message .= '<br>';
|
157 |
+
/* translators: 1: Wait time in seconds */
|
158 |
+
$message .= sprintf( __( 'Please try again in %d s.', 'cyr2lat' ), $time_left );
|
159 |
+
|
160 |
+
$this->admin_notices->add_notice( $message, 'notice notice-error', $this->cyr2lat_page );
|
161 |
+
} else {
|
162 |
+
$this->ask_to_increase_max_input_vars();
|
163 |
+
}
|
164 |
+
|
165 |
+
return true;
|
166 |
+
}
|
167 |
+
|
168 |
+
return true;
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Try to fix max_input_vars.
|
173 |
+
*/
|
174 |
+
protected function try_to_fix_max_input_vars() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
175 |
+
$user_ini_filename = $this->get_user_ini_filename();
|
176 |
+
|
177 |
+
$content = $this->wp_filesystem->get_contents( $user_ini_filename );
|
178 |
+
|
179 |
+
$content = str_replace( "\r\n", "\n", $content );
|
180 |
+
$content = str_replace( "\r", "\n", $content );
|
181 |
+
$content_arr = explode( "\n", $content );
|
182 |
+
|
183 |
+
\Patchwork\Redefinitions\array_map(__NAMESPACE__, function ( $line ) use ( &$value ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
184 |
+
if ( preg_match( '/(?<![; ])\s*?(max_input_vars).*?=\D*?(\d+)/i', $line, $matches ) ) {
|
185 |
+
$value = (int) $matches[2];
|
186 |
+
}
|
187 |
+
},
|
188 |
+
$content_arr
|
189 |
+
);
|
190 |
+
|
191 |
+
if ( $value >= \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) ) {
|
192 |
+
return;
|
193 |
+
}
|
194 |
+
|
195 |
+
$content_arr = \Patchwork\Redefinitions\array_filter(__NAMESPACE__, $content_arr,
|
196 |
+
function ( $line ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
197 |
+
return false === strpos( $line, 'max_input_vars' );
|
198 |
+
}
|
199 |
+
);
|
200 |
+
if ( [ '' ] === $content_arr ) {
|
201 |
+
$content_arr = [];
|
202 |
+
}
|
203 |
+
$content_arr[] = 'max_input_vars = ' . \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' );
|
204 |
+
$content = implode( PHP_EOL, $content_arr );
|
205 |
+
|
206 |
+
$this->wp_filesystem->put_contents( $user_ini_filename, $content );
|
207 |
+
}
|
208 |
+
|
209 |
+
/**
|
210 |
+
* Get .user.ini filename.
|
211 |
+
*
|
212 |
+
* @return string
|
213 |
+
*/
|
214 |
+
private function get_user_ini_filename() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
215 |
+
return ABSPATH . 'wp-admin/' . \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'user_ini.filename' );
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Asl user to increase max_input_vars.
|
220 |
+
*/
|
221 |
+
private function ask_to_increase_max_input_vars() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
222 |
+
$message = __( 'Please increase max input vars limit up to 1500.', 'cyr2lat' );
|
223 |
+
|
224 |
+
$message .= '<br>';
|
225 |
+
$message .= __( 'See: <a href="http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit" target="_blank">Increasing max input vars limit.</a>', 'cyr2lat' );
|
226 |
+
|
227 |
+
$this->admin_notices->add_notice(
|
228 |
+
$message,
|
229 |
+
'notice notice-error',
|
230 |
+
[ 'page' => Settings::SCREEN_ID ]
|
231 |
+
);
|
232 |
+
}
|
233 |
+
}\Patchwork\CallRerouting\deployQueue();
|
234 |
+
}
|
vendor/lucatume/function-mocker/cache/7dd6f1c277a6c78d8318bbe76000ada3.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class intercept {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/823ab44b7fe7fb35b7976f7a7fbf1e7a.php
ADDED
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Background old post slugs converting process
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
use stdClass;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Post_Conversion_Process
|
14 |
+
*/
|
15 |
+
class Post_Conversion_Process extends Conversion_Process {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Site locale.
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
private $locale;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Current post to convert.
|
26 |
+
*
|
27 |
+
* @var stdClass
|
28 |
+
*/
|
29 |
+
private $post;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Process action name
|
33 |
+
*
|
34 |
+
* @var string
|
35 |
+
*/
|
36 |
+
protected $action;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Post_Conversion_Process constructor.
|
40 |
+
*
|
41 |
+
* @param Main $main Plugin main class.
|
42 |
+
*/
|
43 |
+
public function __construct( $main ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
44 |
+
$this->action = \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_POST_CONVERSION_ACTION' );
|
45 |
+
$this->locale = get_locale();
|
46 |
+
|
47 |
+
parent::__construct( $main );
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Task. Updates single post
|
52 |
+
*
|
53 |
+
* @param stdClass $post Queue item to iterate over.
|
54 |
+
*
|
55 |
+
* @return mixed
|
56 |
+
*/
|
57 |
+
protected function task( $post ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
58 |
+
global $wpdb;
|
59 |
+
|
60 |
+
$this->post = $post;
|
61 |
+
$post_name = urldecode( $post->post_name );
|
62 |
+
|
63 |
+
add_filter( 'locale', [ $this, 'filter_post_locale' ] );
|
64 |
+
$transliterated_name = $this->main->transliterate( $post_name );
|
65 |
+
remove_filter( 'locale', [ $this, 'filter_post_locale' ] );
|
66 |
+
|
67 |
+
if ( $transliterated_name !== $post_name ) {
|
68 |
+
update_post_meta( $post->ID, '_wp_old_slug', $post_name );
|
69 |
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
70 |
+
$wpdb->update( $wpdb->posts, [ 'post_name' => rawurlencode( $transliterated_name ) ], [ 'ID' => $post->ID ] );
|
71 |
+
|
72 |
+
$this->log( __( 'Post slug converted:', 'cyr2lat' ) . ' ' . $post_name . ' => ' . $transliterated_name );
|
73 |
+
|
74 |
+
if ( 'attachment' === $post->post_type ) {
|
75 |
+
$this->rename_attachment( $post->ID );
|
76 |
+
$this->rename_thumbnails( $post->ID );
|
77 |
+
$this->update_attachment_metadata( $post->ID );
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
return false;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Rename attachment.
|
86 |
+
*
|
87 |
+
* @param int $post_id Post ID.
|
88 |
+
*/
|
89 |
+
protected function rename_attachment( $post_id ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
90 |
+
$file = get_attached_file( $post_id );
|
91 |
+
|
92 |
+
if ( $file ) {
|
93 |
+
$updated = false;
|
94 |
+
$transliterated_file = $this->get_transliterated_file( $file );
|
95 |
+
$rename = $this->rename_file( $file, $transliterated_file );
|
96 |
+
if ( $rename ) {
|
97 |
+
$updated = update_attached_file( $post_id, $transliterated_file );
|
98 |
+
}
|
99 |
+
|
100 |
+
if ( $updated ) {
|
101 |
+
$this->log( __( 'Attachment file converted:', 'cyr2lat' ) . ' ' . $file . ' => ' . $transliterated_file );
|
102 |
+
|
103 |
+
return;
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
+
$this->log( __( 'Cannot convert attachment file for attachment id:', 'cyr2lat' ) . ' ' . $post_id );
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Rename thumbnails.
|
112 |
+
*
|
113 |
+
* @param int $post_id Post ID.
|
114 |
+
*/
|
115 |
+
protected function rename_thumbnails( $post_id ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
116 |
+
$sizes = get_intermediate_image_sizes();
|
117 |
+
|
118 |
+
foreach ( $sizes as $size ) {
|
119 |
+
$url = wp_get_attachment_image_src( $post_id, $size )[0];
|
120 |
+
$file = untrailingslashit( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'ABSPATH' ) ) . wp_make_link_relative( $url );
|
121 |
+
$transliterated_file = $this->get_transliterated_file( $file );
|
122 |
+
|
123 |
+
$rename = $this->rename_file( $file, $transliterated_file );
|
124 |
+
if ( $rename ) {
|
125 |
+
$this->log( __( 'Thumbnail file renamed:', 'cyr2lat' ) . ' ' . $file . ' => ' . $transliterated_file );
|
126 |
+
}
|
127 |
+
if ( false === $rename ) {
|
128 |
+
$this->log( __( 'Cannot rename thumbnail file:', 'cyr2lat' ) . ' ' . $file );
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Update attachment metadata.
|
135 |
+
*
|
136 |
+
* @param int $attachment_id Attachment ID.
|
137 |
+
*/
|
138 |
+
protected function update_attachment_metadata( $attachment_id ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
139 |
+
$meta = wp_get_attachment_metadata( $attachment_id );
|
140 |
+
|
141 |
+
if ( isset( $meta['file'] ) ) {
|
142 |
+
$meta['file'] = $this->main->transliterate( $meta['file'] );
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( isset( $meta['sizes'] ) ) {
|
146 |
+
foreach ( $meta['sizes'] as $key => $size ) {
|
147 |
+
$meta['sizes'][ $key ]['file'] = $this->main->transliterate( $meta['sizes'][ $key ]['file'] );
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
wp_update_attachment_metadata( $attachment_id, $meta );
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Get transliterated filename with path.
|
156 |
+
*
|
157 |
+
* @param string $file Filename.
|
158 |
+
*
|
159 |
+
* @return string
|
160 |
+
*/
|
161 |
+
protected function get_transliterated_file( $file ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
162 |
+
$path = pathinfo( $file );
|
163 |
+
$transliterated_filename = $this->main->transliterate( $path['filename'] );
|
164 |
+
|
165 |
+
return $path['dirname'] . '/' . $transliterated_filename . '.' . $path['extension'];
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Rename file.
|
170 |
+
* Return false if rename failed.
|
171 |
+
*
|
172 |
+
* @param string $file Full filename.
|
173 |
+
* @param string $new_file New full filename.
|
174 |
+
*
|
175 |
+
* @return bool|null
|
176 |
+
*/
|
177 |
+
protected function rename_file( $file, $new_file ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
178 |
+
$path = pathinfo( $file );
|
179 |
+
$new_path = pathinfo( $new_file );
|
180 |
+
|
181 |
+
$filename = $path['filename'];
|
182 |
+
$new_filename = $new_path['filename'];
|
183 |
+
|
184 |
+
if ( $new_filename !== $filename ) {
|
185 |
+
return \Patchwork\Redefinitions\rename(__NAMESPACE__, $file, $new_file );
|
186 |
+
}
|
187 |
+
|
188 |
+
return null;
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Complete
|
193 |
+
*/
|
194 |
+
protected function complete() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
195 |
+
parent::complete();
|
196 |
+
|
197 |
+
$this->log( __( 'Post slugs conversion completed.', 'cyr2lat' ) );
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Filter post locale
|
202 |
+
*
|
203 |
+
* @return string
|
204 |
+
*/
|
205 |
+
public function filter_post_locale() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
206 |
+
$wpml_post_language_details = apply_filters( 'wpml_post_language_details', false, $this->post->ID );
|
207 |
+
|
208 |
+
return isset( $wpml_post_language_details['locale'] ) ? $wpml_post_language_details['locale'] : $this->locale;
|
209 |
+
}
|
210 |
+
}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/87c0186bd1f5eef7fac3cc830853843d.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class WP_Screen {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/9c9e77b25faadb56dff570646e078dbf.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class wp_api {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/ac2614677e1a12cb15d55208407c065d.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class wp_api {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/c0ea46e7b4ef468cd221f627938ffc8a.php
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php \Patchwork\CallRerouting\deployQueue();class WP_Filesystem_Direct {}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/c346f2492ecd70e9b3820fc0acea1c22.php
ADDED
@@ -0,0 +1,768 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Settings.
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
use Cyr_To_Lat\Symfony\Polyfill\Mbstring\Mbstring;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Settings
|
14 |
+
*
|
15 |
+
* @class Settings
|
16 |
+
*/
|
17 |
+
class Settings {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Admin screen id.
|
21 |
+
*
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
const SCREEN_ID = 'settings_page_cyr-to-lat';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Option group.
|
28 |
+
*
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
const OPTION_GROUP = 'cyr_to_lat_group';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Option page.
|
35 |
+
*
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
const PAGE = 'cyr-to-lat';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Plugin options name.
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
const OPTION_NAME = 'cyr_to_lat_settings';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Form fields.
|
49 |
+
*
|
50 |
+
* @var array
|
51 |
+
*/
|
52 |
+
public $form_fields;
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Plugin options.
|
56 |
+
*
|
57 |
+
* @var array
|
58 |
+
*/
|
59 |
+
public $settings;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Plugin options.
|
63 |
+
*
|
64 |
+
* @var array
|
65 |
+
*/
|
66 |
+
private $options;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Served locales.
|
70 |
+
*
|
71 |
+
* @var array
|
72 |
+
*/
|
73 |
+
protected $locales = [];
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Settings constructor.
|
77 |
+
*/
|
78 |
+
public function __construct() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
79 |
+
add_action( 'plugins_loaded', [ $this, 'init' ] );
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Init plugin.
|
84 |
+
*/
|
85 |
+
public function init() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
86 |
+
$this->load_plugin_textdomain();
|
87 |
+
$this->init_form_fields();
|
88 |
+
$this->init_settings();
|
89 |
+
$this->init_hooks();
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Init class hooks.
|
94 |
+
*/
|
95 |
+
public function init_hooks() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
96 |
+
add_filter(
|
97 |
+
'plugin_action_links_' . plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ),
|
98 |
+
[ $this, 'add_settings_link' ],
|
99 |
+
10,
|
100 |
+
4
|
101 |
+
);
|
102 |
+
|
103 |
+
add_action( 'admin_menu', [ $this, 'add_settings_page' ] );
|
104 |
+
add_action( 'current_screen', [ $this, 'setup_sections' ] );
|
105 |
+
add_action( 'current_screen', [ $this, 'setup_fields' ] );
|
106 |
+
|
107 |
+
add_filter( 'pre_update_option_' . self::OPTION_NAME, [ $this, 'pre_update_option_filter' ], 10, 3 );
|
108 |
+
|
109 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Add link to plugin setting page on plugins page.
|
114 |
+
*
|
115 |
+
* @param array $actions An array of plugin action links. By default this can include 'activate',
|
116 |
+
* 'deactivate', and 'delete'. With Multisite active this can also include
|
117 |
+
* 'network_active' and 'network_only' items.
|
118 |
+
* @param string $plugin_file Path to the plugin file relative to the plugins directory.
|
119 |
+
* @param array $plugin_data An array of plugin data. See `get_plugin_data()`.
|
120 |
+
* @param string $context The plugin context. By default this can include 'all', 'active', 'inactive',
|
121 |
+
* 'recently_activated', 'upgrade', 'mustuse', 'dropins', and 'search'.
|
122 |
+
*
|
123 |
+
* @return array|mixed Plugin links
|
124 |
+
*/
|
125 |
+
public function add_settings_link( $actions, $plugin_file, $plugin_data, $context ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
126 |
+
$ctl_actions = [
|
127 |
+
'settings' =>
|
128 |
+
'<a href="' . admin_url( 'options-general.php?page=' . self::PAGE ) .
|
129 |
+
'" aria-label="' . esc_attr__( 'View Cyr To Lat settings', 'cyr2lat' ) . '">' .
|
130 |
+
esc_html__( 'Settings', 'cyr2lat' ) . '</a>',
|
131 |
+
];
|
132 |
+
|
133 |
+
return array_merge( $ctl_actions, $actions );
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Init locales.
|
138 |
+
*/
|
139 |
+
protected function init_locales() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
140 |
+
if ( ! empty( $this->locales ) ) {
|
141 |
+
return;
|
142 |
+
}
|
143 |
+
|
144 |
+
$this->locales = [
|
145 |
+
'iso9' => [
|
146 |
+
'label' => __( 'ISO9 Table', 'cyr2lat' ),
|
147 |
+
],
|
148 |
+
'bel' => [
|
149 |
+
'label' => __( 'bel Table', 'cyr2lat' ),
|
150 |
+
],
|
151 |
+
'uk' => [
|
152 |
+
'label' => __( 'uk Table', 'cyr2lat' ),
|
153 |
+
],
|
154 |
+
'bg_BG' => [
|
155 |
+
'label' => __( 'bg_BG Table', 'cyr2lat' ),
|
156 |
+
],
|
157 |
+
'mk_MK' => [
|
158 |
+
'label' => __( 'mk_MK Table', 'cyr2lat' ),
|
159 |
+
],
|
160 |
+
'sr_RS' => [
|
161 |
+
'label' => __( 'sr_RS Table', 'cyr2lat' ),
|
162 |
+
],
|
163 |
+
'el' => [
|
164 |
+
'label' => __( 'el Table', 'cyr2lat' ),
|
165 |
+
],
|
166 |
+
'hy' => [
|
167 |
+
'label' => __( 'hy Table', 'cyr2lat' ),
|
168 |
+
],
|
169 |
+
'ka_GE' => [
|
170 |
+
'label' => __( 'ka_GE Table', 'cyr2lat' ),
|
171 |
+
],
|
172 |
+
'kk' => [
|
173 |
+
'label' => __( 'kk Table', 'cyr2lat' ),
|
174 |
+
],
|
175 |
+
'he_IL' => [
|
176 |
+
'label' => __( 'he_IL Table', 'cyr2lat' ),
|
177 |
+
],
|
178 |
+
'zh_CN' => [
|
179 |
+
'label' => __( 'zh_CN Table', 'cyr2lat' ),
|
180 |
+
],
|
181 |
+
];
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Get current locale.
|
186 |
+
*
|
187 |
+
* @return string
|
188 |
+
*/
|
189 |
+
private function get_current_locale() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
190 |
+
$current_locale = get_locale();
|
191 |
+
|
192 |
+
return in_array( $current_locale, array_keys( $this->locales ), true ) ? $current_locale : 'iso9';
|
193 |
+
}
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Init options form fields.
|
197 |
+
*/
|
198 |
+
public function init_form_fields() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
199 |
+
$this->init_locales();
|
200 |
+
|
201 |
+
$current_locale = $this->get_current_locale();
|
202 |
+
|
203 |
+
$this->form_fields = [];
|
204 |
+
|
205 |
+
foreach ( $this->locales as $locale => $info ) {
|
206 |
+
$current = ( $locale === $current_locale ) ? '<br>' . __( '(current)', 'cyr2lat' ) : '';
|
207 |
+
|
208 |
+
$this->form_fields[ $locale ] = [
|
209 |
+
'label' => $info['label'] . $current,
|
210 |
+
'section' => $locale . '_section',
|
211 |
+
'type' => 'table',
|
212 |
+
'placeholder' => '',
|
213 |
+
'helper' => '',
|
214 |
+
'supplemental' => '',
|
215 |
+
'default' => Conversion_Tables::get( $locale ),
|
216 |
+
];
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* Initialise Settings.
|
222 |
+
*
|
223 |
+
* Store all settings in a single database entry
|
224 |
+
* and make sure the $settings array is either the default
|
225 |
+
* or the settings stored in the database.
|
226 |
+
*/
|
227 |
+
public function init_settings() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
228 |
+
$this->settings = get_option( self::OPTION_NAME, null );
|
229 |
+
|
230 |
+
$form_fields = $this->get_form_fields();
|
231 |
+
|
232 |
+
// If there are no settings defined, use defaults.
|
233 |
+
if ( ! is_array( $this->settings ) ) {
|
234 |
+
$this->settings = array_merge( array_fill_keys( array_keys( $form_fields ), '' ), wp_list_pluck( $form_fields, 'default' ) );
|
235 |
+
} else {
|
236 |
+
$this->settings = array_merge( wp_list_pluck( $form_fields, 'default' ), $this->settings );
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* Get the form fields after they are initialized.
|
242 |
+
*
|
243 |
+
* @return array of options
|
244 |
+
*/
|
245 |
+
public function get_form_fields() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
246 |
+
if ( empty( $this->form_fields ) ) {
|
247 |
+
$this->init_form_fields();
|
248 |
+
}
|
249 |
+
|
250 |
+
return \Patchwork\Redefinitions\array_map(__NAMESPACE__, [ $this, 'set_defaults' ], $this->form_fields );
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Set default required properties for each field.
|
255 |
+
*
|
256 |
+
* @param array $field Settings field.
|
257 |
+
*
|
258 |
+
* @return array
|
259 |
+
*/
|
260 |
+
protected function set_defaults( $field ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
261 |
+
if ( ! isset( $field['default'] ) ) {
|
262 |
+
$field['default'] = '';
|
263 |
+
}
|
264 |
+
|
265 |
+
return $field;
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Add settings page to the menu.
|
270 |
+
*/
|
271 |
+
public function add_settings_page() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
272 |
+
$parent_slug = 'options-general.php';
|
273 |
+
$page_title = __( 'Cyr To Lat', 'cyr2lat' );
|
274 |
+
$menu_title = __( 'Cyr To Lat', 'cyr2lat' );
|
275 |
+
$capability = 'manage_options';
|
276 |
+
$slug = self::PAGE;
|
277 |
+
$callback = [ $this, 'settings_page' ];
|
278 |
+
add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $slug, $callback );
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Settings page.
|
283 |
+
*/
|
284 |
+
public function settings_page() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
285 |
+
if ( ! $this->is_options_screen() ) {
|
286 |
+
return;
|
287 |
+
}
|
288 |
+
|
289 |
+
?>
|
290 |
+
<div class="wrap">
|
291 |
+
<h2 id="title">
|
292 |
+
<?php
|
293 |
+
// Admin panel title.
|
294 |
+
echo( esc_html( __( 'Cyr To Lat Plugin Options', 'cyr2lat' ) ) );
|
295 |
+
?>
|
296 |
+
</h2>
|
297 |
+
|
298 |
+
<form id="ctl-options" action="<?php echo esc_url( admin_url( 'options.php' ) ); ?>" method="post">
|
299 |
+
<?php
|
300 |
+
do_settings_sections( self::PAGE ); // Sections with options.
|
301 |
+
settings_fields( self::OPTION_GROUP ); // Hidden protection fields.
|
302 |
+
submit_button();
|
303 |
+
?>
|
304 |
+
</form>
|
305 |
+
|
306 |
+
<form id="ctl-convert-existing-slugs" action="" method="post">
|
307 |
+
<?php
|
308 |
+
wp_nonce_field( self::OPTION_GROUP . '-options' );
|
309 |
+
submit_button( __( 'Convert Existing Slugs', 'cyr2lat' ), 'secondary', 'cyr2lat-convert' );
|
310 |
+
?>
|
311 |
+
</form>
|
312 |
+
|
313 |
+
<div id="donate">
|
314 |
+
<h2>
|
315 |
+
<?php echo esc_html( __( 'Donate', 'cyr2lat' ) ); ?>
|
316 |
+
</h2>
|
317 |
+
<p>
|
318 |
+
<?php echo esc_html( __( 'Would you like to support the advancement of this plugin?', 'cyr2lat' ) ); ?>
|
319 |
+
</p>
|
320 |
+
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
|
321 |
+
<input type="hidden" name="cmd" value="_s-xclick">
|
322 |
+
<input type="hidden" name="hosted_button_id" value="BENCPARA8S224">
|
323 |
+
<input
|
324 |
+
type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif"
|
325 |
+
name="submit" alt="PayPal - The safer, easier way to pay online!">
|
326 |
+
<img
|
327 |
+
alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1"
|
328 |
+
height="1">
|
329 |
+
</form>
|
330 |
+
|
331 |
+
<h2 id="appreciation">
|
332 |
+
<?php echo esc_html( __( 'Your appreciation', 'cyr2lat' ) ); ?>
|
333 |
+
</h2>
|
334 |
+
<a
|
335 |
+
target="_blank"
|
336 |
+
href="https://wordpress.org/support/view/plugin-reviews/cyr2lat?rate=5#postform">
|
337 |
+
<?php echo esc_html( __( 'Leave a ★★★★★ plugin review on WordPress.org', 'cyr2lat' ) ); ?>
|
338 |
+
</a>
|
339 |
+
</div>
|
340 |
+
</div>
|
341 |
+
<?php
|
342 |
+
}
|
343 |
+
|
344 |
+
/**
|
345 |
+
* Setup settings sections.
|
346 |
+
*/
|
347 |
+
public function setup_sections() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
348 |
+
if ( ! $this->is_options_screen() ) {
|
349 |
+
return;
|
350 |
+
}
|
351 |
+
|
352 |
+
foreach ( $this->form_fields as $form_field ) {
|
353 |
+
add_settings_section(
|
354 |
+
$form_field['section'],
|
355 |
+
$form_field['label'],
|
356 |
+
[ $this, 'section_callback' ],
|
357 |
+
self::PAGE
|
358 |
+
);
|
359 |
+
}
|
360 |
+
}
|
361 |
+
|
362 |
+
/**
|
363 |
+
* Section callback.
|
364 |
+
*
|
365 |
+
* @param array $arguments Section arguments.
|
366 |
+
*/
|
367 |
+
public function section_callback( $arguments ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
368 |
+
$locale = str_replace( '_section', '', $arguments['id'] );
|
369 |
+
if ( $this->get_current_locale() === $locale ) {
|
370 |
+
echo '<div id="ctl-current"></div>';
|
371 |
+
}
|
372 |
+
}
|
373 |
+
|
374 |
+
/**
|
375 |
+
* Setup settings fields.
|
376 |
+
*/
|
377 |
+
public function setup_fields() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
378 |
+
if ( ! $this->is_options_screen() ) {
|
379 |
+
return;
|
380 |
+
}
|
381 |
+
|
382 |
+
register_setting( self::OPTION_GROUP, self::OPTION_NAME );
|
383 |
+
|
384 |
+
// Get current settings.
|
385 |
+
$this->options = get_option( self::OPTION_NAME );
|
386 |
+
|
387 |
+
foreach ( $this->form_fields as $key => $field ) {
|
388 |
+
$field['field_id'] = $key;
|
389 |
+
|
390 |
+
add_settings_field(
|
391 |
+
$key,
|
392 |
+
$field['label'],
|
393 |
+
[ $this, 'field_callback' ],
|
394 |
+
self::PAGE,
|
395 |
+
$field['section'],
|
396 |
+
$field
|
397 |
+
);
|
398 |
+
}
|
399 |
+
}
|
400 |
+
|
401 |
+
/**
|
402 |
+
* Output settings field.
|
403 |
+
*
|
404 |
+
* @param array $arguments Field arguments.
|
405 |
+
*/
|
406 |
+
public function field_callback( $arguments ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
407 |
+
if ( ! isset( $arguments['field_id'] ) ) {
|
408 |
+
return;
|
409 |
+
}
|
410 |
+
|
411 |
+
$value = $this->get_option( $arguments['field_id'] );
|
412 |
+
|
413 |
+
// Check which type of field we want.
|
414 |
+
switch ( $arguments['type'] ) {
|
415 |
+
case 'text':
|
416 |
+
case 'password':
|
417 |
+
case 'number':
|
418 |
+
printf(
|
419 |
+
'<input name="%1$s[%2$s]" id="%2$s" type="%3$s" placeholder="%4$s" value="%5$s" class="regular-text" />',
|
420 |
+
esc_html( self::OPTION_NAME ),
|
421 |
+
esc_attr( $arguments['field_id'] ),
|
422 |
+
esc_attr( $arguments['type'] ),
|
423 |
+
esc_attr( $arguments['placeholder'] ),
|
424 |
+
esc_html( $value )
|
425 |
+
);
|
426 |
+
break;
|
427 |
+
case 'textarea':
|
428 |
+
printf(
|
429 |
+
'<textarea name="%1$s[%2$s]" id="%2$s" placeholder="%3$s" rows="5" cols="50">%4$s</textarea>',
|
430 |
+
esc_html( self::OPTION_NAME ),
|
431 |
+
esc_attr( $arguments['field_id'] ),
|
432 |
+
esc_attr( $arguments['placeholder'] ),
|
433 |
+
wp_kses_post( $value )
|
434 |
+
);
|
435 |
+
break;
|
436 |
+
case 'checkbox':
|
437 |
+
case 'radio':
|
438 |
+
if ( 'checkbox' === $arguments['type'] ) {
|
439 |
+
$arguments['options'] = [ 'yes' => '' ];
|
440 |
+
}
|
441 |
+
|
442 |
+
if ( ! empty( $arguments['options'] ) && is_array( $arguments['options'] ) ) {
|
443 |
+
$options_markup = '';
|
444 |
+
$iterator = 0;
|
445 |
+
foreach ( $arguments['options'] as $key => $label ) {
|
446 |
+
$iterator ++;
|
447 |
+
$options_markup .= sprintf(
|
448 |
+
'<label for="%2$s_%7$s"><input id="%2$s_%7$s" name="%1$s[%2$s]" type="%3$s" value="%4$s" %5$s /> %6$s</label><br/>',
|
449 |
+
esc_html( self::OPTION_NAME ),
|
450 |
+
$arguments['field_id'],
|
451 |
+
$arguments['type'],
|
452 |
+
$key,
|
453 |
+
checked( $value, $key, false ),
|
454 |
+
$label,
|
455 |
+
$iterator
|
456 |
+
);
|
457 |
+
}
|
458 |
+
printf(
|
459 |
+
'<fieldset>%s</fieldset>',
|
460 |
+
wp_kses(
|
461 |
+
$options_markup,
|
462 |
+
[
|
463 |
+
'label' => [
|
464 |
+
'for' => [],
|
465 |
+
],
|
466 |
+
'input' => [
|
467 |
+
'id' => [],
|
468 |
+
'name' => [],
|
469 |
+
'type' => [],
|
470 |
+
'value' => [],
|
471 |
+
'checked' => [],
|
472 |
+
],
|
473 |
+
'br' => [],
|
474 |
+
]
|
475 |
+
)
|
476 |
+
);
|
477 |
+
}
|
478 |
+
break;
|
479 |
+
case 'select': // If it is a select dropdown.
|
480 |
+
if ( ! empty( $arguments['options'] ) && is_array( $arguments['options'] ) ) {
|
481 |
+
$options_markup = '';
|
482 |
+
foreach ( $arguments['options'] as $key => $label ) {
|
483 |
+
$options_markup .= sprintf(
|
484 |
+
'<option value="%s" %s>%s</option>',
|
485 |
+
$key,
|
486 |
+
selected( $value, $key, false ),
|
487 |
+
$label
|
488 |
+
);
|
489 |
+
}
|
490 |
+
printf(
|
491 |
+
'<select name="%1$s[%2$s]">%3$s</select>',
|
492 |
+
esc_html( self::OPTION_NAME ),
|
493 |
+
esc_html( $arguments['field_id'] ),
|
494 |
+
wp_kses(
|
495 |
+
$options_markup,
|
496 |
+
[
|
497 |
+
'option' => [
|
498 |
+
'value' => [],
|
499 |
+
'selected' => [],
|
500 |
+
],
|
501 |
+
]
|
502 |
+
)
|
503 |
+
);
|
504 |
+
}
|
505 |
+
break;
|
506 |
+
case 'multiple': // If it is a multiple select dropdown.
|
507 |
+
if ( ! empty( $arguments['options'] ) && is_array( $arguments['options'] ) ) {
|
508 |
+
$options_markup = '';
|
509 |
+
foreach ( $arguments['options'] as $key => $label ) {
|
510 |
+
$selected = '';
|
511 |
+
if ( is_array( $value ) ) {
|
512 |
+
if ( in_array( $key, $value, true ) ) {
|
513 |
+
$selected = selected( $key, $key, false );
|
514 |
+
}
|
515 |
+
}
|
516 |
+
$options_markup .= sprintf(
|
517 |
+
'<option value="%s" %s>%s</option>',
|
518 |
+
$key,
|
519 |
+
$selected,
|
520 |
+
$label
|
521 |
+
);
|
522 |
+
}
|
523 |
+
printf(
|
524 |
+
'<select multiple="multiple" name="%1$s[%2$s][]">%3$s</select>',
|
525 |
+
esc_html( self::OPTION_NAME ),
|
526 |
+
esc_html( $arguments['field_id'] ),
|
527 |
+
wp_kses(
|
528 |
+
$options_markup,
|
529 |
+
[
|
530 |
+
'option' => [
|
531 |
+
'value' => [],
|
532 |
+
'selected' => [],
|
533 |
+
],
|
534 |
+
]
|
535 |
+
)
|
536 |
+
);
|
537 |
+
}
|
538 |
+
break;
|
539 |
+
case 'table':
|
540 |
+
if ( is_array( $value ) ) {
|
541 |
+
$iterator = 0;
|
542 |
+
foreach ( $value as $key => $cell_value ) {
|
543 |
+
$id = $arguments['field_id'] . '-' . $iterator;
|
544 |
+
|
545 |
+
echo '<div class="ctl-table-cell">';
|
546 |
+
printf(
|
547 |
+
'<label for="%1$s">%2$s</label>',
|
548 |
+
esc_html( $id ),
|
549 |
+
esc_html( $key )
|
550 |
+
);
|
551 |
+
printf(
|
552 |
+
'<input name="%1$s[%2$s][%3$s]" id="%4$s" type="%5$s" placeholder="%6$s" value="%7$s" class="regular-text" />',
|
553 |
+
esc_html( self::OPTION_NAME ),
|
554 |
+
esc_attr( $arguments['field_id'] ),
|
555 |
+
esc_attr( $key ),
|
556 |
+
esc_attr( $id ),
|
557 |
+
'text',
|
558 |
+
esc_attr( $arguments['placeholder'] ),
|
559 |
+
esc_html( $cell_value )
|
560 |
+
);
|
561 |
+
echo '</div>';
|
562 |
+
|
563 |
+
$iterator ++;
|
564 |
+
}
|
565 |
+
}
|
566 |
+
break;
|
567 |
+
default:
|
568 |
+
break;
|
569 |
+
}
|
570 |
+
|
571 |
+
// If there is help text.
|
572 |
+
$helper = $arguments['helper'];
|
573 |
+
if ( $helper ) {
|
574 |
+
printf( '<span class="helper"> %s</span>', esc_html( $helper ) );
|
575 |
+
}
|
576 |
+
|
577 |
+
// If there is supplemental text.
|
578 |
+
$supplemental = $arguments['supplemental'];
|
579 |
+
if ( $supplemental ) {
|
580 |
+
printf( '<p class="description">%s</p>', esc_html( $supplemental ) );
|
581 |
+
}
|
582 |
+
}
|
583 |
+
|
584 |
+
/**
|
585 |
+
* Get plugin option.
|
586 |
+
*
|
587 |
+
* @param string $key Setting name.
|
588 |
+
* @param mixed $empty_value Empty value for this setting.
|
589 |
+
*
|
590 |
+
* @return string|array The value specified for the option or a default value for the option.
|
591 |
+
*/
|
592 |
+
public function get_option( $key, $empty_value = null ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
593 |
+
if ( empty( $this->settings ) ) {
|
594 |
+
$this->init_settings();
|
595 |
+
}
|
596 |
+
|
597 |
+
// Get option default if unset.
|
598 |
+
if ( ! isset( $this->settings[ $key ] ) ) {
|
599 |
+
$form_fields = $this->get_form_fields();
|
600 |
+
$this->settings[ $key ] = isset( $form_fields[ $key ] ) ? $this->get_field_default( $form_fields[ $key ] ) : '';
|
601 |
+
}
|
602 |
+
|
603 |
+
if ( ! is_null( $empty_value ) && '' === $this->settings[ $key ] ) {
|
604 |
+
$this->settings[ $key ] = $empty_value;
|
605 |
+
}
|
606 |
+
|
607 |
+
return $this->settings[ $key ];
|
608 |
+
}
|
609 |
+
|
610 |
+
/**
|
611 |
+
* Get a field default value. Defaults to '' if not set.
|
612 |
+
*
|
613 |
+
* @param array $field Setting field default value.
|
614 |
+
*
|
615 |
+
* @return string
|
616 |
+
*/
|
617 |
+
protected function get_field_default( $field ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
618 |
+
return empty( $field['default'] ) ? '' : $field['default'];
|
619 |
+
}
|
620 |
+
|
621 |
+
/**
|
622 |
+
* Set plugin option.
|
623 |
+
*
|
624 |
+
* @param string $key Setting name.
|
625 |
+
* @param mixed $value Setting value.
|
626 |
+
*/
|
627 |
+
public function set_option( $key, $value ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
628 |
+
if ( empty( $this->settings ) ) {
|
629 |
+
$this->init_settings();
|
630 |
+
}
|
631 |
+
|
632 |
+
$this->settings[ $key ] = $value;
|
633 |
+
update_option( self::OPTION_NAME, $this->settings );
|
634 |
+
}
|
635 |
+
|
636 |
+
/**
|
637 |
+
* Filter plugin option update.
|
638 |
+
*
|
639 |
+
* @param mixed $value New option value.
|
640 |
+
* @param mixed $old_value Old option value.
|
641 |
+
* @param string $option Option name.
|
642 |
+
*
|
643 |
+
* @return mixed
|
644 |
+
*/
|
645 |
+
public function pre_update_option_filter( $value, $old_value, $option ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
646 |
+
if ( $value === $old_value ) {
|
647 |
+
return $value;
|
648 |
+
}
|
649 |
+
|
650 |
+
// We save only one table, so merge with all existing tables.
|
651 |
+
if ( is_array( $old_value ) && ( is_array( $value ) ) ) {
|
652 |
+
$value = array_merge( $old_value, $value );
|
653 |
+
}
|
654 |
+
|
655 |
+
$form_fields = $this->get_form_fields();
|
656 |
+
foreach ( $form_fields as $key => $form_field ) {
|
657 |
+
switch ( $form_field['type'] ) {
|
658 |
+
case 'checkbox':
|
659 |
+
$form_field_value = isset( $value[ $key ] ) ? $value[ $key ] : 'no';
|
660 |
+
$form_field_value = '1' === $form_field_value || 'yes' === $form_field_value ? 'yes' : 'no';
|
661 |
+
$value[ $key ] = $form_field_value;
|
662 |
+
break;
|
663 |
+
default:
|
664 |
+
break;
|
665 |
+
}
|
666 |
+
}
|
667 |
+
|
668 |
+
return $value;
|
669 |
+
}
|
670 |
+
|
671 |
+
/**
|
672 |
+
* Enqueue class scripts.
|
673 |
+
*/
|
674 |
+
public function admin_enqueue_scripts() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
675 |
+
if ( ! $this->is_options_screen() ) {
|
676 |
+
return;
|
677 |
+
}
|
678 |
+
|
679 |
+
wp_enqueue_script(
|
680 |
+
'cyr-to-lat-settings',
|
681 |
+
\Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_URL' ) . '/dist/js/settings/app.js',
|
682 |
+
[],
|
683 |
+
\Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ),
|
684 |
+
true
|
685 |
+
);
|
686 |
+
|
687 |
+
wp_enqueue_style(
|
688 |
+
'cyr-to-lat-admin',
|
689 |
+
\Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_URL' ) . '/css/cyr-to-lat-admin.css',
|
690 |
+
[],
|
691 |
+
\Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' )
|
692 |
+
);
|
693 |
+
}
|
694 |
+
|
695 |
+
/**
|
696 |
+
* Load plugin text domain.
|
697 |
+
*/
|
698 |
+
public function load_plugin_textdomain() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
699 |
+
load_plugin_textdomain(
|
700 |
+
'cyr2lat',
|
701 |
+
false,
|
702 |
+
dirname( plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ) ) . '/languages/'
|
703 |
+
);
|
704 |
+
}
|
705 |
+
|
706 |
+
/**
|
707 |
+
* Get transliteration table.
|
708 |
+
*
|
709 |
+
* @return array
|
710 |
+
*/
|
711 |
+
public function get_table() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
712 |
+
// List of locales: https://make.wordpress.org/polyglots/teams/.
|
713 |
+
$locale = get_locale();
|
714 |
+
$table = $this->get_option( $locale );
|
715 |
+
if ( empty( $table ) ) {
|
716 |
+
$table = $this->get_option( 'iso9' );
|
717 |
+
}
|
718 |
+
|
719 |
+
return $this->transpose_chinese_table( $table );
|
720 |
+
}
|
721 |
+
|
722 |
+
/**
|
723 |
+
* Is current locale a Chinese one.
|
724 |
+
*
|
725 |
+
* @return bool
|
726 |
+
*/
|
727 |
+
public function is_chinese_locale() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
728 |
+
$chinese_locales = [ 'zh_CN', 'zh_HK', 'zh_SG', 'zh_TW' ];
|
729 |
+
|
730 |
+
return in_array( get_locale(), $chinese_locales, true );
|
731 |
+
}
|
732 |
+
|
733 |
+
/**
|
734 |
+
* Transpose Chinese table.
|
735 |
+
*
|
736 |
+
* Chinese tables are stored in different way, to show them compact.
|
737 |
+
*
|
738 |
+
* @param array $table Table.
|
739 |
+
*
|
740 |
+
* @return array
|
741 |
+
*/
|
742 |
+
protected function transpose_chinese_table( $table ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
743 |
+
if ( ! $this->is_chinese_locale() ) {
|
744 |
+
return $table;
|
745 |
+
}
|
746 |
+
|
747 |
+
$transposed_table = [];
|
748 |
+
foreach ( $table as $key => $item ) {
|
749 |
+
$hieroglyphs = Mbstring::mb_str_split( $item );
|
750 |
+
foreach ( $hieroglyphs as $hieroglyph ) {
|
751 |
+
$transposed_table[ $hieroglyph ] = $key;
|
752 |
+
}
|
753 |
+
}
|
754 |
+
|
755 |
+
return $transposed_table;
|
756 |
+
}
|
757 |
+
|
758 |
+
/**
|
759 |
+
* Is current admin screen the plugin options screen.
|
760 |
+
*
|
761 |
+
* @return bool
|
762 |
+
*/
|
763 |
+
protected function is_options_screen() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
764 |
+
$current_screen = get_current_screen();
|
765 |
+
|
766 |
+
return $current_screen && ( 'options' === $current_screen->id || self::SCREEN_ID === $current_screen->id );
|
767 |
+
}
|
768 |
+
}\Patchwork\CallRerouting\deployQueue();
|
vendor/lucatume/function-mocker/cache/d046cd1f76aeed79b57fe7d207f9c445.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Background old slugs converting process
|
4 |
+
*
|
5 |
+
* @package cyr-to-lat
|
6 |
+
*/
|
7 |
+
|
8 |
+
namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
|
9 |
+
|
10 |
+
use Cyr_To_Lat\KAGG\WP_Background_Processing\WP_Background_Process;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Conversion_Process
|
14 |
+
*/
|
15 |
+
class Conversion_Process extends WP_Background_Process {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Prefix
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
protected $prefix;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Plugin main class
|
26 |
+
*
|
27 |
+
* @var Main
|
28 |
+
*/
|
29 |
+
protected $main;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Conversion_Process constructor
|
33 |
+
*
|
34 |
+
* @param Main $main Plugin main class.
|
35 |
+
*/
|
36 |
+
public function __construct( $main ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
37 |
+
$this->main = $main;
|
38 |
+
$this->prefix = \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_PREFIX' );
|
39 |
+
|
40 |
+
parent::__construct();
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Task. Updates single post or term.
|
45 |
+
*
|
46 |
+
* @param mixed $item Queue item to iterate over.
|
47 |
+
*
|
48 |
+
* @return mixed
|
49 |
+
*/
|
50 |
+
protected function task( $item ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
51 |
+
return false;
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Complete
|
56 |
+
*/
|
57 |
+
protected function complete() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
58 |
+
parent::complete();
|
59 |
+
|
60 |
+
set_site_transient( $this->identifier . '_process_completed', microtime() );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Check if process is completed.
|
65 |
+
* Delete relevant transient.
|
66 |
+
*/
|
67 |
+
public function is_process_completed() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
|
68 |
+
if ( get_site_transient( $this->identifier . '_process_completed' ) ) {
|
69 |
+
// Process is marked as completed.
|
70 |
+
// Delete relevant site transient.
|
71 |
+
delete_site_transient( $this->identifier . '_process_completed' );
|
72 |
+
|
73 |
+
return true;
|
74 |
+
}
|
75 |
+
|
76 |
+
return false;
|
77 |
+
}
|
78 |
+
|
79 |
+
// phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod.Found
|
80 |
+
/**
|
81 |
+
* Is process running
|
82 |
+
*
|
83 |
+
* Check whether the current process is already running
|
84 |
+
* in a background process.
|
85 |
+
*/
|
86 |
+
public function is_process_running() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_
|