diff --git a/.sonarcloud.properties b/.sonarcloud.properties index 43ab56dedb..dbb8b89774 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -1 +1 @@ -sonar.exclusions=tests/**/_fixtures/**/* +sonar.exclusions=tests/**/_fixtures/**/*,src/lib/Resources/slug_converter/transformations/* diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 119d1bfb4b..3ef5286dec 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -52212,12 +52212,6 @@ parameters: count: 1 path: tests/lib/Persistence/Legacy/Content/LanguageAwareTestCase.php - - - message: '#^Parameter \#3 \$ruleFiles of class Ibexa\\Core\\Persistence\\TransformationProcessor\\DefinitionBased constructor expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Persistence/Legacy/Content/LanguageAwareTestCase.php - - message: '#^Property Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\LanguageAwareTestCase\:\:\$fieldNameGeneratorMock \(Ibexa\\Core\\Search\\Common\\FieldNameGenerator&PHPUnit\\Framework\\MockObject\\MockObject\) in isset\(\) is not nullable\.$#' identifier: isset.property @@ -54924,162 +54918,6 @@ parameters: count: 1 path: tests/lib/Persistence/Legacy/Content/UrlAlias/Gateway/DoctrineDatabaseTest.php - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:cleanupTextData\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:convertData\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:getSlugConverterMock\(\) has parameter \$methods with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:getSlugConverterMock\(\) should return Ibexa\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverter&PHPUnit\\Framework\\MockObject\\MockObject but returns PHPUnit\\Framework\\MockObject\\MockObject\.$#' - identifier: return.type - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:providerForTestGetUniqueCounterValue\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testCleanupText\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testCleanupText\(\) has parameter \$expected with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testCleanupText\(\) has parameter \$method with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testCleanupText\(\) has parameter \$text with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvert\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertNoMocking\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertNoMocking\(\) has parameter \$defaultText with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertNoMocking\(\) has parameter \$expected with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertNoMocking\(\) has parameter \$text with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertNoMocking\(\) has parameter \$transformation with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertWithDefaultTextFallback\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testConvertWithGivenTransformation\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testGetUniqueCounterValue\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testGetUniqueCounterValue\(\) has parameter \$isRootLevel with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testGetUniqueCounterValue\(\) has parameter \$returnValue with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:testGetUniqueCounterValue\(\) has parameter \$text with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Parameter \#1 \$transformationProcessor of class Ibexa\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverter constructor expects Ibexa\\Core\\Persistence\\TransformationProcessor, PHPUnit\\Framework\\MockObject\\MockObject given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Property Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:\$configuration type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Property Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:\$slugConverter \(Ibexa\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverter\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Property Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:\$slugConverterMock \(PHPUnit\\Framework\\MockObject\\MockObject\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - - - message: '#^Property Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\SlugConverterTest\:\:\$transformationProcessorMock \(PHPUnit\\Framework\\MockObject\\MockObject\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php - - message: '#^Argument of an invalid type Ibexa\\Contracts\\Core\\Persistence\\Content\\UrlAlias supplied for foreach, only iterables are supported\.$#' identifier: foreach.nonIterable @@ -56094,12 +55932,6 @@ parameters: count: 1 path: tests/lib/Persistence/Legacy/Content/UrlAlias/UrlAliasHandlerTest.php - - - message: '#^Parameter \#3 \$ruleFiles of class Ibexa\\Core\\Persistence\\TransformationProcessor\\DefinitionBased constructor expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Persistence/Legacy/Content/UrlAlias/UrlAliasHandlerTest.php - - message: '#^Property Ibexa\\Tests\\Core\\Persistence\\Legacy\\Content\\UrlAlias\\UrlAliasHandlerTest\:\:\$languageHandler \(Ibexa\\Core\\Persistence\\Legacy\\Content\\Language\\Handler\) in isset\(\) is not nullable\.$#' identifier: isset.property @@ -57270,18 +57102,6 @@ parameters: count: 1 path: tests/lib/Persistence/Limitation/Target/Builder/VersionBuilderTest.php - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\TransformationProcessor\\TransformationProcessorDefinitionBasedParserTest\:\:testParse\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedParserTest.php - - - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\TransformationProcessor\\TransformationProcessorDefinitionBasedParserTest\:\:testParse\(\) has parameter \$file with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedParserTest.php - - message: '#^Method Ibexa\\Tests\\Core\\Persistence\\TransformationProcessor\\TransformationProcessorDefinitionBasedTest\:\:getProcessor\(\) has no return type specified\.$#' identifier: missingType.return @@ -57312,12 +57132,6 @@ parameters: count: 1 path: tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedTest.php - - - message: '#^Parameter \#3 \$ruleFiles of class Ibexa\\Core\\Persistence\\TransformationProcessor\\DefinitionBased constructor expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedTest.php - - message: '#^Class Ibexa\\Core\\Persistence\\TransformationProcessor\\DefinitionBased\\Parser constructor invoked with 1 parameter, 0 required\.$#' identifier: arguments.count @@ -57426,12 +57240,6 @@ parameters: count: 1 path: tests/lib/Persistence/TransformationProcessor/TransformationProcessorPreprocessedBasedTest.php - - - message: '#^Parameter \#2 \$ruleFiles of class Ibexa\\Core\\Persistence\\TransformationProcessor\\PreprocessedBased constructor expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Persistence/TransformationProcessor/TransformationProcessorPreprocessedBasedTest.php - - message: '#^Method Ibexa\\Tests\\Core\\QueryType\\BuiltIn\\AbstractQueryTypeTestCase\:\:dataProviderForGetQuery\(\) return type has no value type specified in iterable type iterable\.$#' identifier: missingType.iterableValue @@ -64584,12 +64392,6 @@ parameters: count: 1 path: tests/lib/Search/Legacy/Content/HandlerContentTest.php - - - message: '#^Parameter \#3 \$ruleFiles of class Ibexa\\Core\\Persistence\\TransformationProcessor\\DefinitionBased constructor expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Search/Legacy/Content/HandlerContentTest.php - - message: '#^Class Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Query\\SortClause\\Field constructor invoked with 4 parameters, 2\-3 required\.$#' identifier: arguments.count @@ -65160,12 +64962,6 @@ parameters: count: 1 path: tests/lib/Search/Legacy/Content/HandlerLocationTest.php - - - message: '#^Parameter \#3 \$ruleFiles of class Ibexa\\Core\\Persistence\\TransformationProcessor\\DefinitionBased constructor expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Search/Legacy/Content/HandlerLocationTest.php - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\) with ''Ibexa\\\\Contracts\\\\Core\\\\Specification\\\\Content\\\\ContentSpecification'' and Ibexa\\Contracts\\Core\\Specification\\Content\\ContentContainerSpecification will always evaluate to true\.$#' identifier: staticMethod.alreadyNarrowedType diff --git a/src/lib/Resources/settings/storage_engines/common.yml b/src/lib/Resources/settings/storage_engines/common.yml index 161f746ce2..35fbc98f02 100644 --- a/src/lib/Resources/settings/storage_engines/common.yml +++ b/src/lib/Resources/settings/storage_engines/common.yml @@ -3,24 +3,24 @@ parameters: # Transformation rules resources ibexa.api.storage_engine.transformation_rules.resources: - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr" + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/ascii.tr' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/basic.tr' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/cyrillic.tr' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/greek.tr' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/hebrew.tr' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/latin.tr' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/search.tr' # Using preprocessed files: ibexa.api.storage_engine.preprocessed_transformation_rules.resources: - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr.result" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr.result" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr.result" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr.result" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr.result" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr.result" - - "%ibexa.kernel.root_dir%/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr.result" + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/ascii.tr.result.php' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/basic.tr.result.php' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/cyrillic.tr.result.php' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/greek.tr.result.php' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/hebrew.tr.result.php' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/latin.tr.result.php' + - '%ibexa.kernel.root_dir%/src/lib/Resources/slug_converter/transformations/search.tr.result.php' services: Ibexa\Core\Persistence\FieldTypeRegistry: diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr b/src/lib/Resources/slug_converter/transformations/ascii.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr rename to src/lib/Resources/slug_converter/transformations/ascii.tr diff --git a/src/lib/Resources/slug_converter/transformations/ascii.tr.result.php b/src/lib/Resources/slug_converter/transformations/ascii.tr.result.php new file mode 100644 index 0000000000..c7087e900a --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/ascii.tr.result.php @@ -0,0 +1,224 @@ + [ + 0 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0041', + 'srcEnd' => 'U+005A', + 'op' => '+', + 'dest' => '20', + ], + ], + ], + 'ascii_uppercase' => [ + 0 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0061', + 'srcEnd' => 'U+007A', + 'op' => '-', + 'dest' => '20', + ], + ], + ], + 'ascii_search_cleanup' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0023', + 'dest' => 'U+0020', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0024', + 'dest' => 'U+0020', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0026', + 'dest' => 'U+0020', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+005E', + 'dest' => 'U+0020', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+007B', + 'dest' => 'U+0020', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+007D', + 'dest' => 'U+0020', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+007C', + 'dest' => 'U+0020', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0040', + 'dest' => 'U+0020', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+003A', + 'dest' => 'U+0020', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+003B', + 'dest' => 'U+0020', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+002C', + 'dest' => 'U+0020', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0028', + 'dest' => 'U+0020', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0029', + 'dest' => 'U+0020', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+002D', + 'dest' => 'U+0020', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+002B', + 'dest' => 'U+0020', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+002F', + 'dest' => 'U+0020', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+005B', + 'dest' => 'U+0020', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+005D', + 'dest' => 'U+0020', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+005C', + 'dest' => 'U+0020', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+003C', + 'dest' => 'U+0020', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+003E', + 'dest' => 'U+0020', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+003D', + 'dest' => 'U+0020', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0027', + 'dest' => 'U+0020', + ], + ], + 23 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0060', + 'dest' => 'U+0020', + ], + ], + 24 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+0000', + 'srcEnd' => 'U+0009', + 'dest' => 'U+0020', + ], + ], + 25 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+000B', + 'srcEnd' => 'U+000C', + 'dest' => 'U+0020', + ], + ], + 26 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+000E', + 'srcEnd' => 'U+001F', + 'dest' => 'U+0020', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr b/src/lib/Resources/slug_converter/transformations/basic.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr rename to src/lib/Resources/slug_converter/transformations/basic.tr diff --git a/src/lib/Resources/slug_converter/transformations/basic.tr.result.php b/src/lib/Resources/slug_converter/transformations/basic.tr.result.php new file mode 100644 index 0000000000..4b7e40fc64 --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/basic.tr.result.php @@ -0,0 +1,195 @@ + [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+202F', + 'dest' => 'U+00A0', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+FEFF', + 'dest' => 'U+00A0', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A0', + 'dest' => 'U+0020', + ], + ], + ], + 'hyphen_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+007E', + 'dest' => 'U+002D', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AD', + 'dest' => 'remove', + ], + ], + ], + 'apostrophe_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0060', + 'dest' => 'U+0027', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B4', + 'dest' => 'U+0027', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+02CA', + 'dest' => 'U+0027', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+02CB', + 'dest' => 'U+0027', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+02CF', + 'dest' => 'U+0027', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+02CE', + 'dest' => 'U+0027', + ], + ], + ], + 'doublequote_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AB', + 'dest' => 'U+0022', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BB', + 'dest' => 'U+0022', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+02DD', + 'dest' => 'U+0027', + ], + ], + ], + 'apostrophe_to_doublequote' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0027', + 'dest' => 'U+0022', + ], + ], + ], + 'special_decompose' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A9', + 'dest' => '"(C)"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AE', + 'dest' => '"(R)"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B1', + 'dest' => '"+-"', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B2', + 'dest' => '"2"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B3', + 'dest' => '"3"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B9', + 'dest' => '"1"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BA', + 'dest' => '"1"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BC', + 'dest' => '"1/4"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BD', + 'dest' => '"1/2"', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BE', + 'dest' => '"3/4"', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr b/src/lib/Resources/slug_converter/transformations/cyrillic.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr rename to src/lib/Resources/slug_converter/transformations/cyrillic.tr diff --git a/src/lib/Resources/slug_converter/transformations/cyrillic.tr.result.php b/src/lib/Resources/slug_converter/transformations/cyrillic.tr.result.php new file mode 100644 index 0000000000..5ee5955ad8 --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/cyrillic.tr.result.php @@ -0,0 +1,1200 @@ + [ + 0 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0450', + 'srcEnd' => 'U+045F', + 'op' => '-', + 'dest' => 'U+0050', + ], + ], + 1 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0430', + 'srcEnd' => 'U+044F', + 'op' => '-', + 'dest' => 'U+0020', + ], + ], + 2 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0461', + 'srcEnd' => 'U+0481', + 'modulo' => '02', + 'op' => '-', + 'dest' => 'U+0001', + ], + ], + 3 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+048B', + 'srcEnd' => 'U+04BF', + 'modulo' => '02', + 'op' => '-', + 'dest' => 'U+0001', + ], + ], + 4 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+04C2', + 'srcEnd' => 'U+04CC', + 'modulo' => '02', + 'op' => '-', + 'dest' => 'U+0001', + ], + ], + 5 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+04D1', + 'srcEnd' => 'U+04F5', + 'modulo' => '02', + 'op' => '-', + 'dest' => 'U+0001', + ], + ], + 6 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0501', + 'srcEnd' => 'U+050F', + 'modulo' => '02', + 'op' => '-', + 'dest' => 'U+0001', + ], + ], + ], + 'cyrillic_lowercase' => [ + 0 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0400', + 'srcEnd' => 'U+040F', + 'op' => '+', + 'dest' => 'U+0050', + ], + ], + 1 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0410', + 'srcEnd' => 'U+042F', + 'op' => '+', + 'dest' => 'U+0020', + ], + ], + 2 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0460', + 'srcEnd' => 'U+0480', + 'modulo' => '02', + 'op' => '+', + 'dest' => 'U+0001', + ], + ], + 3 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+048A', + 'srcEnd' => 'U+04BE', + 'modulo' => '02', + 'op' => '+', + 'dest' => 'U+0001', + ], + ], + 4 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+04C1', + 'srcEnd' => 'U+04CD', + 'modulo' => '02', + 'op' => '+', + 'dest' => 'U+0001', + ], + ], + 5 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+04D0', + 'srcEnd' => 'U+04F4', + 'modulo' => '02', + 'op' => '+', + 'dest' => 'U+0001', + ], + ], + 6 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0500', + 'srcEnd' => 'U+050E', + 'modulo' => '02', + 'op' => '+', + 'dest' => 'U+0001', + ], + ], + ], + 'cyrillic_diacritical' => [ + 0 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+0400', + 'srcEnd' => 'U+0401', + 'dest' => 'U+0415', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0403', + 'dest' => 'U+0413', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0407', + 'dest' => 'U+0406', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040C', + 'dest' => 'U+041A', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040D', + 'dest' => 'U+0418', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040E', + 'dest' => 'U+0423', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0419', + 'dest' => 'U+0418', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0439', + 'dest' => 'U+0438', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0450', + 'dest' => 'U+0435', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0451', + 'dest' => 'U+0435', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0453', + 'dest' => 'U+0433', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0457', + 'dest' => 'U+0456', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045C', + 'dest' => 'U+043A', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045D', + 'dest' => 'U+0438', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045E', + 'dest' => 'U+0443', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0476', + 'dest' => 'U+0474', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0477', + 'dest' => 'U+0475', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04C1', + 'dest' => 'U+0416', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04C2', + 'dest' => 'U+0436', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04D0', + 'dest' => 'U+0410', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04D1', + 'dest' => 'U+0430', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04D2', + 'dest' => 'U+0410', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04D3', + 'dest' => 'U+0430', + ], + ], + 23 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04D6', + 'dest' => 'U+0415', + ], + ], + 24 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04D7', + 'dest' => 'U+0435', + ], + ], + 25 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04DA', + 'dest' => 'U+04D8', + ], + ], + 26 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04DB', + 'dest' => 'U+04D9', + ], + ], + 27 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04DC', + 'dest' => 'U+0416', + ], + ], + 28 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04DD', + 'dest' => 'U+0436', + ], + ], + 29 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04DE', + 'dest' => 'U+0417', + ], + ], + 30 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04DF', + 'dest' => 'U+0437', + ], + ], + 31 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04E2', + 'dest' => 'U+0418', + ], + ], + 32 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04E3', + 'dest' => 'U+0438', + ], + ], + 33 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04E4', + 'dest' => 'U+0418', + ], + ], + 34 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04E5', + 'dest' => 'U+0438', + ], + ], + 35 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04E6', + 'dest' => 'U+041E', + ], + ], + 36 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04E7', + 'dest' => 'U+043E', + ], + ], + 37 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04EA', + 'dest' => 'U+04E8', + ], + ], + 38 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04EB', + 'dest' => 'U+04E9', + ], + ], + 39 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04EC', + 'dest' => 'U+042D', + ], + ], + 40 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04ED', + 'dest' => 'U+044D', + ], + ], + 41 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04EE', + 'dest' => 'U+0423', + ], + ], + 42 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04EF', + 'dest' => 'U+0443', + ], + ], + 43 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F0', + 'dest' => 'U+0423', + ], + ], + 44 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F1', + 'dest' => 'U+0443', + ], + ], + 45 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F2', + 'dest' => 'U+0423', + ], + ], + 46 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F3', + 'dest' => 'U+0443', + ], + ], + 47 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F4', + 'dest' => 'U+0427', + ], + ], + 48 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F5', + 'dest' => 'U+0447', + ], + ], + 49 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F8', + 'dest' => 'U+042B', + ], + ], + 50 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+04F9', + 'dest' => 'U+044B', + ], + ], + ], + 'cyrillic_transliterate_ascii' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0400', + 'dest' => '"IE"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0401', + 'dest' => '"IO"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0402', + 'dest' => '"D"', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0403', + 'dest' => '"G"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0404', + 'dest' => '"IE"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0405', + 'dest' => '"DS"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0406', + 'dest' => '"II"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0407', + 'dest' => '"YI"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0408', + 'dest' => '"J"', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0409', + 'dest' => '"LJ"', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040A', + 'dest' => '"NJ"', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040B', + 'dest' => '"Ts"', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040C', + 'dest' => '"KJ"', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040D', + 'dest' => '"I"', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040E', + 'dest' => '"V"', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+040F', + 'dest' => '"DZ"', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0410', + 'dest' => '"A"', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0411', + 'dest' => '"B"', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0412', + 'dest' => '"V"', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0413', + 'dest' => '"G"', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0414', + 'dest' => '"D"', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0415', + 'dest' => '"E"', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0416', + 'dest' => '"ZH"', + ], + ], + 23 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0417', + 'dest' => '"Z"', + ], + ], + 24 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0418', + 'dest' => '"I"', + ], + ], + 25 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0419', + 'dest' => '"J"', + ], + ], + 26 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+041A', + 'dest' => '"K"', + ], + ], + 27 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+041B', + 'dest' => '"L"', + ], + ], + 28 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+041C', + 'dest' => '"M"', + ], + ], + 29 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+041D', + 'dest' => '"N"', + ], + ], + 30 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+041E', + 'dest' => '"O"', + ], + ], + 31 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+041F', + 'dest' => '"P"', + ], + ], + 32 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0420', + 'dest' => '"R"', + ], + ], + 33 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0421', + 'dest' => '"S"', + ], + ], + 34 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0422', + 'dest' => '"T"', + ], + ], + 35 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0423', + 'dest' => '"U"', + ], + ], + 36 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0424', + 'dest' => '"F"', + ], + ], + 37 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0425', + 'dest' => '"H"', + ], + ], + 38 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0426', + 'dest' => '"C"', + ], + ], + 39 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0427', + 'dest' => '"CH"', + ], + ], + 40 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0428', + 'dest' => '"SH"', + ], + ], + 41 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0429', + 'dest' => '"SCH"', + ], + ], + 42 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+042A', + 'dest' => '"\\\'"', + ], + ], + 43 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+042B', + 'dest' => '"Y"', + ], + ], + 44 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+042C', + 'dest' => '"\\\'"', + ], + ], + 45 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+042D', + 'dest' => '"E"', + ], + ], + 46 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+042E', + 'dest' => '"YU"', + ], + ], + 47 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+042F', + 'dest' => '"YA"', + ], + ], + 48 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0430', + 'dest' => '"a"', + ], + ], + 49 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0431', + 'dest' => '"b"', + ], + ], + 50 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0432', + 'dest' => '"v"', + ], + ], + 51 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0433', + 'dest' => '"g"', + ], + ], + 52 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0434', + 'dest' => '"d"', + ], + ], + 53 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0435', + 'dest' => '"e"', + ], + ], + 54 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0436', + 'dest' => '"zh"', + ], + ], + 55 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0437', + 'dest' => '"z"', + ], + ], + 56 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0438', + 'dest' => '"i"', + ], + ], + 57 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0439', + 'dest' => '"j"', + ], + ], + 58 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+043A', + 'dest' => '"k"', + ], + ], + 59 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+043B', + 'dest' => '"l"', + ], + ], + 60 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+043C', + 'dest' => '"m"', + ], + ], + 61 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+043D', + 'dest' => '"n"', + ], + ], + 62 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+043E', + 'dest' => '"o"', + ], + ], + 63 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+043F', + 'dest' => '"p"', + ], + ], + 64 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0440', + 'dest' => '"r"', + ], + ], + 65 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0441', + 'dest' => '"s"', + ], + ], + 66 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0442', + 'dest' => '"t"', + ], + ], + 67 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0443', + 'dest' => '"u"', + ], + ], + 68 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0444', + 'dest' => '"f"', + ], + ], + 69 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0445', + 'dest' => '"h"', + ], + ], + 70 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0446', + 'dest' => '"c"', + ], + ], + 71 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0447', + 'dest' => '"ch"', + ], + ], + 72 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0448', + 'dest' => '"sh"', + ], + ], + 73 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0449', + 'dest' => '"sch"', + ], + ], + 74 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+044A', + 'dest' => '"\\\'"', + ], + ], + 75 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+044B', + 'dest' => '"y"', + ], + ], + 76 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+044C', + 'dest' => '"\\\'"', + ], + ], + 77 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+044D', + 'dest' => '"e"', + ], + ], + 78 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+044E', + 'dest' => '"yu"', + ], + ], + 79 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+044F', + 'dest' => '"ya"', + ], + ], + 80 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0450', + 'dest' => '"ie"', + ], + ], + 81 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0451', + 'dest' => '"io"', + ], + ], + 82 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0452', + 'dest' => '"dj"', + ], + ], + 83 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0453', + 'dest' => '"g"', + ], + ], + 84 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0454', + 'dest' => '"e"', + ], + ], + 85 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0455', + 'dest' => '"z"', + ], + ], + 86 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0456', + 'dest' => '"i"', + ], + ], + 87 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0457', + 'dest' => '"yi"', + ], + ], + 88 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0458', + 'dest' => '"j"', + ], + ], + 89 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0459', + 'dest' => '"lj"', + ], + ], + 90 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045A', + 'dest' => '"nj"', + ], + ], + 91 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045B', + 'dest' => '"c"', + ], + ], + 92 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045C', + 'dest' => '"kj"', + ], + ], + 93 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045D', + 'dest' => '"i"', + ], + ], + 94 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045E', + 'dest' => '"v"', + ], + ], + 95 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+045F', + 'dest' => '"dz"', + ], + ], + ], + 'cyrillic_search_cleanup' => [ + 0 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+0482', + 'srcEnd' => 'U+0486', + 'dest' => 'U+0020', + ], + ], + 1 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+0488', + 'srcEnd' => 'U+0489', + 'dest' => 'U+0020', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr b/src/lib/Resources/slug_converter/transformations/greek.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr rename to src/lib/Resources/slug_converter/transformations/greek.tr diff --git a/src/lib/Resources/slug_converter/transformations/greek.tr.result.php b/src/lib/Resources/slug_converter/transformations/greek.tr.result.php new file mode 100644 index 0000000000..a1b6fde344 --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/greek.tr.result.php @@ -0,0 +1,1181 @@ + [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AC', + 'dest' => 'U+0386', + ], + ], + 1 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+03AD', + 'srcEnd' => 'U+03AF', + 'op' => '-', + 'dest' => 'U+0025', + ], + ], + 2 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+03B1', + 'srcEnd' => 'U+03C1', + 'op' => '-', + 'dest' => 'U+0020', + ], + ], + 3 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+03C3', + 'srcEnd' => 'U+03CB', + 'op' => '-', + 'dest' => 'U+0020', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CC', + 'dest' => 'U+038C', + ], + ], + 5 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+03CD', + 'srcEnd' => 'U+03CE', + 'op' => '-', + 'dest' => 'U+003F', + ], + ], + 6 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+03DB', + 'srcEnd' => 'U+03EF', + 'modulo' => '02', + 'op' => '-', + 'dest' => 'U+0001', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D0', + 'dest' => 'U+0392', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D1', + 'dest' => 'U+0398', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D5', + 'dest' => 'U+03A6', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D6', + 'dest' => 'U+03A0', + ], + ], + ], + 'greek_lowercase' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0386', + 'dest' => 'U+03AC', + ], + ], + 1 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0388', + 'srcEnd' => 'U+038A', + 'op' => '+', + 'dest' => 'U+0025', + ], + ], + 2 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+0391', + 'srcEnd' => 'U+03A1', + 'op' => '+', + 'dest' => 'U+0020', + ], + ], + 3 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+03A3', + 'srcEnd' => 'U+03AB', + 'op' => '+', + 'dest' => 'U+0020', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038C', + 'dest' => 'U+03CC', + ], + ], + 5 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+038E', + 'srcEnd' => 'U+038F', + 'op' => '+', + 'dest' => 'U+003F', + ], + ], + 6 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+03DA', + 'srcEnd' => 'U+03EE', + 'modulo' => '02', + 'op' => '+', + 'dest' => 'U+0001', + ], + ], + ], + 'greek_diacritical' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0386', + 'dest' => 'U+0391', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0388', + 'dest' => 'U+0395', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0389', + 'dest' => 'U+0397', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038A', + 'dest' => 'U+0399', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038C', + 'dest' => 'U+039F', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038E', + 'dest' => 'U+03A5', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038F', + 'dest' => 'U+03A9', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0390', + 'dest' => 'U+03CA', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AA', + 'dest' => 'U+0399', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AB', + 'dest' => 'U+03A5', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AC', + 'dest' => 'U+03B1', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AD', + 'dest' => 'U+03B5', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AE', + 'dest' => 'U+03B7', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AF', + 'dest' => 'U+03B9', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B0', + 'dest' => 'U+03CB', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CA', + 'dest' => 'U+03B9', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CB', + 'dest' => 'U+03C5', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CC', + 'dest' => 'U+03BF', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CD', + 'dest' => 'U+03C5', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CE', + 'dest' => 'U+03C9', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D4', + 'dest' => 'U+03D2', + ], + ], + ], + 'greek_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+037A', + 'dest' => 'U+0020', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+037E', + 'dest' => 'U+003F', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0384', + 'dest' => 'U+0020', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0385', + 'dest' => 'U+00A8', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0387', + 'dest' => 'U+00B7', + ], + ], + ], + 'greek_transliterate_ascii' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0374', + 'dest' => '"\\\'"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0375', + 'dest' => '"\\\'"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+037A', + 'dest' => '""', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+037E', + 'dest' => '";"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0384', + 'dest' => '"\\\'"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0385', + 'dest' => '";"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0386', + 'dest' => '"Ha"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0388', + 'dest' => '"He"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0389', + 'dest' => '"He"', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038A', + 'dest' => '"Hi"', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038C', + 'dest' => '"Ho"', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038E', + 'dest' => '"Hu"', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+038F', + 'dest' => '"Ho"', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0390', + 'dest' => '"I"', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0391', + 'dest' => '"A"', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0392', + 'dest' => '"V"', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0393', + 'dest' => '"G"', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0394', + 'dest' => '"D"', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0395', + 'dest' => '"E"', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0396', + 'dest' => '"Z"', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0397', + 'dest' => '"E"', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0398', + 'dest' => '"Th"', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0399', + 'dest' => '"I"', + ], + ], + 23 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+039A', + 'dest' => '"K"', + ], + ], + 24 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+039B', + 'dest' => '"L"', + ], + ], + 25 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+039C', + 'dest' => '"M"', + ], + ], + 26 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+039D', + 'dest' => '"N"', + ], + ], + 27 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+039E', + 'dest' => '"X"', + ], + ], + 28 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+039F', + 'dest' => '"O"', + ], + ], + 29 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A0', + 'dest' => '"P"', + ], + ], + 30 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A1', + 'dest' => '"R"', + ], + ], + 31 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A3', + 'dest' => '"S"', + ], + ], + 32 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A4', + 'dest' => '"T"', + ], + ], + 33 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A5', + 'dest' => '"Y"', + ], + ], + 34 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A6', + 'dest' => '"Ph"', + ], + ], + 35 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A7', + 'dest' => '"Ch"', + ], + ], + 36 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A8', + 'dest' => '"Ps"', + ], + ], + 37 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03A9', + 'dest' => '"O"', + ], + ], + 38 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AA', + 'dest' => '"I"', + ], + ], + 39 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AB', + 'dest' => '"Y"', + ], + ], + 40 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AC', + 'dest' => '"ha"', + ], + ], + 41 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AD', + 'dest' => '"he"', + ], + ], + 42 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AE', + 'dest' => '"he"', + ], + ], + 43 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03AF', + 'dest' => '"hi"', + ], + ], + 44 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B0', + 'dest' => '"y"', + ], + ], + 45 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B1', + 'dest' => '"a"', + ], + ], + 46 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B2', + 'dest' => '"v"', + ], + ], + 47 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B3', + 'dest' => '"g"', + ], + ], + 48 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B4', + 'dest' => '"d"', + ], + ], + 49 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B5', + 'dest' => '"e"', + ], + ], + 50 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B6', + 'dest' => '"z"', + ], + ], + 51 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B7', + 'dest' => '"e"', + ], + ], + 52 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B8', + 'dest' => '"th"', + ], + ], + 53 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03B9', + 'dest' => '"i"', + ], + ], + 54 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03BA', + 'dest' => '"k"', + ], + ], + 55 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03BB', + 'dest' => '"l"', + ], + ], + 56 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03BC', + 'dest' => '"m"', + ], + ], + 57 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03BD', + 'dest' => '"n"', + ], + ], + 58 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03BE', + 'dest' => '"x"', + ], + ], + 59 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03BF', + 'dest' => '"o"', + ], + ], + 60 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C0', + 'dest' => '"p"', + ], + ], + 61 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C1', + 'dest' => '"r"', + ], + ], + 62 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C2', + 'dest' => '"s"', + ], + ], + 63 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C3', + 'dest' => '"s"', + ], + ], + 64 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C4', + 'dest' => '"t"', + ], + ], + 65 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C5', + 'dest' => '"y"', + ], + ], + 66 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C6', + 'dest' => '"ph"', + ], + ], + 67 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C7', + 'dest' => '"ch"', + ], + ], + 68 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C8', + 'dest' => '"ps"', + ], + ], + 69 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03C9', + 'dest' => '"o"', + ], + ], + 70 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CA', + 'dest' => '"i"', + ], + ], + 71 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CB', + 'dest' => '"y"', + ], + ], + 72 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CC', + 'dest' => '"ho"', + ], + ], + 73 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CD', + 'dest' => '"hu"', + ], + ], + 74 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03CE', + 'dest' => '"ho"', + ], + ], + 75 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D0', + 'dest' => '"b"', + ], + ], + 76 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D1', + 'dest' => '"th"', + ], + ], + 77 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D2', + 'dest' => '"Y"', + ], + ], + 78 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D3', + 'dest' => '"Y"', + ], + ], + 79 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D4', + 'dest' => '"Y"', + ], + ], + 80 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D5', + 'dest' => '"phi"', + ], + ], + 81 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D6', + 'dest' => '"pi"', + ], + ], + 82 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D7', + 'dest' => '"&"', + ], + ], + 83 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D8', + 'dest' => '"K"', + ], + ], + 84 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03D9', + 'dest' => '"k"', + ], + ], + 85 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03DA', + 'dest' => '"6"', + ], + ], + 86 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03DB', + 'dest' => '"s"', + ], + ], + 87 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03DC', + 'dest' => '"F"', + ], + ], + 88 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03DD', + 'dest' => '"f"', + ], + ], + 89 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03DE', + 'dest' => '"K"', + ], + ], + 90 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03DF', + 'dest' => '"90"', + ], + ], + 91 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E0', + 'dest' => '"S"', + ], + ], + 92 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E1', + 'dest' => '"900"', + ], + ], + 93 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E2', + 'dest' => '""', + ], + ], + 94 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E3', + 'dest' => '""', + ], + ], + 95 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E4', + 'dest' => '""', + ], + ], + 96 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E5', + 'dest' => '""', + ], + ], + 97 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E6', + 'dest' => '""', + ], + ], + 98 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E7', + 'dest' => '""', + ], + ], + 99 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E8', + 'dest' => '""', + ], + ], + 100 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03E9', + 'dest' => '""', + ], + ], + 101 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03EA', + 'dest' => '""', + ], + ], + 102 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03EB', + 'dest' => '""', + ], + ], + 103 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03EC', + 'dest' => '""', + ], + ], + 104 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03ED', + 'dest' => '""', + ], + ], + 105 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03EE', + 'dest' => '""', + ], + ], + 106 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03EF', + 'dest' => '""', + ], + ], + 107 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F0', + 'dest' => '""', + ], + ], + 108 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F1', + 'dest' => '"r"', + ], + ], + 109 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F2', + 'dest' => '""', + ], + ], + 110 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F3', + 'dest' => '"j"', + ], + ], + 111 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F4', + 'dest' => '""', + ], + ], + 112 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F5', + 'dest' => '"e"', + ], + ], + 113 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F6', + 'dest' => '"e"', + ], + ], + 114 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F7', + 'dest' => '""', + ], + ], + 115 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F8', + 'dest' => '""', + ], + ], + 116 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03F9', + 'dest' => '""', + ], + ], + 117 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03FA', + 'dest' => '""', + ], + ], + 118 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+03FB', + 'dest' => '""', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr b/src/lib/Resources/slug_converter/transformations/hebrew.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr rename to src/lib/Resources/slug_converter/transformations/hebrew.tr diff --git a/src/lib/Resources/slug_converter/transformations/hebrew.tr.result.php b/src/lib/Resources/slug_converter/transformations/hebrew.tr.result.php new file mode 100644 index 0000000000..2edde57fcc --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/hebrew.tr.result.php @@ -0,0 +1,376 @@ + [ + 0 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+0591', + 'srcEnd' => 'U+05A1', + 'dest' => '""', + ], + ], + 1 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+05A3', + 'srcEnd' => 'U+05AF', + 'dest' => '""', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B0', + 'dest' => '""', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B1', + 'dest' => '"e"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B2', + 'dest' => '"a"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B3', + 'dest' => '"o"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B4', + 'dest' => '"i"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B5', + 'dest' => '"e"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B6', + 'dest' => '"e"', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B7', + 'dest' => '"a"', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B8', + 'dest' => '"e"', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05B9', + 'dest' => '"o"', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05BA', + 'dest' => '""', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05BB', + 'dest' => '"u"', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05BC', + 'dest' => '""', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05BD', + 'dest' => '""', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05BE', + 'dest' => '"\\\'"', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05BF', + 'dest' => '""', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05C0', + 'dest' => '"|"', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05C3', + 'dest' => '":"', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D0', + 'dest' => '"\\\'"', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D1', + 'dest' => '"b"', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D2', + 'dest' => '"g"', + ], + ], + 23 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D3', + 'dest' => '"d"', + ], + ], + 24 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D4', + 'dest' => '"h"', + ], + ], + 25 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D5', + 'dest' => '"o"', + ], + ], + 26 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D6', + 'dest' => '"z"', + ], + ], + 27 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D7', + 'dest' => '"h"', + ], + ], + 28 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D8', + 'dest' => '"t"', + ], + ], + 29 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05D9', + 'dest' => '"y"', + ], + ], + 30 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05DA', + 'dest' => '"k"', + ], + ], + 31 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05DB', + 'dest' => '"k"', + ], + ], + 32 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05DC', + 'dest' => '"l"', + ], + ], + 33 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05DD', + 'dest' => '"m"', + ], + ], + 34 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05DE', + 'dest' => '"m"', + ], + ], + 35 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05DF', + 'dest' => '"n"', + ], + ], + 36 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E0', + 'dest' => '"n"', + ], + ], + 37 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E1', + 'dest' => '"s"', + ], + ], + 38 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E2', + 'dest' => '"\\\'"', + ], + ], + 39 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E3', + 'dest' => '"p"', + ], + ], + 40 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E4', + 'dest' => '"p"', + ], + ], + 41 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E5', + 'dest' => '"z"', + ], + ], + 42 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E6', + 'dest' => '"z"', + ], + ], + 43 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E7', + 'dest' => '"q"', + ], + ], + 44 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E8', + 'dest' => '"r"', + ], + ], + 45 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05E9', + 'dest' => '"s"', + ], + ], + 46 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05EA', + 'dest' => '"t"', + ], + ], + 47 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05F0', + 'dest' => '"ww"', + ], + ], + 48 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05F1', + 'dest' => '"wy"', + ], + ], + 49 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05F4', + 'dest' => '"\\""', + ], + ], + 50 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05F2', + 'dest' => '"yy"', + ], + ], + 51 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+05F3', + 'dest' => '"\\\'"', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr b/src/lib/Resources/slug_converter/transformations/latin.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr rename to src/lib/Resources/slug_converter/transformations/latin.tr diff --git a/src/lib/Resources/slug_converter/transformations/latin.tr.result.php b/src/lib/Resources/slug_converter/transformations/latin.tr.result.php new file mode 100644 index 0000000000..d054bb60f2 --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/latin.tr.result.php @@ -0,0 +1,1555 @@ + [ + 0 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+00C0', + 'srcEnd' => 'U+00D6', + 'op' => '+', + 'dest' => '20', + ], + ], + 1 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+00D8', + 'srcEnd' => 'U+00DE', + 'op' => '+', + 'dest' => '20', + ], + ], + ], + 'latin1_uppercase' => [ + 0 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+00E0', + 'srcEnd' => 'U+00F6', + 'op' => '-', + 'dest' => '20', + ], + ], + 1 => [ + 'type' => 13, + 'data' => [ + 'srcStart' => 'U+00F8', + 'srcEnd' => 'U+00FE', + 'op' => '-', + 'dest' => '20', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00DF', + 'dest' => '"SS"', + ], + ], + ], + 'latin-exta_lowercase' => [ + 0 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0100', + 'srcEnd' => 'U+012E', + 'modulo' => '02', + 'op' => '+', + 'dest' => '01', + ], + ], + 1 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0132', + 'srcEnd' => 'U+0136', + 'modulo' => '02', + 'op' => '+', + 'dest' => '01', + ], + ], + 2 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0139', + 'srcEnd' => 'U+0147', + 'modulo' => '02', + 'op' => '+', + 'dest' => '01', + ], + ], + 3 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+014A', + 'srcEnd' => 'U+0176', + 'modulo' => '02', + 'op' => '+', + 'dest' => '01', + ], + ], + 4 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0179', + 'srcEnd' => 'U+017D', + 'modulo' => '02', + 'op' => '+', + 'dest' => '01', + ], + ], + ], + 'latin-exta_uppercase' => [ + 0 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0101', + 'srcEnd' => 'U+012F', + 'modulo' => '02', + 'op' => '-', + 'dest' => '01', + ], + ], + 1 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+0133', + 'srcEnd' => 'U+0137', + 'modulo' => '02', + 'op' => '-', + 'dest' => '01', + ], + ], + 2 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+013A', + 'srcEnd' => 'U+0148', + 'modulo' => '02', + 'op' => '-', + 'dest' => '01', + ], + ], + 3 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+014B', + 'srcEnd' => 'U+0177', + 'modulo' => '02', + 'op' => '-', + 'dest' => '01', + ], + ], + 4 => [ + 'type' => 14, + 'data' => [ + 'srcStart' => 'U+017A', + 'srcEnd' => 'U+017E', + 'modulo' => '02', + 'op' => '-', + 'dest' => '01', + ], + ], + ], + 'latin_lowercase' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0178', + 'dest' => 'U+00FF', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0218', + 'dest' => 'U+0219', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+021A', + 'dest' => 'U+021B', + ], + ], + ], + 'latin_uppercase' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00FF', + 'dest' => 'U+0178', + ], + ], + ], + 'latin1_diacritical' => [ + 0 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00C0', + 'srcEnd' => 'U+00C4', + 'dest' => '"A"', + ], + ], + 1 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00E0', + 'srcEnd' => 'U+00E4', + 'dest' => '"a"', + ], + ], + 2 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00C8', + 'srcEnd' => 'U+00CB', + 'dest' => '"E"', + ], + ], + 3 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00E8', + 'srcEnd' => 'U+00EB', + 'dest' => '"e"', + ], + ], + 4 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00CC', + 'srcEnd' => 'U+00CF', + 'dest' => '"I"', + ], + ], + 5 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00EC', + 'srcEnd' => 'U+00EF', + 'dest' => '"i"', + ], + ], + 6 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00D2', + 'srcEnd' => 'U+00D6', + 'dest' => '"O"', + ], + ], + 7 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00F2', + 'srcEnd' => 'U+00F6', + 'dest' => '"o"', + ], + ], + 8 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00D9', + 'srcEnd' => 'U+00DC', + 'dest' => '"U"', + ], + ], + 9 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00F9', + 'srcEnd' => 'U+00FC', + 'dest' => '"u"', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00DD', + 'dest' => '"Y"', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+009F', + 'dest' => '"Y"', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00FD', + 'dest' => '"y"', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00FF', + 'dest' => '"y"', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00C7', + 'dest' => '"C"', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00E7', + 'dest' => '"c"', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00D0', + 'dest' => '"D"', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00F0', + 'dest' => '"d"', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00D1', + 'dest' => '"N"', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00F1', + 'dest' => '"n"', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00DE', + 'dest' => '"TH"', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00FE', + 'dest' => '"th"', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00DF', + 'dest' => '"ss"', + ], + ], + ], + 'latin-exta_diacritical' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0100', + 'dest' => '"A"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0102', + 'dest' => '"A"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0104', + 'dest' => '"A"', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0101', + 'dest' => '"a"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0103', + 'dest' => '"a"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0105', + 'dest' => '"a"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0106', + 'dest' => '"C"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0108', + 'dest' => '"C"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+010A', + 'dest' => '"C"', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+010C', + 'dest' => '"C"', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0107', + 'dest' => '"c"', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0109', + 'dest' => '"c"', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+010B', + 'dest' => '"c"', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+010D', + 'dest' => '"c"', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+010E', + 'dest' => '"D"', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0110', + 'dest' => '"D"', + ], + ], + 16 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+010F', + 'dest' => '"d"', + ], + ], + 17 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0111', + 'dest' => '"d"', + ], + ], + 18 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0112', + 'dest' => '"E"', + ], + ], + 19 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0114', + 'dest' => '"E"', + ], + ], + 20 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0116', + 'dest' => '"E"', + ], + ], + 21 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0118', + 'dest' => '"E"', + ], + ], + 22 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+011A', + 'dest' => '"E"', + ], + ], + 23 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0113', + 'dest' => '"e"', + ], + ], + 24 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0115', + 'dest' => '"e"', + ], + ], + 25 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0117', + 'dest' => '"e"', + ], + ], + 26 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0119', + 'dest' => '"e"', + ], + ], + 27 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+011B', + 'dest' => '"e"', + ], + ], + 28 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+011C', + 'dest' => '"G"', + ], + ], + 29 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+011E', + 'dest' => '"G"', + ], + ], + 30 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0120', + 'dest' => '"G"', + ], + ], + 31 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0122', + 'dest' => '"G"', + ], + ], + 32 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+011D', + 'dest' => '"g"', + ], + ], + 33 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+011F', + 'dest' => '"g"', + ], + ], + 34 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0121', + 'dest' => '"g"', + ], + ], + 35 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0123', + 'dest' => '"g"', + ], + ], + 36 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0124', + 'dest' => '"H"', + ], + ], + 37 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0126', + 'dest' => '"H"', + ], + ], + 38 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0125', + 'dest' => '"h"', + ], + ], + 39 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0127', + 'dest' => '"h"', + ], + ], + 40 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0128', + 'dest' => '"I"', + ], + ], + 41 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+012A', + 'dest' => '"I"', + ], + ], + 42 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+012C', + 'dest' => '"I"', + ], + ], + 43 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+012E', + 'dest' => '"I"', + ], + ], + 44 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0130', + 'dest' => '"I"', + ], + ], + 45 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0129', + 'dest' => '"i"', + ], + ], + 46 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+012B', + 'dest' => '"i"', + ], + ], + 47 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+012D', + 'dest' => '"i"', + ], + ], + 48 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+012F', + 'dest' => '"i"', + ], + ], + 49 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0131', + 'dest' => '"i"', + ], + ], + 50 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0134', + 'dest' => '"J"', + ], + ], + 51 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0135', + 'dest' => '"j"', + ], + ], + 52 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0136', + 'dest' => '"K"', + ], + ], + 53 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0137', + 'dest' => '"k"', + ], + ], + 54 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0139', + 'dest' => '"L"', + ], + ], + 55 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+013B', + 'dest' => '"L"', + ], + ], + 56 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+013D', + 'dest' => '"L"', + ], + ], + 57 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+013F', + 'dest' => '"L"', + ], + ], + 58 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0141', + 'dest' => '"L"', + ], + ], + 59 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+013A', + 'dest' => '"l"', + ], + ], + 60 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+013C', + 'dest' => '"l"', + ], + ], + 61 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+013E', + 'dest' => '"l"', + ], + ], + 62 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0140', + 'dest' => '"l"', + ], + ], + 63 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0142', + 'dest' => '"l"', + ], + ], + 64 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0143', + 'dest' => '"N"', + ], + ], + 65 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0145', + 'dest' => '"N"', + ], + ], + 66 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0147', + 'dest' => '"N"', + ], + ], + 67 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0144', + 'dest' => '"n"', + ], + ], + 68 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0146', + 'dest' => '"n"', + ], + ], + 69 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0148', + 'dest' => '"n"', + ], + ], + 70 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+014C', + 'dest' => '"O"', + ], + ], + 71 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+014E', + 'dest' => '"O"', + ], + ], + 72 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0150', + 'dest' => '"O"', + ], + ], + 73 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+014D', + 'dest' => '"o"', + ], + ], + 74 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+014F', + 'dest' => '"o"', + ], + ], + 75 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0151', + 'dest' => '"o"', + ], + ], + 76 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0154', + 'dest' => '"R"', + ], + ], + 77 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0156', + 'dest' => '"R"', + ], + ], + 78 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0158', + 'dest' => '"R"', + ], + ], + 79 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0155', + 'dest' => '"r"', + ], + ], + 80 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0157', + 'dest' => '"r"', + ], + ], + 81 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0159', + 'dest' => '"r"', + ], + ], + 82 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+015A', + 'dest' => '"S"', + ], + ], + 83 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+015C', + 'dest' => '"S"', + ], + ], + 84 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+015E', + 'dest' => '"S"', + ], + ], + 85 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0160', + 'dest' => '"S"', + ], + ], + 86 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+015B', + 'dest' => '"s"', + ], + ], + 87 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+015D', + 'dest' => '"s"', + ], + ], + 88 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+015F', + 'dest' => '"s"', + ], + ], + 89 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0161', + 'dest' => '"s"', + ], + ], + 90 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0162', + 'dest' => '"T"', + ], + ], + 91 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0164', + 'dest' => '"T"', + ], + ], + 92 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0166', + 'dest' => '"T"', + ], + ], + 93 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0163', + 'dest' => '"t"', + ], + ], + 94 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0165', + 'dest' => '"t"', + ], + ], + 95 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0167', + 'dest' => '"t"', + ], + ], + 96 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0168', + 'dest' => '"U"', + ], + ], + 97 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+016A', + 'dest' => '"U"', + ], + ], + 98 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+016C', + 'dest' => '"U"', + ], + ], + 99 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+016E', + 'dest' => '"U"', + ], + ], + 100 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0170', + 'dest' => '"U"', + ], + ], + 101 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0172', + 'dest' => '"U"', + ], + ], + 102 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0169', + 'dest' => '"u"', + ], + ], + 103 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+016B', + 'dest' => '"u"', + ], + ], + 104 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+016D', + 'dest' => '"u"', + ], + ], + 105 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+016F', + 'dest' => '"u"', + ], + ], + 106 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0171', + 'dest' => '"u"', + ], + ], + 107 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0173', + 'dest' => '"u"', + ], + ], + 108 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0174', + 'dest' => '"W"', + ], + ], + 109 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0175', + 'dest' => '"w"', + ], + ], + 110 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0176', + 'dest' => '"Y"', + ], + ], + 111 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0177', + 'dest' => '"y"', + ], + ], + 112 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0178', + 'dest' => '"Y"', + ], + ], + 113 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0179', + 'dest' => '"Z"', + ], + ], + 114 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+017B', + 'dest' => '"Z"', + ], + ], + 115 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+017D', + 'dest' => '"Z"', + ], + ], + 116 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+017A', + 'dest' => '"z"', + ], + ], + 117 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+017C', + 'dest' => '"z"', + ], + ], + 118 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+017E', + 'dest' => '"z"', + ], + ], + 119 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0218', + 'dest' => '"S"', + ], + ], + 120 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0219', + 'dest' => '"s"', + ], + ], + 121 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+021A', + 'dest' => '"T"', + ], + ], + 122 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+021B', + 'dest' => '"t"', + ], + ], + ], + 'latin1_transliterate_ascii' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00E6', + 'dest' => '"ae"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00C6', + 'dest' => '"AE"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00E5', + 'dest' => '"aa"', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00C5', + 'dest' => '"AA"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00F8', + 'dest' => '"oe"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00D8', + 'dest' => '"OE"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+009C', + 'dest' => '"oe"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+008C', + 'dest' => '"OE"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AA', + 'dest' => '"a"', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BA', + 'dest' => '"o"', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00E4', + 'dest' => '"ae"', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00F6', + 'dest' => '"oe"', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00FC', + 'dest' => '"ue"', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00C4', + 'dest' => '"Ae"', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00D6', + 'dest' => '"Oe"', + ], + ], + 15 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00DC', + 'dest' => '"Ue"', + ], + ], + ], + 'latin-exta_transliterate_ascii' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0132', + 'dest' => '"IJ"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0133', + 'dest' => '"ij"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0138', + 'dest' => '"k"', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0149', + 'dest' => '"\'n"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+014A', + 'dest' => '"N"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+014B', + 'dest' => '"n"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0152', + 'dest' => '"AE"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0153', + 'dest' => '"ae"', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+017F', + 'dest' => '"s"', + ], + ], + ], + 'math_to_ascii' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00D7', + 'dest' => '"*"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00F7', + 'dest' => '"/"', + ], + ], + ], + 'inverted_to_normal' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BF', + 'dest' => 'U+003F', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A1', + 'dest' => 'U+0021', + ], + ], + ], + 'latin_search_cleanup' => [ + 0 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00BC', + 'srcEnd' => 'U+00BE', + 'dest' => 'U+0020', + ], + ], + 1 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+00A2', + 'srcEnd' => 'U+00A7', + 'dest' => 'U+0020', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AC', + 'dest' => 'U+002D', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AF', + 'dest' => 'U+002D', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B5', + 'dest' => 'U+0020', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B6', + 'dest' => 'U+0020', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B7', + 'dest' => 'U+0020', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B8', + 'dest' => 'U+0020', + ], + ], + 8 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A6', + 'dest' => 'U+0020', + ], + ], + 9 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A7', + 'dest' => 'U+0020', + ], + ], + 10 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A8', + 'dest' => 'remove', + ], + ], + 11 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B0', + 'dest' => 'U+0020', + ], + ], + 12 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00A9', + 'dest' => 'U+0020', + ], + ], + 13 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AE', + 'dest' => 'U+0020', + ], + ], + 14 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B4', + 'dest' => 'U+0020', + ], + ], + 15 => [ + 'type' => 12, + 'data' => [ + 'srcStart' => 'U+0080', + 'srcEnd' => 'U+009F', + 'dest' => 'U+0020', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr b/src/lib/Resources/slug_converter/transformations/search.tr similarity index 100% rename from tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr rename to src/lib/Resources/slug_converter/transformations/search.tr diff --git a/src/lib/Resources/slug_converter/transformations/search.tr.result.php b/src/lib/Resources/slug_converter/transformations/search.tr.result.php new file mode 100644 index 0000000000..9d61b6039d --- /dev/null +++ b/src/lib/Resources/slug_converter/transformations/search.tr.result.php @@ -0,0 +1,130 @@ + [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+000A', + 'dest' => 'U+0020', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+000D', + 'dest' => 'U+0020', + ], + ], + ], + 'tab_search_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0008', + 'dest' => 'U+0020', + ], + ], + ], + 'specialwords_search_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00AA', + 'dest' => '"a"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BA', + 'dest' => '"o"', + ], + ], + ], + 'punctuation_normalize' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+0021', + 'dest' => 'U+002E', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+003F', + 'dest' => 'U+002E', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+002C', + 'dest' => 'U+002E', + ], + ], + ], + 'latin_search_decompose' => [ + 0 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B1', + 'dest' => '"+-"', + ], + ], + 1 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B2', + 'dest' => '"2"', + ], + ], + 2 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B3', + 'dest' => '"3"', + ], + ], + 3 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00B9', + 'dest' => '"1"', + ], + ], + 4 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BA', + 'dest' => '"1"', + ], + ], + 5 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BC', + 'dest' => '"1/4"', + ], + ], + 6 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BD', + 'dest' => '"1/2"', + ], + ], + 7 => [ + 'type' => 11, + 'data' => [ + 'src' => 'U+00BE', + 'dest' => '"3/4"', + ], + ], + ], +]; diff --git a/tests/lib/Persistence/Legacy/Content/LanguageAwareTestCase.php b/tests/lib/Persistence/Legacy/Content/LanguageAwareTestCase.php index 95d26329b8..a7da47659a 100644 --- a/tests/lib/Persistence/Legacy/Content/LanguageAwareTestCase.php +++ b/tests/lib/Persistence/Legacy/Content/LanguageAwareTestCase.php @@ -67,17 +67,18 @@ protected function getLanguageMaskGenerator() /** * Return definition-based transformation processor instance. - * - * @return Persistence\TransformationProcessor\DefinitionBased */ - protected function getDefinitionBasedTransformationProcessor() + protected function getDefinitionBasedTransformationProcessor(): Persistence\TransformationProcessor\DefinitionBased { + $ruleFiles = glob(dirname(__DIR__, 5) . '/src/lib/Resources/slug_converter/transformations/*.tr'); + self::assertNotFalse($ruleFiles, 'Failed to find transformation rules files.'); + return new Persistence\TransformationProcessor\DefinitionBased( new Persistence\TransformationProcessor\DefinitionBased\Parser(), new Persistence\TransformationProcessor\PcreCompiler( new Persistence\Utf8Converter() ), - glob(__DIR__ . '/../../../../Persistence/Tests/TransformationProcessor/_fixtures/transformations/*.tr') + $ruleFiles ); } diff --git a/tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php b/tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php index 2056c6a360..d51152291f 100644 --- a/tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php +++ b/tests/lib/Persistence/Legacy/Content/UrlAlias/SlugConverterTest.php @@ -4,6 +4,7 @@ * @copyright Copyright (C) Ibexa AS. All rights reserved. * @license For full copyright and license information view LICENSE file distributed with this source code. */ +declare(strict_types=1); namespace Ibexa\Tests\Core\Persistence\Legacy\Content\UrlAlias; @@ -13,34 +14,47 @@ use Ibexa\Core\Persistence\TransformationProcessor\PreprocessedBased; use Ibexa\Core\Persistence\Utf8Converter; use Ibexa\Tests\Core\Persistence\Legacy\TestCase; -use PHPUnit\Framework\TestSuite; +use PHPUnit\Framework\MockObject\MockObject; +use ReflectionMethod; /** * @covers \Ibexa\Core\Persistence\Legacy\Content\UrlAlias\SlugConverter */ -class SlugConverterTest extends TestCase +final class SlugConverterTest extends TestCase { - /** - * Test for the convert() method. - */ - public function testConvert() - { - $slugConverter = $this->getSlugConverterMock(['cleanupText']); - $transformationProcessor = $this->getTransformationProcessorMock(); + /** @var array */ + protected array $configuration = [ + 'transformation' => 'testTransformation1', + 'transformationGroups' => [ + 'testTransformation1' => [ + 'commands' => [ + 'test_command1', + ], + 'cleanupMethod' => 'test_cleanup1', + ], + 'testTransformation2' => [ + 'commands' => [ + 'test_command2', + ], + 'cleanupMethod' => 'test_cleanup2', + ], + ], + 'reservedNames' => [ + 'reserved', + ], + ]; - $text = 'test text č '; - $transformedText = 'test text c '; - $slug = 'test_text_c'; + protected SlugConverter $slugConverter; - $transformationProcessor->expects(self::atLeastOnce()) - ->method('transform') - ->with($text, ['test_command1']) - ->will(self::returnValue($transformedText)); + protected SlugConverter & MockObject $slugConverterMock; - $slugConverter->expects(self::once()) - ->method('cleanupText') - ->with(self::equalTo($transformedText), self::equalTo('test_cleanup1')) - ->will(self::returnValue($slug)); + protected TransformationProcessor & MockObject $transformationProcessorMock; + + public function testConvert(): void + { + $slug = 'test_text_c'; + $text = 'test text č '; + $slugConverter = $this->mockSlugConverter($slug, $text); self::assertEquals( $slug, @@ -48,27 +62,12 @@ public function testConvert() ); } - /** - * Test for the convert() method. - */ - public function testConvertWithDefaultTextFallback() + public function testConvertWithDefaultTextFallback(): void { - $slugConverter = $this->getSlugConverterMock(['cleanupText']); - $transformationProcessor = $this->getTransformationProcessorMock(); - - $defaultText = 'test text č '; - $transformedText = 'test text c '; $slug = 'test_text_c'; + $defaultText = 'test text č '; - $transformationProcessor->expects(self::atLeastOnce()) - ->method('transform') - ->with($defaultText, ['test_command1']) - ->will(self::returnValue($transformedText)); - - $slugConverter->expects(self::once()) - ->method('cleanupText') - ->with(self::equalTo($transformedText), self::equalTo('test_cleanup1')) - ->will(self::returnValue($slug)); + $slugConverter = $this->mockSlugConverter($slug, $defaultText); self::assertEquals( $slug, @@ -79,7 +78,7 @@ public function testConvertWithDefaultTextFallback() /** * Test for the convert() method. */ - public function testConvertWithGivenTransformation() + public function testConvertWithGivenTransformation(): void { $slugConverter = $this->getSlugConverterMock(['cleanupText']); $transformationProcessor = $this->getTransformationProcessorMock(); @@ -91,12 +90,12 @@ public function testConvertWithGivenTransformation() $transformationProcessor->expects(self::atLeastOnce()) ->method('transform') ->with($text, ['test_command2']) - ->will(self::returnValue($transformedText)); + ->willReturn($transformedText); $slugConverter->expects(self::once()) ->method('cleanupText') ->with(self::equalTo($transformedText), self::equalTo('test_cleanup2')) - ->will(self::returnValue($slug)); + ->willReturn($slug); self::assertEquals( $slug, @@ -104,14 +103,15 @@ public function testConvertWithGivenTransformation() ); } - public function providerForTestGetUniqueCounterValue() + /** + * @return iterable + */ + public static function providerForTestGetUniqueCounterValue(): iterable { - return [ - ['reserved', true, 2], - ['reserved', false, 1], - ['not-reserved', true, 1], - ['not-reserved', false, 1], - ]; + yield ['reserved', true, 2]; + yield ['reserved', false, 1]; + yield ['not-reserved', true, 1]; + yield ['not-reserved', false, 1]; } /** @@ -119,9 +119,9 @@ public function providerForTestGetUniqueCounterValue() * * @dataProvider providerForTestGetUniqueCounterValue */ - public function testGetUniqueCounterValue($text, $isRootLevel, $returnValue) + public function testGetUniqueCounterValue(string $text, bool $isRootLevel, int $returnValue): void { - $slugConverter = $this->getMockedSlugConverter(); + $slugConverter = $this->getSlugConverter(); self::assertEquals( $returnValue, @@ -129,24 +129,25 @@ public function testGetUniqueCounterValue($text, $isRootLevel, $returnValue) ); } - public function cleanupTextData() + /** + * @return iterable + */ + public static function cleanupTextData(): iterable { - return [ - [ + yield [ '.Ph\'nglui mglw\'nafh, Cthulhu R\'lyeh wgah\'nagl fhtagn!?...', 'url_cleanup', 'Ph-nglui-mglw-nafh-Cthulhu-R-lyeh-wgah-nagl-fhtagn!', - ], - [ + ]; + yield [ '.Ph\'nglui mglw\'nafh, Cthulhu R\'lyeh wgah\'nagl fhtagn!?...', 'url_cleanup_iri', 'Ph\'nglui-mglw\'nafh,-Cthulhu-R\'lyeh-wgah\'nagl-fhtagn!', - ], - [ + ]; + yield [ '.Ph\'nglui mglw\'nafh, Cthulhu R\'lyeh wgah\'nagl fhtagn!?...', 'url_cleanup_compat', 'ph_nglui_mglw_nafh_cthulhu_r_lyeh_wgah_nagl_fhtagn', - ], ]; } @@ -155,15 +156,15 @@ public function cleanupTextData() * * @dataProvider cleanupTextData */ - public function testCleanupText($text, $method, $expected) + public function testCleanupText(string $text, string $method, string $expected): void { - $testMethod = new \ReflectionMethod( + $testMethod = new ReflectionMethod( SlugConverter::class, 'cleanupText' ); $testMethod->setAccessible(true); - $actual = $testMethod->invoke($this->getMockedSlugConverter(), $text, $method); + $actual = $testMethod->invoke($this->getSlugConverter(), $text, $method); self::assertEquals( $expected, @@ -171,48 +172,48 @@ public function testCleanupText($text, $method, $expected) ); } - public function convertData() + /** + * @return iterable + */ + public static function convertData(): iterable { - return [ - [ + yield [ '.Ph\'nglui mglw\'nafh, Cthulhu R\'lyeh wgah\'nagl fhtagn!?...', '\'_1\'', 'urlalias', 'Ph-nglui-mglw-nafh-Cthulhu-R-lyeh-wgah-nagl-fhtagn!', - ], - [ + ]; + yield [ '.Ph\'nglui mglw\'nafh, Cthulhu R\'lyeh wgah\'nagl fhtagn!?...', '\'_1\'', 'urlalias_iri', 'Ph\'nglui-mglw\'nafh,-Cthulhu-R\'lyeh-wgah\'nagl-fhtagn!', - ], - [ + ]; + yield [ '.Ph\'nglui mglw\'nafh, Cthulhu R\'lyeh wgah\'nagl fhtagn!?...', '\'_1\'', 'urlalias_compat', 'ph_nglui_mglw_nafh_cthulhu_r_lyeh_wgah_nagl_fhtagn', - ], ]; } /** - * Test for the convert() method. - * * @dataProvider convertData * * @depends testCleanupText */ - public function testConvertNoMocking($text, $defaultText, $transformation, $expected) + public function testConvertNoMocking(string $text, string $defaultText, string $transformation, string $expected): void { + $transformationsDirectory = dirname(__DIR__, 6) . '/src/lib/Resources/slug_converter/transformations'; $transformationProcessor = new PreprocessedBased( new PcreCompiler( new Utf8Converter() ), [ - __DIR__ . '/../../../TransformationProcessor/_fixtures/transformations/ascii.tr.result', - __DIR__ . '/../../../TransformationProcessor/_fixtures/transformations/basic.tr.result', - __DIR__ . '/../../../TransformationProcessor/_fixtures/transformations/latin.tr.result', - __DIR__ . '/../../../TransformationProcessor/_fixtures/transformations/search.tr.result', + "$transformationsDirectory/ascii.tr.result.php", + "$transformationsDirectory/basic.tr.result.php", + "$transformationsDirectory/latin.tr.result.php", + "$transformationsDirectory/search.tr.result.php", ] ); $slugConverter = new SlugConverter($transformationProcessor); @@ -223,41 +224,7 @@ public function testConvertNoMocking($text, $defaultText, $transformation, $expe ); } - /** @var array */ - protected $configuration = [ - 'transformation' => 'testTransformation1', - 'transformationGroups' => [ - 'testTransformation1' => [ - 'commands' => [ - 'test_command1', - ], - 'cleanupMethod' => 'test_cleanup1', - ], - 'testTransformation2' => [ - 'commands' => [ - 'test_command2', - ], - 'cleanupMethod' => 'test_cleanup2', - ], - ], - 'reservedNames' => [ - 'reserved', - ], - ]; - - /** @var \Ibexa\Core\Persistence\Legacy\Content\UrlAlias\SlugConverter */ - protected $slugConverter; - - /** @var \PHPUnit\Framework\MockObject\MockObject */ - protected $slugConverterMock; - - /** @var \PHPUnit\Framework\MockObject\MockObject */ - protected $transformationProcessorMock; - - /** - * @return \Ibexa\Core\Persistence\Legacy\Content\UrlAlias\SlugConverter - */ - protected function getMockedSlugConverter() + protected function getSlugConverter(): SlugConverter { if (!isset($this->slugConverter)) { $this->slugConverter = new SlugConverter( @@ -270,15 +237,13 @@ protected function getMockedSlugConverter() } /** - * @param array $methods - * - * @return \Ibexa\Core\Persistence\Legacy\Content\UrlAlias\SlugConverter|\PHPUnit\Framework\MockObject\MockObject + * @param string[] $methods */ - protected function getSlugConverterMock(array $methods = []) + protected function getSlugConverterMock(array $methods = []): SlugConverter & MockObject { if (!isset($this->slugConverterMock)) { $this->slugConverterMock = $this->getMockBuilder(SlugConverter::class) - ->setMethods($methods) + ->onlyMethods($methods) ->setConstructorArgs( [ $this->getTransformationProcessorMock(), @@ -291,10 +256,7 @@ protected function getSlugConverterMock(array $methods = []) return $this->slugConverterMock; } - /** - * @return \PHPUnit\Framework\MockObject\MockObject - */ - protected function getTransformationProcessorMock() + protected function getTransformationProcessorMock(): TransformationProcessor & MockObject { if (!isset($this->transformationProcessorMock)) { $this->transformationProcessorMock = $this->getMockForAbstractClass( @@ -311,13 +273,25 @@ protected function getTransformationProcessorMock() return $this->transformationProcessorMock; } - /** - * Returns the test suite with all tests declared in this class. - * - * @return \PHPUnit\Framework\TestSuite - */ - public static function suite() + private function mockSlugConverter(string $slug, string $defaultText): SlugConverter & MockObject { - return new TestSuite(__CLASS__); + $slugConverter = $this->getSlugConverterMock(['cleanupText']); + $transformationProcessor = $this->getTransformationProcessorMock(); + + $transformedText = 'test text c '; + + $transformationProcessor + ->expects(self::atLeastOnce()) + ->method('transform') + ->with($defaultText, ['test_command1']) + ->willReturn($transformedText); + + $slugConverter + ->expects(self::once()) + ->method('cleanupText') + ->with(self::equalTo($transformedText), self::equalTo('test_cleanup1')) + ->willReturn($slug); + + return $slugConverter; } } diff --git a/tests/lib/Persistence/Legacy/Content/UrlAlias/UrlAliasHandlerTest.php b/tests/lib/Persistence/Legacy/Content/UrlAlias/UrlAliasHandlerTest.php index 470b732fb6..83b35680f2 100644 --- a/tests/lib/Persistence/Legacy/Content/UrlAlias/UrlAliasHandlerTest.php +++ b/tests/lib/Persistence/Legacy/Content/UrlAlias/UrlAliasHandlerTest.php @@ -5462,10 +5462,13 @@ protected function getLocationGateway() */ public function getProcessor() { + $ruleFiles = glob(dirname(__DIR__, 6) . '/src/lib/Resources/slug_converter/transformations/*.tr'); + self::assertNotFalse($ruleFiles, 'Failed to find slug converter transformation files'); + return new DefinitionBased( new Parser(), new PcreCompiler(new Utf8Converter()), - glob(__DIR__ . '/../../../TransformationProcessor/_fixtures/transformations/*.tr') + $ruleFiles ); } diff --git a/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedParserTest.php b/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedParserTest.php index 4ad3164640..998be78db3 100644 --- a/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedParserTest.php +++ b/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedParserTest.php @@ -10,36 +10,31 @@ use Ibexa\Core\Persistence; use Ibexa\Tests\Core\Persistence\Legacy\TestCase; -/** - * Test case for LocationHandlerTest. - */ -class TransformationProcessorDefinitionBasedParserTest extends TestCase +final class TransformationProcessorDefinitionBasedParserTest extends TestCase { /** - * @phpstan-return array + * @phpstan-return iterable */ - public static function getTestFiles(): array + public static function getTestFiles(): iterable { - $glob = glob(__DIR__ . '/_fixtures/transformations/*.tr'); + $ruleFiles = glob(dirname(__DIR__, 4) . '/src/lib/Resources/slug_converter/transformations/*.tr'); + self::assertNotFalse($ruleFiles, 'Failed to find transformation files'); - return false !== $glob - ? array_map( - static function (string $file) { - return [realpath($file)]; - }, - $glob - ) - : []; + foreach ($ruleFiles as $file) { + $filePath = realpath($file); + self::assertNotFalse($filePath, "File $file does not exist"); + yield basename($filePath) => [$filePath]; + } } /** * @dataProvider getTestFiles */ - public function testParse($file) + public function testParse(string $file): void { $parser = new Persistence\TransformationProcessor\DefinitionBased\Parser(); - $fixture = include $file . '.result'; + $fixture = require $file . '.result.php'; self::assertEquals( $fixture, $parser->parse($file) diff --git a/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedTest.php b/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedTest.php index 35aff7f339..448b6cd455 100644 --- a/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedTest.php +++ b/tests/lib/Persistence/TransformationProcessor/TransformationProcessorDefinitionBasedTest.php @@ -18,10 +18,13 @@ class TransformationProcessorDefinitionBasedTest extends TestCase { public function getProcessor() { + $ruleFiles = glob(dirname(__DIR__, 4) . '/src/lib/Resources/slug_converter/transformations/*.tr'); + self::assertNotFalse($ruleFiles, 'Failed to find transformation files'); + return new DefinitionBased( new Persistence\TransformationProcessor\DefinitionBased\Parser(), new Persistence\TransformationProcessor\PcreCompiler(new Persistence\Utf8Converter()), - glob(__DIR__ . '/_fixtures/transformations/*.tr') + $ruleFiles ); } diff --git a/tests/lib/Persistence/TransformationProcessor/TransformationProcessorPreprocessedBasedTest.php b/tests/lib/Persistence/TransformationProcessor/TransformationProcessorPreprocessedBasedTest.php index 64402965da..f94991fd5b 100644 --- a/tests/lib/Persistence/TransformationProcessor/TransformationProcessorPreprocessedBasedTest.php +++ b/tests/lib/Persistence/TransformationProcessor/TransformationProcessorPreprocessedBasedTest.php @@ -18,9 +18,14 @@ class TransformationProcessorPreprocessedBasedTest extends TestCase { public function getProcessor() { + $preprocessedRuleFiles = glob( + dirname(__DIR__, 4) . '/src/lib/Resources/slug_converter/transformations/*.tr.result.php' + ); + self::assertNotFalse($preprocessedRuleFiles, 'Failed to find preprocessed transformation files'); + return new PreprocessedBased( new Persistence\TransformationProcessor\PcreCompiler(new Persistence\Utf8Converter()), - glob(__DIR__ . '/_fixtures/transformations/*.tr.result') + $preprocessedRuleFiles ); } diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr.result deleted file mode 100644 index 8b09cb740c..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/ascii.tr.result +++ /dev/null @@ -1,221 +0,0 @@ - array ( - 0 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0041', - 'srcEnd' => 'U+005A', - 'op' => '+', - 'dest' => '20', - ), - ), - ), - 'ascii_uppercase' => array ( - 0 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0061', - 'srcEnd' => 'U+007A', - 'op' => '-', - 'dest' => '20', - ), - ), - ), - 'ascii_search_cleanup' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0023', - 'dest' => 'U+0020', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0024', - 'dest' => 'U+0020', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0026', - 'dest' => 'U+0020', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+005E', - 'dest' => 'U+0020', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+007B', - 'dest' => 'U+0020', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+007D', - 'dest' => 'U+0020', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+007C', - 'dest' => 'U+0020', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0040', - 'dest' => 'U+0020', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+003A', - 'dest' => 'U+0020', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+003B', - 'dest' => 'U+0020', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+002C', - 'dest' => 'U+0020', - ), - ), - 11 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0028', - 'dest' => 'U+0020', - ), - ), - 12 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0029', - 'dest' => 'U+0020', - ), - ), - 13 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+002D', - 'dest' => 'U+0020', - ), - ), - 14 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+002B', - 'dest' => 'U+0020', - ), - ), - 15 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+002F', - 'dest' => 'U+0020', - ), - ), - 16 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+005B', - 'dest' => 'U+0020', - ), - ), - 17 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+005D', - 'dest' => 'U+0020', - ), - ), - 18 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+005C', - 'dest' => 'U+0020', - ), - ), - 19 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+003C', - 'dest' => 'U+0020', - ), - ), - 20 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+003E', - 'dest' => 'U+0020', - ), - ), - 21 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+003D', - 'dest' => 'U+0020', - ), - ), - 22 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0027', - 'dest' => 'U+0020', - ), - ), - 23 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0060', - 'dest' => 'U+0020', - ), - ), - 24 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+0000', - 'srcEnd' => 'U+0009', - 'dest' => 'U+0020', - ), - ), - 25 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+000B', - 'srcEnd' => 'U+000C', - 'dest' => 'U+0020', - ), - ), - 26 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+000E', - 'srcEnd' => 'U+001F', - 'dest' => 'U+0020', - ), - ), - ), -); - diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr.result deleted file mode 100644 index d557ac3b30..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/basic.tr.result +++ /dev/null @@ -1,192 +0,0 @@ - array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+202F', - 'dest' => 'U+00A0', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+FEFF', - 'dest' => 'U+00A0', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00A0', - 'dest' => 'U+0020', - ), - ), - ), - 'hyphen_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+007E', - 'dest' => 'U+002D', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00AD', - 'dest' => 'remove', - ), - ), - ), - 'apostrophe_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0060', - 'dest' => 'U+0027', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B4', - 'dest' => 'U+0027', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+02CA', - 'dest' => 'U+0027', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+02CB', - 'dest' => 'U+0027', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+02CF', - 'dest' => 'U+0027', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+02CE', - 'dest' => 'U+0027', - ), - ), - ), - 'doublequote_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00AB', - 'dest' => 'U+0022', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BB', - 'dest' => 'U+0022', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+02DD', - 'dest' => 'U+0027', - ), - ), - ), - 'apostrophe_to_doublequote' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0027', - 'dest' => 'U+0022', - ), - ), - ), - 'special_decompose' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00A9', - 'dest' => '"(C)"', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00AE', - 'dest' => '"(R)"', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B1', - 'dest' => '"+-"', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B2', - 'dest' => '"2"', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B3', - 'dest' => '"3"', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B9', - 'dest' => '"1"', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BA', - 'dest' => '"1"', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BC', - 'dest' => '"1/4"', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BD', - 'dest' => '"1/2"', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BE', - 'dest' => '"3/4"', - ), - ), - ), -); - diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr.result deleted file mode 100644 index 8087c72c43..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/cyrillic.tr.result +++ /dev/null @@ -1,1197 +0,0 @@ - array ( - 0 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0450', - 'srcEnd' => 'U+045F', - 'op' => '-', - 'dest' => 'U+0050', - ), - ), - 1 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0430', - 'srcEnd' => 'U+044F', - 'op' => '-', - 'dest' => 'U+0020', - ), - ), - 2 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+0461', - 'srcEnd' => 'U+0481', - 'modulo' => '02', - 'op' => '-', - 'dest' => 'U+0001', - ), - ), - 3 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+048B', - 'srcEnd' => 'U+04BF', - 'modulo' => '02', - 'op' => '-', - 'dest' => 'U+0001', - ), - ), - 4 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+04C2', - 'srcEnd' => 'U+04CC', - 'modulo' => '02', - 'op' => '-', - 'dest' => 'U+0001', - ), - ), - 5 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+04D1', - 'srcEnd' => 'U+04F5', - 'modulo' => '02', - 'op' => '-', - 'dest' => 'U+0001', - ), - ), - 6 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+0501', - 'srcEnd' => 'U+050F', - 'modulo' => '02', - 'op' => '-', - 'dest' => 'U+0001', - ), - ), - ), - 'cyrillic_lowercase' => array ( - 0 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0400', - 'srcEnd' => 'U+040F', - 'op' => '+', - 'dest' => 'U+0050', - ), - ), - 1 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0410', - 'srcEnd' => 'U+042F', - 'op' => '+', - 'dest' => 'U+0020', - ), - ), - 2 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+0460', - 'srcEnd' => 'U+0480', - 'modulo' => '02', - 'op' => '+', - 'dest' => 'U+0001', - ), - ), - 3 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+048A', - 'srcEnd' => 'U+04BE', - 'modulo' => '02', - 'op' => '+', - 'dest' => 'U+0001', - ), - ), - 4 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+04C1', - 'srcEnd' => 'U+04CD', - 'modulo' => '02', - 'op' => '+', - 'dest' => 'U+0001', - ), - ), - 5 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+04D0', - 'srcEnd' => 'U+04F4', - 'modulo' => '02', - 'op' => '+', - 'dest' => 'U+0001', - ), - ), - 6 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+0500', - 'srcEnd' => 'U+050E', - 'modulo' => '02', - 'op' => '+', - 'dest' => 'U+0001', - ), - ), - ), - 'cyrillic_diacritical' => array ( - 0 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+0400', - 'srcEnd' => 'U+0401', - 'dest' => 'U+0415', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0403', - 'dest' => 'U+0413', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0407', - 'dest' => 'U+0406', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040C', - 'dest' => 'U+041A', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040D', - 'dest' => 'U+0418', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040E', - 'dest' => 'U+0423', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0419', - 'dest' => 'U+0418', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0439', - 'dest' => 'U+0438', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0450', - 'dest' => 'U+0435', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0451', - 'dest' => 'U+0435', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0453', - 'dest' => 'U+0433', - ), - ), - 11 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0457', - 'dest' => 'U+0456', - ), - ), - 12 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045C', - 'dest' => 'U+043A', - ), - ), - 13 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045D', - 'dest' => 'U+0438', - ), - ), - 14 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045E', - 'dest' => 'U+0443', - ), - ), - 15 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0476', - 'dest' => 'U+0474', - ), - ), - 16 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0477', - 'dest' => 'U+0475', - ), - ), - 17 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04C1', - 'dest' => 'U+0416', - ), - ), - 18 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04C2', - 'dest' => 'U+0436', - ), - ), - 19 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04D0', - 'dest' => 'U+0410', - ), - ), - 20 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04D1', - 'dest' => 'U+0430', - ), - ), - 21 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04D2', - 'dest' => 'U+0410', - ), - ), - 22 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04D3', - 'dest' => 'U+0430', - ), - ), - 23 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04D6', - 'dest' => 'U+0415', - ), - ), - 24 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04D7', - 'dest' => 'U+0435', - ), - ), - 25 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04DA', - 'dest' => 'U+04D8', - ), - ), - 26 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04DB', - 'dest' => 'U+04D9', - ), - ), - 27 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04DC', - 'dest' => 'U+0416', - ), - ), - 28 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04DD', - 'dest' => 'U+0436', - ), - ), - 29 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04DE', - 'dest' => 'U+0417', - ), - ), - 30 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04DF', - 'dest' => 'U+0437', - ), - ), - 31 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04E2', - 'dest' => 'U+0418', - ), - ), - 32 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04E3', - 'dest' => 'U+0438', - ), - ), - 33 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04E4', - 'dest' => 'U+0418', - ), - ), - 34 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04E5', - 'dest' => 'U+0438', - ), - ), - 35 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04E6', - 'dest' => 'U+041E', - ), - ), - 36 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04E7', - 'dest' => 'U+043E', - ), - ), - 37 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04EA', - 'dest' => 'U+04E8', - ), - ), - 38 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04EB', - 'dest' => 'U+04E9', - ), - ), - 39 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04EC', - 'dest' => 'U+042D', - ), - ), - 40 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04ED', - 'dest' => 'U+044D', - ), - ), - 41 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04EE', - 'dest' => 'U+0423', - ), - ), - 42 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04EF', - 'dest' => 'U+0443', - ), - ), - 43 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F0', - 'dest' => 'U+0423', - ), - ), - 44 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F1', - 'dest' => 'U+0443', - ), - ), - 45 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F2', - 'dest' => 'U+0423', - ), - ), - 46 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F3', - 'dest' => 'U+0443', - ), - ), - 47 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F4', - 'dest' => 'U+0427', - ), - ), - 48 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F5', - 'dest' => 'U+0447', - ), - ), - 49 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F8', - 'dest' => 'U+042B', - ), - ), - 50 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+04F9', - 'dest' => 'U+044B', - ), - ), - ), - 'cyrillic_transliterate_ascii' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0400', - 'dest' => '"IE"', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0401', - 'dest' => '"IO"', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0402', - 'dest' => '"D"', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0403', - 'dest' => '"G"', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0404', - 'dest' => '"IE"', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0405', - 'dest' => '"DS"', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0406', - 'dest' => '"II"', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0407', - 'dest' => '"YI"', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0408', - 'dest' => '"J"', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0409', - 'dest' => '"LJ"', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040A', - 'dest' => '"NJ"', - ), - ), - 11 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040B', - 'dest' => '"Ts"', - ), - ), - 12 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040C', - 'dest' => '"KJ"', - ), - ), - 13 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040D', - 'dest' => '"I"', - ), - ), - 14 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040E', - 'dest' => '"V"', - ), - ), - 15 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+040F', - 'dest' => '"DZ"', - ), - ), - 16 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0410', - 'dest' => '"A"', - ), - ), - 17 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0411', - 'dest' => '"B"', - ), - ), - 18 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0412', - 'dest' => '"V"', - ), - ), - 19 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0413', - 'dest' => '"G"', - ), - ), - 20 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0414', - 'dest' => '"D"', - ), - ), - 21 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0415', - 'dest' => '"E"', - ), - ), - 22 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0416', - 'dest' => '"ZH"', - ), - ), - 23 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0417', - 'dest' => '"Z"', - ), - ), - 24 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0418', - 'dest' => '"I"', - ), - ), - 25 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0419', - 'dest' => '"J"', - ), - ), - 26 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+041A', - 'dest' => '"K"', - ), - ), - 27 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+041B', - 'dest' => '"L"', - ), - ), - 28 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+041C', - 'dest' => '"M"', - ), - ), - 29 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+041D', - 'dest' => '"N"', - ), - ), - 30 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+041E', - 'dest' => '"O"', - ), - ), - 31 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+041F', - 'dest' => '"P"', - ), - ), - 32 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0420', - 'dest' => '"R"', - ), - ), - 33 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0421', - 'dest' => '"S"', - ), - ), - 34 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0422', - 'dest' => '"T"', - ), - ), - 35 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0423', - 'dest' => '"U"', - ), - ), - 36 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0424', - 'dest' => '"F"', - ), - ), - 37 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0425', - 'dest' => '"H"', - ), - ), - 38 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0426', - 'dest' => '"C"', - ), - ), - 39 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0427', - 'dest' => '"CH"', - ), - ), - 40 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0428', - 'dest' => '"SH"', - ), - ), - 41 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0429', - 'dest' => '"SCH"', - ), - ), - 42 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+042A', - 'dest' => '"\\\'"', - ), - ), - 43 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+042B', - 'dest' => '"Y"', - ), - ), - 44 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+042C', - 'dest' => '"\\\'"', - ), - ), - 45 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+042D', - 'dest' => '"E"', - ), - ), - 46 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+042E', - 'dest' => '"YU"', - ), - ), - 47 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+042F', - 'dest' => '"YA"', - ), - ), - 48 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0430', - 'dest' => '"a"', - ), - ), - 49 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0431', - 'dest' => '"b"', - ), - ), - 50 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0432', - 'dest' => '"v"', - ), - ), - 51 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0433', - 'dest' => '"g"', - ), - ), - 52 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0434', - 'dest' => '"d"', - ), - ), - 53 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0435', - 'dest' => '"e"', - ), - ), - 54 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0436', - 'dest' => '"zh"', - ), - ), - 55 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0437', - 'dest' => '"z"', - ), - ), - 56 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0438', - 'dest' => '"i"', - ), - ), - 57 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0439', - 'dest' => '"j"', - ), - ), - 58 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+043A', - 'dest' => '"k"', - ), - ), - 59 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+043B', - 'dest' => '"l"', - ), - ), - 60 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+043C', - 'dest' => '"m"', - ), - ), - 61 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+043D', - 'dest' => '"n"', - ), - ), - 62 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+043E', - 'dest' => '"o"', - ), - ), - 63 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+043F', - 'dest' => '"p"', - ), - ), - 64 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0440', - 'dest' => '"r"', - ), - ), - 65 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0441', - 'dest' => '"s"', - ), - ), - 66 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0442', - 'dest' => '"t"', - ), - ), - 67 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0443', - 'dest' => '"u"', - ), - ), - 68 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0444', - 'dest' => '"f"', - ), - ), - 69 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0445', - 'dest' => '"h"', - ), - ), - 70 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0446', - 'dest' => '"c"', - ), - ), - 71 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0447', - 'dest' => '"ch"', - ), - ), - 72 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0448', - 'dest' => '"sh"', - ), - ), - 73 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0449', - 'dest' => '"sch"', - ), - ), - 74 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+044A', - 'dest' => '"\\\'"', - ), - ), - 75 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+044B', - 'dest' => '"y"', - ), - ), - 76 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+044C', - 'dest' => '"\\\'"', - ), - ), - 77 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+044D', - 'dest' => '"e"', - ), - ), - 78 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+044E', - 'dest' => '"yu"', - ), - ), - 79 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+044F', - 'dest' => '"ya"', - ), - ), - 80 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0450', - 'dest' => '"ie"', - ), - ), - 81 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0451', - 'dest' => '"io"', - ), - ), - 82 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0452', - 'dest' => '"dj"', - ), - ), - 83 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0453', - 'dest' => '"g"', - ), - ), - 84 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0454', - 'dest' => '"e"', - ), - ), - 85 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0455', - 'dest' => '"z"', - ), - ), - 86 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0456', - 'dest' => '"i"', - ), - ), - 87 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0457', - 'dest' => '"yi"', - ), - ), - 88 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0458', - 'dest' => '"j"', - ), - ), - 89 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0459', - 'dest' => '"lj"', - ), - ), - 90 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045A', - 'dest' => '"nj"', - ), - ), - 91 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045B', - 'dest' => '"c"', - ), - ), - 92 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045C', - 'dest' => '"kj"', - ), - ), - 93 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045D', - 'dest' => '"i"', - ), - ), - 94 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045E', - 'dest' => '"v"', - ), - ), - 95 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+045F', - 'dest' => '"dz"', - ), - ), - ), - 'cyrillic_search_cleanup' => array ( - 0 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+0482', - 'srcEnd' => 'U+0486', - 'dest' => 'U+0020', - ), - ), - 1 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+0488', - 'srcEnd' => 'U+0489', - 'dest' => 'U+0020', - ), - ), - ), -); - diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr.result deleted file mode 100644 index c775e8d722..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/greek.tr.result +++ /dev/null @@ -1,1178 +0,0 @@ - array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AC', - 'dest' => 'U+0386', - ), - ), - 1 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+03AD', - 'srcEnd' => 'U+03AF', - 'op' => '-', - 'dest' => 'U+0025', - ), - ), - 2 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+03B1', - 'srcEnd' => 'U+03C1', - 'op' => '-', - 'dest' => 'U+0020', - ), - ), - 3 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+03C3', - 'srcEnd' => 'U+03CB', - 'op' => '-', - 'dest' => 'U+0020', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CC', - 'dest' => 'U+038C', - ), - ), - 5 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+03CD', - 'srcEnd' => 'U+03CE', - 'op' => '-', - 'dest' => 'U+003F', - ), - ), - 6 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+03DB', - 'srcEnd' => 'U+03EF', - 'modulo' => '02', - 'op' => '-', - 'dest' => 'U+0001', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D0', - 'dest' => 'U+0392', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D1', - 'dest' => 'U+0398', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D5', - 'dest' => 'U+03A6', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D6', - 'dest' => 'U+03A0', - ), - ), - ), - 'greek_lowercase' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0386', - 'dest' => 'U+03AC', - ), - ), - 1 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0388', - 'srcEnd' => 'U+038A', - 'op' => '+', - 'dest' => 'U+0025', - ), - ), - 2 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+0391', - 'srcEnd' => 'U+03A1', - 'op' => '+', - 'dest' => 'U+0020', - ), - ), - 3 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+03A3', - 'srcEnd' => 'U+03AB', - 'op' => '+', - 'dest' => 'U+0020', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038C', - 'dest' => 'U+03CC', - ), - ), - 5 => array ( - 'type' => 13, - 'data' => array ( - 'srcStart' => 'U+038E', - 'srcEnd' => 'U+038F', - 'op' => '+', - 'dest' => 'U+003F', - ), - ), - 6 => array ( - 'type' => 14, - 'data' => array ( - 'srcStart' => 'U+03DA', - 'srcEnd' => 'U+03EE', - 'modulo' => '02', - 'op' => '+', - 'dest' => 'U+0001', - ), - ), - ), - 'greek_diacritical' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0386', - 'dest' => 'U+0391', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0388', - 'dest' => 'U+0395', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0389', - 'dest' => 'U+0397', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038A', - 'dest' => 'U+0399', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038C', - 'dest' => 'U+039F', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038E', - 'dest' => 'U+03A5', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038F', - 'dest' => 'U+03A9', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0390', - 'dest' => 'U+03CA', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AA', - 'dest' => 'U+0399', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AB', - 'dest' => 'U+03A5', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AC', - 'dest' => 'U+03B1', - ), - ), - 11 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AD', - 'dest' => 'U+03B5', - ), - ), - 12 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AE', - 'dest' => 'U+03B7', - ), - ), - 13 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AF', - 'dest' => 'U+03B9', - ), - ), - 14 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B0', - 'dest' => 'U+03CB', - ), - ), - 15 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CA', - 'dest' => 'U+03B9', - ), - ), - 16 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CB', - 'dest' => 'U+03C5', - ), - ), - 17 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CC', - 'dest' => 'U+03BF', - ), - ), - 18 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CD', - 'dest' => 'U+03C5', - ), - ), - 19 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CE', - 'dest' => 'U+03C9', - ), - ), - 20 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D4', - 'dest' => 'U+03D2', - ), - ), - ), - 'greek_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+037A', - 'dest' => 'U+0020', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+037E', - 'dest' => 'U+003F', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0384', - 'dest' => 'U+0020', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0385', - 'dest' => 'U+00A8', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0387', - 'dest' => 'U+00B7', - ), - ), - ), - 'greek_transliterate_ascii' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0374', - 'dest' => '"\\\'"', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0375', - 'dest' => '"\\\'"', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+037A', - 'dest' => '""', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+037E', - 'dest' => '";"', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0384', - 'dest' => '"\\\'"', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0385', - 'dest' => '";"', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0386', - 'dest' => '"Ha"', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0388', - 'dest' => '"He"', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0389', - 'dest' => '"He"', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038A', - 'dest' => '"Hi"', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038C', - 'dest' => '"Ho"', - ), - ), - 11 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038E', - 'dest' => '"Hu"', - ), - ), - 12 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+038F', - 'dest' => '"Ho"', - ), - ), - 13 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0390', - 'dest' => '"I"', - ), - ), - 14 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0391', - 'dest' => '"A"', - ), - ), - 15 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0392', - 'dest' => '"V"', - ), - ), - 16 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0393', - 'dest' => '"G"', - ), - ), - 17 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0394', - 'dest' => '"D"', - ), - ), - 18 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0395', - 'dest' => '"E"', - ), - ), - 19 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0396', - 'dest' => '"Z"', - ), - ), - 20 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0397', - 'dest' => '"E"', - ), - ), - 21 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0398', - 'dest' => '"Th"', - ), - ), - 22 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0399', - 'dest' => '"I"', - ), - ), - 23 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+039A', - 'dest' => '"K"', - ), - ), - 24 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+039B', - 'dest' => '"L"', - ), - ), - 25 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+039C', - 'dest' => '"M"', - ), - ), - 26 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+039D', - 'dest' => '"N"', - ), - ), - 27 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+039E', - 'dest' => '"X"', - ), - ), - 28 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+039F', - 'dest' => '"O"', - ), - ), - 29 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A0', - 'dest' => '"P"', - ), - ), - 30 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A1', - 'dest' => '"R"', - ), - ), - 31 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A3', - 'dest' => '"S"', - ), - ), - 32 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A4', - 'dest' => '"T"', - ), - ), - 33 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A5', - 'dest' => '"Y"', - ), - ), - 34 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A6', - 'dest' => '"Ph"', - ), - ), - 35 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A7', - 'dest' => '"Ch"', - ), - ), - 36 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A8', - 'dest' => '"Ps"', - ), - ), - 37 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03A9', - 'dest' => '"O"', - ), - ), - 38 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AA', - 'dest' => '"I"', - ), - ), - 39 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AB', - 'dest' => '"Y"', - ), - ), - 40 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AC', - 'dest' => '"ha"', - ), - ), - 41 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AD', - 'dest' => '"he"', - ), - ), - 42 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AE', - 'dest' => '"he"', - ), - ), - 43 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03AF', - 'dest' => '"hi"', - ), - ), - 44 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B0', - 'dest' => '"y"', - ), - ), - 45 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B1', - 'dest' => '"a"', - ), - ), - 46 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B2', - 'dest' => '"v"', - ), - ), - 47 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B3', - 'dest' => '"g"', - ), - ), - 48 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B4', - 'dest' => '"d"', - ), - ), - 49 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B5', - 'dest' => '"e"', - ), - ), - 50 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B6', - 'dest' => '"z"', - ), - ), - 51 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B7', - 'dest' => '"e"', - ), - ), - 52 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B8', - 'dest' => '"th"', - ), - ), - 53 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03B9', - 'dest' => '"i"', - ), - ), - 54 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03BA', - 'dest' => '"k"', - ), - ), - 55 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03BB', - 'dest' => '"l"', - ), - ), - 56 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03BC', - 'dest' => '"m"', - ), - ), - 57 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03BD', - 'dest' => '"n"', - ), - ), - 58 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03BE', - 'dest' => '"x"', - ), - ), - 59 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03BF', - 'dest' => '"o"', - ), - ), - 60 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C0', - 'dest' => '"p"', - ), - ), - 61 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C1', - 'dest' => '"r"', - ), - ), - 62 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C2', - 'dest' => '"s"', - ), - ), - 63 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C3', - 'dest' => '"s"', - ), - ), - 64 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C4', - 'dest' => '"t"', - ), - ), - 65 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C5', - 'dest' => '"y"', - ), - ), - 66 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C6', - 'dest' => '"ph"', - ), - ), - 67 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C7', - 'dest' => '"ch"', - ), - ), - 68 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C8', - 'dest' => '"ps"', - ), - ), - 69 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03C9', - 'dest' => '"o"', - ), - ), - 70 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CA', - 'dest' => '"i"', - ), - ), - 71 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CB', - 'dest' => '"y"', - ), - ), - 72 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CC', - 'dest' => '"ho"', - ), - ), - 73 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CD', - 'dest' => '"hu"', - ), - ), - 74 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03CE', - 'dest' => '"ho"', - ), - ), - 75 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D0', - 'dest' => '"b"', - ), - ), - 76 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D1', - 'dest' => '"th"', - ), - ), - 77 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D2', - 'dest' => '"Y"', - ), - ), - 78 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D3', - 'dest' => '"Y"', - ), - ), - 79 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D4', - 'dest' => '"Y"', - ), - ), - 80 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D5', - 'dest' => '"phi"', - ), - ), - 81 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D6', - 'dest' => '"pi"', - ), - ), - 82 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D7', - 'dest' => '"&"', - ), - ), - 83 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D8', - 'dest' => '"K"', - ), - ), - 84 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03D9', - 'dest' => '"k"', - ), - ), - 85 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03DA', - 'dest' => '"6"', - ), - ), - 86 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03DB', - 'dest' => '"s"', - ), - ), - 87 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03DC', - 'dest' => '"F"', - ), - ), - 88 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03DD', - 'dest' => '"f"', - ), - ), - 89 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03DE', - 'dest' => '"K"', - ), - ), - 90 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03DF', - 'dest' => '"90"', - ), - ), - 91 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E0', - 'dest' => '"S"', - ), - ), - 92 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E1', - 'dest' => '"900"', - ), - ), - 93 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E2', - 'dest' => '""', - ), - ), - 94 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E3', - 'dest' => '""', - ), - ), - 95 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E4', - 'dest' => '""', - ), - ), - 96 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E5', - 'dest' => '""', - ), - ), - 97 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E6', - 'dest' => '""', - ), - ), - 98 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E7', - 'dest' => '""', - ), - ), - 99 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E8', - 'dest' => '""', - ), - ), - 100 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03E9', - 'dest' => '""', - ), - ), - 101 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03EA', - 'dest' => '""', - ), - ), - 102 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03EB', - 'dest' => '""', - ), - ), - 103 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03EC', - 'dest' => '""', - ), - ), - 104 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03ED', - 'dest' => '""', - ), - ), - 105 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03EE', - 'dest' => '""', - ), - ), - 106 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03EF', - 'dest' => '""', - ), - ), - 107 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F0', - 'dest' => '""', - ), - ), - 108 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F1', - 'dest' => '"r"', - ), - ), - 109 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F2', - 'dest' => '""', - ), - ), - 110 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F3', - 'dest' => '"j"', - ), - ), - 111 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F4', - 'dest' => '""', - ), - ), - 112 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F5', - 'dest' => '"e"', - ), - ), - 113 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F6', - 'dest' => '"e"', - ), - ), - 114 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F7', - 'dest' => '""', - ), - ), - 115 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F8', - 'dest' => '""', - ), - ), - 116 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03F9', - 'dest' => '""', - ), - ), - 117 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03FA', - 'dest' => '""', - ), - ), - 118 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+03FB', - 'dest' => '""', - ), - ), - ), -); - diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr.result deleted file mode 100644 index 7d1b8e2f7c..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/hebrew.tr.result +++ /dev/null @@ -1,373 +0,0 @@ - array ( - 0 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+0591', - 'srcEnd' => 'U+05A1', - 'dest' => '""', - ), - ), - 1 => array ( - 'type' => 12, - 'data' => array ( - 'srcStart' => 'U+05A3', - 'srcEnd' => 'U+05AF', - 'dest' => '""', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B0', - 'dest' => '""', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B1', - 'dest' => '"e"', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B2', - 'dest' => '"a"', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B3', - 'dest' => '"o"', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B4', - 'dest' => '"i"', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B5', - 'dest' => '"e"', - ), - ), - 8 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B6', - 'dest' => '"e"', - ), - ), - 9 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B7', - 'dest' => '"a"', - ), - ), - 10 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B8', - 'dest' => '"e"', - ), - ), - 11 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05B9', - 'dest' => '"o"', - ), - ), - 12 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05BA', - 'dest' => '""', - ), - ), - 13 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05BB', - 'dest' => '"u"', - ), - ), - 14 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05BC', - 'dest' => '""', - ), - ), - 15 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05BD', - 'dest' => '""', - ), - ), - 16 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05BE', - 'dest' => '"\\\'"', - ), - ), - 17 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05BF', - 'dest' => '""', - ), - ), - 18 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05C0', - 'dest' => '"|"', - ), - ), - 19 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05C3', - 'dest' => '":"', - ), - ), - 20 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D0', - 'dest' => '"\\\'"', - ), - ), - 21 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D1', - 'dest' => '"b"', - ), - ), - 22 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D2', - 'dest' => '"g"', - ), - ), - 23 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D3', - 'dest' => '"d"', - ), - ), - 24 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D4', - 'dest' => '"h"', - ), - ), - 25 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D5', - 'dest' => '"o"', - ), - ), - 26 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D6', - 'dest' => '"z"', - ), - ), - 27 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D7', - 'dest' => '"h"', - ), - ), - 28 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D8', - 'dest' => '"t"', - ), - ), - 29 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05D9', - 'dest' => '"y"', - ), - ), - 30 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05DA', - 'dest' => '"k"', - ), - ), - 31 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05DB', - 'dest' => '"k"', - ), - ), - 32 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05DC', - 'dest' => '"l"', - ), - ), - 33 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05DD', - 'dest' => '"m"', - ), - ), - 34 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05DE', - 'dest' => '"m"', - ), - ), - 35 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05DF', - 'dest' => '"n"', - ), - ), - 36 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E0', - 'dest' => '"n"', - ), - ), - 37 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E1', - 'dest' => '"s"', - ), - ), - 38 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E2', - 'dest' => '"\\\'"', - ), - ), - 39 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E3', - 'dest' => '"p"', - ), - ), - 40 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E4', - 'dest' => '"p"', - ), - ), - 41 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E5', - 'dest' => '"z"', - ), - ), - 42 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E6', - 'dest' => '"z"', - ), - ), - 43 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E7', - 'dest' => '"q"', - ), - ), - 44 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E8', - 'dest' => '"r"', - ), - ), - 45 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05E9', - 'dest' => '"s"', - ), - ), - 46 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05EA', - 'dest' => '"t"', - ), - ), - 47 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05F0', - 'dest' => '"ww"', - ), - ), - 48 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05F1', - 'dest' => '"wy"', - ), - ), - 49 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05F4', - 'dest' => '"\\""', - ), - ), - 50 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05F2', - 'dest' => '"yy"', - ), - ), - 51 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+05F3', - 'dest' => '"\\\'"', - ), - ), - ), -); - diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr.result deleted file mode 100644 index be1e274939..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/latin.tr.result +++ /dev/null @@ -1,1984 +0,0 @@ - - array( - 0 => - array( - 'type' => 13, - 'data' => - array( - 'srcStart' => 'U+00C0', - 'srcEnd' => 'U+00D6', - 'op' => '+', - 'dest' => '20', - ), - ), - 1 => - array( - 'type' => 13, - 'data' => - array( - 'srcStart' => 'U+00D8', - 'srcEnd' => 'U+00DE', - 'op' => '+', - 'dest' => '20', - ), - ), - ), - 'latin1_uppercase' => - array( - 0 => - array( - 'type' => 13, - 'data' => - array( - 'srcStart' => 'U+00E0', - 'srcEnd' => 'U+00F6', - 'op' => '-', - 'dest' => '20', - ), - ), - 1 => - array( - 'type' => 13, - 'data' => - array( - 'srcStart' => 'U+00F8', - 'srcEnd' => 'U+00FE', - 'op' => '-', - 'dest' => '20', - ), - ), - 2 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00DF', - 'dest' => '"SS"', - ), - ), - ), - 'latin-exta_lowercase' => - array( - 0 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+0100', - 'srcEnd' => 'U+012E', - 'modulo' => '02', - 'op' => '+', - 'dest' => '01', - ), - ), - 1 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+0132', - 'srcEnd' => 'U+0136', - 'modulo' => '02', - 'op' => '+', - 'dest' => '01', - ), - ), - 2 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+0139', - 'srcEnd' => 'U+0147', - 'modulo' => '02', - 'op' => '+', - 'dest' => '01', - ), - ), - 3 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+014A', - 'srcEnd' => 'U+0176', - 'modulo' => '02', - 'op' => '+', - 'dest' => '01', - ), - ), - 4 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+0179', - 'srcEnd' => 'U+017D', - 'modulo' => '02', - 'op' => '+', - 'dest' => '01', - ), - ), - ), - 'latin-exta_uppercase' => - array( - 0 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+0101', - 'srcEnd' => 'U+012F', - 'modulo' => '02', - 'op' => '-', - 'dest' => '01', - ), - ), - 1 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+0133', - 'srcEnd' => 'U+0137', - 'modulo' => '02', - 'op' => '-', - 'dest' => '01', - ), - ), - 2 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+013A', - 'srcEnd' => 'U+0148', - 'modulo' => '02', - 'op' => '-', - 'dest' => '01', - ), - ), - 3 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+014B', - 'srcEnd' => 'U+0177', - 'modulo' => '02', - 'op' => '-', - 'dest' => '01', - ), - ), - 4 => - array( - 'type' => 14, - 'data' => - array( - 'srcStart' => 'U+017A', - 'srcEnd' => 'U+017E', - 'modulo' => '02', - 'op' => '-', - 'dest' => '01', - ), - ), - ), - 'latin_lowercase' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0178', - 'dest' => 'U+00FF', - ), - ), - 1 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0218', - 'dest' => 'U+0219', - ), - ), - 2 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+021A', - 'dest' => 'U+021B', - ), - ), - ), - 'latin_uppercase' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00FF', - 'dest' => 'U+0178', - ), - ), - ), - 'latin1_diacritical' => - array( - 0 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00C0', - 'srcEnd' => 'U+00C4', - 'dest' => '"A"', - ), - ), - 1 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00E0', - 'srcEnd' => 'U+00E4', - 'dest' => '"a"', - ), - ), - 2 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00C8', - 'srcEnd' => 'U+00CB', - 'dest' => '"E"', - ), - ), - 3 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00E8', - 'srcEnd' => 'U+00EB', - 'dest' => '"e"', - ), - ), - 4 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00CC', - 'srcEnd' => 'U+00CF', - 'dest' => '"I"', - ), - ), - 5 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00EC', - 'srcEnd' => 'U+00EF', - 'dest' => '"i"', - ), - ), - 6 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00D2', - 'srcEnd' => 'U+00D6', - 'dest' => '"O"', - ), - ), - 7 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00F2', - 'srcEnd' => 'U+00F6', - 'dest' => '"o"', - ), - ), - 8 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00D9', - 'srcEnd' => 'U+00DC', - 'dest' => '"U"', - ), - ), - 9 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00F9', - 'srcEnd' => 'U+00FC', - 'dest' => '"u"', - ), - ), - 10 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00DD', - 'dest' => '"Y"', - ), - ), - 11 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+009F', - 'dest' => '"Y"', - ), - ), - 12 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00FD', - 'dest' => '"y"', - ), - ), - 13 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00FF', - 'dest' => '"y"', - ), - ), - 14 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00C7', - 'dest' => '"C"', - ), - ), - 15 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00E7', - 'dest' => '"c"', - ), - ), - 16 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00D0', - 'dest' => '"D"', - ), - ), - 17 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00F0', - 'dest' => '"d"', - ), - ), - 18 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00D1', - 'dest' => '"N"', - ), - ), - 19 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00F1', - 'dest' => '"n"', - ), - ), - 20 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00DE', - 'dest' => '"TH"', - ), - ), - 21 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00FE', - 'dest' => '"th"', - ), - ), - 22 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00DF', - 'dest' => '"ss"', - ), - ), - ), - 'latin-exta_diacritical' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0100', - 'dest' => '"A"', - ), - ), - 1 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0102', - 'dest' => '"A"', - ), - ), - 2 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0104', - 'dest' => '"A"', - ), - ), - 3 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0101', - 'dest' => '"a"', - ), - ), - 4 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0103', - 'dest' => '"a"', - ), - ), - 5 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0105', - 'dest' => '"a"', - ), - ), - 6 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0106', - 'dest' => '"C"', - ), - ), - 7 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0108', - 'dest' => '"C"', - ), - ), - 8 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+010A', - 'dest' => '"C"', - ), - ), - 9 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+010C', - 'dest' => '"C"', - ), - ), - 10 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0107', - 'dest' => '"c"', - ), - ), - 11 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0109', - 'dest' => '"c"', - ), - ), - 12 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+010B', - 'dest' => '"c"', - ), - ), - 13 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+010D', - 'dest' => '"c"', - ), - ), - 14 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+010E', - 'dest' => '"D"', - ), - ), - 15 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0110', - 'dest' => '"D"', - ), - ), - 16 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+010F', - 'dest' => '"d"', - ), - ), - 17 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0111', - 'dest' => '"d"', - ), - ), - 18 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0112', - 'dest' => '"E"', - ), - ), - 19 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0114', - 'dest' => '"E"', - ), - ), - 20 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0116', - 'dest' => '"E"', - ), - ), - 21 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0118', - 'dest' => '"E"', - ), - ), - 22 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+011A', - 'dest' => '"E"', - ), - ), - 23 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0113', - 'dest' => '"e"', - ), - ), - 24 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0115', - 'dest' => '"e"', - ), - ), - 25 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0117', - 'dest' => '"e"', - ), - ), - 26 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0119', - 'dest' => '"e"', - ), - ), - 27 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+011B', - 'dest' => '"e"', - ), - ), - 28 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+011C', - 'dest' => '"G"', - ), - ), - 29 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+011E', - 'dest' => '"G"', - ), - ), - 30 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0120', - 'dest' => '"G"', - ), - ), - 31 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0122', - 'dest' => '"G"', - ), - ), - 32 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+011D', - 'dest' => '"g"', - ), - ), - 33 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+011F', - 'dest' => '"g"', - ), - ), - 34 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0121', - 'dest' => '"g"', - ), - ), - 35 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0123', - 'dest' => '"g"', - ), - ), - 36 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0124', - 'dest' => '"H"', - ), - ), - 37 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0126', - 'dest' => '"H"', - ), - ), - 38 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0125', - 'dest' => '"h"', - ), - ), - 39 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0127', - 'dest' => '"h"', - ), - ), - 40 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0128', - 'dest' => '"I"', - ), - ), - 41 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+012A', - 'dest' => '"I"', - ), - ), - 42 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+012C', - 'dest' => '"I"', - ), - ), - 43 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+012E', - 'dest' => '"I"', - ), - ), - 44 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0130', - 'dest' => '"I"', - ), - ), - 45 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0129', - 'dest' => '"i"', - ), - ), - 46 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+012B', - 'dest' => '"i"', - ), - ), - 47 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+012D', - 'dest' => '"i"', - ), - ), - 48 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+012F', - 'dest' => '"i"', - ), - ), - 49 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0131', - 'dest' => '"i"', - ), - ), - 50 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0134', - 'dest' => '"J"', - ), - ), - 51 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0135', - 'dest' => '"j"', - ), - ), - 52 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0136', - 'dest' => '"K"', - ), - ), - 53 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0137', - 'dest' => '"k"', - ), - ), - 54 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0139', - 'dest' => '"L"', - ), - ), - 55 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+013B', - 'dest' => '"L"', - ), - ), - 56 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+013D', - 'dest' => '"L"', - ), - ), - 57 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+013F', - 'dest' => '"L"', - ), - ), - 58 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0141', - 'dest' => '"L"', - ), - ), - 59 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+013A', - 'dest' => '"l"', - ), - ), - 60 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+013C', - 'dest' => '"l"', - ), - ), - 61 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+013E', - 'dest' => '"l"', - ), - ), - 62 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0140', - 'dest' => '"l"', - ), - ), - 63 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0142', - 'dest' => '"l"', - ), - ), - 64 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0143', - 'dest' => '"N"', - ), - ), - 65 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0145', - 'dest' => '"N"', - ), - ), - 66 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0147', - 'dest' => '"N"', - ), - ), - 67 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0144', - 'dest' => '"n"', - ), - ), - 68 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0146', - 'dest' => '"n"', - ), - ), - 69 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0148', - 'dest' => '"n"', - ), - ), - 70 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+014C', - 'dest' => '"O"', - ), - ), - 71 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+014E', - 'dest' => '"O"', - ), - ), - 72 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0150', - 'dest' => '"O"', - ), - ), - 73 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+014D', - 'dest' => '"o"', - ), - ), - 74 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+014F', - 'dest' => '"o"', - ), - ), - 75 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0151', - 'dest' => '"o"', - ), - ), - 76 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0154', - 'dest' => '"R"', - ), - ), - 77 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0156', - 'dest' => '"R"', - ), - ), - 78 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0158', - 'dest' => '"R"', - ), - ), - 79 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0155', - 'dest' => '"r"', - ), - ), - 80 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0157', - 'dest' => '"r"', - ), - ), - 81 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0159', - 'dest' => '"r"', - ), - ), - 82 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+015A', - 'dest' => '"S"', - ), - ), - 83 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+015C', - 'dest' => '"S"', - ), - ), - 84 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+015E', - 'dest' => '"S"', - ), - ), - 85 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0160', - 'dest' => '"S"', - ), - ), - 86 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+015B', - 'dest' => '"s"', - ), - ), - 87 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+015D', - 'dest' => '"s"', - ), - ), - 88 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+015F', - 'dest' => '"s"', - ), - ), - 89 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0161', - 'dest' => '"s"', - ), - ), - 90 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0162', - 'dest' => '"T"', - ), - ), - 91 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0164', - 'dest' => '"T"', - ), - ), - 92 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0166', - 'dest' => '"T"', - ), - ), - 93 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0163', - 'dest' => '"t"', - ), - ), - 94 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0165', - 'dest' => '"t"', - ), - ), - 95 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0167', - 'dest' => '"t"', - ), - ), - 96 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0168', - 'dest' => '"U"', - ), - ), - 97 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+016A', - 'dest' => '"U"', - ), - ), - 98 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+016C', - 'dest' => '"U"', - ), - ), - 99 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+016E', - 'dest' => '"U"', - ), - ), - 100 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0170', - 'dest' => '"U"', - ), - ), - 101 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0172', - 'dest' => '"U"', - ), - ), - 102 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0169', - 'dest' => '"u"', - ), - ), - 103 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+016B', - 'dest' => '"u"', - ), - ), - 104 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+016D', - 'dest' => '"u"', - ), - ), - 105 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+016F', - 'dest' => '"u"', - ), - ), - 106 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0171', - 'dest' => '"u"', - ), - ), - 107 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0173', - 'dest' => '"u"', - ), - ), - 108 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0174', - 'dest' => '"W"', - ), - ), - 109 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0175', - 'dest' => '"w"', - ), - ), - 110 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0176', - 'dest' => '"Y"', - ), - ), - 111 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0177', - 'dest' => '"y"', - ), - ), - 112 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0178', - 'dest' => '"Y"', - ), - ), - 113 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0179', - 'dest' => '"Z"', - ), - ), - 114 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+017B', - 'dest' => '"Z"', - ), - ), - 115 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+017D', - 'dest' => '"Z"', - ), - ), - 116 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+017A', - 'dest' => '"z"', - ), - ), - 117 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+017C', - 'dest' => '"z"', - ), - ), - 118 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+017E', - 'dest' => '"z"', - ), - ), - 119 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0218', - 'dest' => '"S"', - ), - ), - 120 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0219', - 'dest' => '"s"', - ), - ), - 121 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+021A', - 'dest' => '"T"', - ), - ), - 122 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+021B', - 'dest' => '"t"', - ), - ), - ), - 'latin1_transliterate_ascii' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00E6', - 'dest' => '"ae"', - ), - ), - 1 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00C6', - 'dest' => '"AE"', - ), - ), - 2 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00E5', - 'dest' => '"aa"', - ), - ), - 3 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00C5', - 'dest' => '"AA"', - ), - ), - 4 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00F8', - 'dest' => '"oe"', - ), - ), - 5 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00D8', - 'dest' => '"OE"', - ), - ), - 6 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+009C', - 'dest' => '"oe"', - ), - ), - 7 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+008C', - 'dest' => '"OE"', - ), - ), - 8 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00AA', - 'dest' => '"a"', - ), - ), - 9 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00BA', - 'dest' => '"o"', - ), - ), - 10 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00E4', - 'dest' => '"ae"', - ), - ), - 11 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00F6', - 'dest' => '"oe"', - ), - ), - 12 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00FC', - 'dest' => '"ue"', - ), - ), - 13 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00C4', - 'dest' => '"Ae"', - ), - ), - 14 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00D6', - 'dest' => '"Oe"', - ), - ), - 15 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00DC', - 'dest' => '"Ue"', - ), - ), - ), - 'latin-exta_transliterate_ascii' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0132', - 'dest' => '"IJ"', - ), - ), - 1 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0133', - 'dest' => '"ij"', - ), - ), - 2 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0138', - 'dest' => '"k"', - ), - ), - 3 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0149', - 'dest' => '"\'n"', - ), - ), - 4 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+014A', - 'dest' => '"N"', - ), - ), - 5 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+014B', - 'dest' => '"n"', - ), - ), - 6 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0152', - 'dest' => '"AE"', - ), - ), - 7 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+0153', - 'dest' => '"ae"', - ), - ), - 8 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+017F', - 'dest' => '"s"', - ), - ), - ), - 'math_to_ascii' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00D7', - 'dest' => '"*"', - ), - ), - 1 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00F7', - 'dest' => '"/"', - ), - ), - ), - 'inverted_to_normal' => - array( - 0 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00BF', - 'dest' => 'U+003F', - ), - ), - 1 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00A1', - 'dest' => 'U+0021', - ), - ), - ), - 'latin_search_cleanup' => - array( - 0 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00BC', - 'srcEnd' => 'U+00BE', - 'dest' => 'U+0020', - ), - ), - 1 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+00A2', - 'srcEnd' => 'U+00A7', - 'dest' => 'U+0020', - ), - ), - 2 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00AC', - 'dest' => 'U+002D', - ), - ), - 3 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00AF', - 'dest' => 'U+002D', - ), - ), - 4 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00B5', - 'dest' => 'U+0020', - ), - ), - 5 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00B6', - 'dest' => 'U+0020', - ), - ), - 6 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00B7', - 'dest' => 'U+0020', - ), - ), - 7 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00B8', - 'dest' => 'U+0020', - ), - ), - 8 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00A6', - 'dest' => 'U+0020', - ), - ), - 9 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00A7', - 'dest' => 'U+0020', - ), - ), - 10 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00A8', - 'dest' => 'remove', - ), - ), - 11 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00B0', - 'dest' => 'U+0020', - ), - ), - 12 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00A9', - 'dest' => 'U+0020', - ), - ), - 13 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00AE', - 'dest' => 'U+0020', - ), - ), - 14 => - array( - 'type' => 11, - 'data' => - array( - 'src' => 'U+00B4', - 'dest' => 'U+0020', - ), - ), - 15 => - array( - 'type' => 12, - 'data' => - array( - 'srcStart' => 'U+0080', - 'srcEnd' => 'U+009F', - 'dest' => 'U+0020', - ), - ), - ), -); diff --git a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr.result b/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr.result deleted file mode 100644 index ddcdae3076..0000000000 --- a/tests/lib/Persistence/TransformationProcessor/_fixtures/transformations/search.tr.result +++ /dev/null @@ -1,127 +0,0 @@ - array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+000A', - 'dest' => 'U+0020', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+000D', - 'dest' => 'U+0020', - ), - ), - ), - 'tab_search_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0008', - 'dest' => 'U+0020', - ), - ), - ), - 'specialwords_search_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00AA', - 'dest' => '"a"', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BA', - 'dest' => '"o"', - ), - ), - ), - 'punctuation_normalize' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+0021', - 'dest' => 'U+002E', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+003F', - 'dest' => 'U+002E', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+002C', - 'dest' => 'U+002E', - ), - ), - ), - 'latin_search_decompose' => array ( - 0 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B1', - 'dest' => '"+-"', - ), - ), - 1 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B2', - 'dest' => '"2"', - ), - ), - 2 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B3', - 'dest' => '"3"', - ), - ), - 3 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00B9', - 'dest' => '"1"', - ), - ), - 4 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BA', - 'dest' => '"1"', - ), - ), - 5 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BC', - 'dest' => '"1/4"', - ), - ), - 6 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BD', - 'dest' => '"1/2"', - ), - ), - 7 => array ( - 'type' => 11, - 'data' => array ( - 'src' => 'U+00BE', - 'dest' => '"3/4"', - ), - ), - ), -); - diff --git a/tests/lib/Search/Legacy/Content/HandlerContentTest.php b/tests/lib/Search/Legacy/Content/HandlerContentTest.php index 9be9ef069a..a20d3220a2 100644 --- a/tests/lib/Search/Legacy/Content/HandlerContentTest.php +++ b/tests/lib/Search/Legacy/Content/HandlerContentTest.php @@ -38,12 +38,15 @@ class HandlerContentTest extends AbstractTestCase */ protected function getContentSearchHandler(array $fullTextSearchConfiguration = []) { + $ruleFiles = glob(dirname(__DIR__, 5) . '/src/lib/Resources/slug_converter/transformations/*.tr'); + self::assertNotFalse($ruleFiles, 'Failed to find transformation files'); + $transformationProcessor = new Persistence\TransformationProcessor\DefinitionBased( new Persistence\TransformationProcessor\DefinitionBased\Parser(), new Persistence\TransformationProcessor\PcreCompiler( new Persistence\Utf8Converter() ), - glob(__DIR__ . '/../../../../Persistence/Tests/TransformationProcessor/_fixtures/transformations/*.tr') + $ruleFiles ); $connection = $this->getDatabaseConnection(); $commaSeparatedCollectionValueHandler = new Content\Common\Gateway\CriterionHandler\FieldValue\Handler\Collection( diff --git a/tests/lib/Search/Legacy/Content/HandlerLocationTest.php b/tests/lib/Search/Legacy/Content/HandlerLocationTest.php index 25346ced0b..cf9ca9bf58 100644 --- a/tests/lib/Search/Legacy/Content/HandlerLocationTest.php +++ b/tests/lib/Search/Legacy/Content/HandlerLocationTest.php @@ -40,12 +40,15 @@ class HandlerLocationTest extends AbstractTestCase */ protected function getContentSearchHandler(array $fullTextSearchConfiguration = []) { + $ruleFiles = glob(dirname(__DIR__, 5) . '/src/lib/Resources/slug_converter/transformations/*.tr'); + self::assertNotFalse($ruleFiles, 'Failed to find transformation files'); + $transformationProcessor = new Persistence\TransformationProcessor\DefinitionBased( new Persistence\TransformationProcessor\DefinitionBased\Parser(), new Persistence\TransformationProcessor\PcreCompiler( new Persistence\Utf8Converter() ), - glob(__DIR__ . '/../../../../Persistence/Tests/TransformationProcessor/_fixtures/transformations/*.tr') + $ruleFiles ); $connection = $this->getDatabaseConnection(); $commaSeparatedCollectionValueHandler = new CommonCriterionHandler\FieldValue\Handler\Collection(