Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
CRAP | |
100.00% |
24 / 24 |
EntitySchema\DataAccess\SchemaCleaner | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
11 | |
100.00% |
24 / 24 |
cleanupParameters | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
cleanupArrayOfStrings | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
trimWhitespaceAndControlChars | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
cleanAliasGroups | |
100.00% |
1 / 1 |
4 | |
100.00% |
9 / 9 |
|||
filterEmptyStrings | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
<?php | |
namespace EntitySchema\DataAccess; | |
/** | |
* @license GPL-2.0-or-later | |
*/ | |
class SchemaCleaner { | |
/** | |
* @param string[] $labels | |
* @param string[] $descriptions | |
* @param array<string,string[]> $aliasGroups | |
* @param string $schemaText | |
*/ | |
public static function cleanupParameters( | |
array &$labels, | |
array &$descriptions, | |
array &$aliasGroups, | |
&$schemaText | |
) { | |
$labels = self::cleanupArrayOfStrings( $labels ); | |
$descriptions = self::cleanupArrayOfStrings( $descriptions ); | |
$aliasGroups = self::cleanAliasGroups( $aliasGroups ); | |
$schemaText = self::trimWhitespaceAndControlChars( $schemaText ); | |
} | |
public static function cleanupArrayOfStrings( array $arrayOfStrings ) { | |
foreach ( $arrayOfStrings as &$string ) { | |
$string = self::trimWhitespaceAndControlChars( $string ); | |
} | |
$arrayOfStrings = self::filterEmptyStrings( $arrayOfStrings ); | |
ksort( $arrayOfStrings ); | |
return $arrayOfStrings; | |
} | |
/** | |
* @param string $string The string to trim | |
* | |
* @return string The trimmed string after applying the regex | |
*/ | |
public static function trimWhitespaceAndControlChars( $string ) { | |
return preg_replace( '/^[\p{Z}\p{Cc}\p{Cf}]+|[\p{Z}\p{Cc}\p{Cf}]+$/u', '', $string ); | |
} | |
private static function cleanAliasGroups( array $aliasGroups ): array { | |
foreach ( $aliasGroups as &$aliasGroup ) { | |
$aliasGroup = self::cleanupArrayOfStrings( $aliasGroup ); | |
} | |
unset( $aliasGroup ); | |
foreach ( $aliasGroups as $languageCode => &$aliasGroup ) { | |
$aliasGroup = array_values( array_unique( $aliasGroup ) ); | |
if ( $aliasGroup === [] ) { | |
unset( $aliasGroups[$languageCode] ); | |
} | |
} | |
ksort( $aliasGroups ); | |
return $aliasGroups; | |
} | |
/** | |
* Remove keys with empty values/strings from the array | |
* | |
* Note: This does not renumber numeric keys! | |
* | |
* @param string[] $array | |
* | |
* @return string[] | |
*/ | |
private static function filterEmptyStrings( array $array ): array { | |
foreach ( $array as $key => $value ) { | |
if ( $value === '' ) { | |
unset( $array[$key] ); | |
} | |
} | |
return $array; | |
} | |
} |