Plugin Updates

This commit is contained in:
Tony Volpe
2024-04-02 20:23:21 +00:00
parent 96800520e8
commit 94170ec2c4
1514 changed files with 133309 additions and 105985 deletions

View File

@@ -36,12 +36,13 @@ class TransformerService {
*
* @param mixed $target_value a value to transform.
* @param array $transformer_configs transform configuration.
* @param bool $is_default_set flag on is default value set.
* @param string $default default value.
*
* @throws InvalidArgumentException Throws when one of the requried arguments is missing.
* @return mixed|null
*/
public static function apply( $target_value, array $transformer_configs, $default ) {
public static function apply( $target_value, array $transformer_configs, $is_default_set, $default ) {
foreach ( $transformer_configs as $transformer_config ) {
if ( ! isset( $transformer_config->use ) ) {
throw new InvalidArgumentException( 'Missing required config value: use' );
@@ -56,13 +57,25 @@ class TransformerService {
throw new InvalidArgumentException( "Unable to find a transformer by name: {$transformer_config->use}" );
}
$transformed_value = $transformer->transform( $target_value, $transformer_config->arguments, $default );
// if the transformer returns null, then return the previously transformed value.
if ( null === $transformed_value ) {
return $target_value;
$target_value = $transformer->transform( $target_value, $transformer_config->arguments, $is_default_set ? $default : null );
// Break early when there's no more value to traverse.
if ( null === $target_value ) {
break;
}
}
if ( $is_default_set ) {
// Nulls always return the default value.
if ( null === $target_value ) {
return $default;
}
$target_value = $transformed_value;
// When type of the default value is different from the target value, return the default value
// to ensure type safety.
if ( gettype( $default ) !== gettype( $target_value ) ) {
return $default;
}
}
return $target_value;