1212use ReflectionClass ;
1313use Respect \Stringifier \Stringifier ;
1414use Respect \Validation \Message \Placeholder \Listed ;
15+ use Respect \Validation \Message \Placeholder \Name ;
1516use Respect \Validation \Message \Placeholder \Quoted ;
1617use Respect \Validation \Result ;
1718use Respect \Validation \Rule ;
1819
20+ use function array_key_exists ;
1921use function is_array ;
2022use function is_bool ;
2123use function is_scalar ;
@@ -35,12 +37,8 @@ public function __construct(
3537
3638 public function render (Result $ result , Translator $ translator ): string
3739 {
38- $ parameters = $ result ->parameters ;
39- $ parameters ['path ' ] = $ result ->path !== null ? Quoted::fromPath ($ result ->path ) : null ;
40- $ parameters ['input ' ] = $ result ->input ;
41-
42- $ builtName = $ result ->name ?? $ parameters ['path ' ] ?? $ this ->placeholder ('input ' , $ result ->input , $ translator );
43- $ parameters ['name ' ] ??= $ builtName ;
40+ $ parameters = ['path ' => $ result ->path , 'input ' => $ result ->input , 'name ' => $ this ->getName ($ result )];
41+ $ parameters += $ result ->parameters ;
4442
4543 $ rendered = (string ) preg_replace_callback (
4644 '/{{(\w+)(\|([^}]+))?}}/ ' ,
@@ -100,10 +98,6 @@ private function placeholder(
10098 return $ translator ->translate ($ value );
10199 }
102100
103- if ($ name === 'name ' && is_string ($ value )) {
104- return $ value ;
105- }
106-
107101 return $ this ->stringifier ->stringify ($ value , 0 ) ?? print_r ($ value , true );
108102 }
109103
@@ -127,4 +121,25 @@ private function getTemplateMessage(Result $result): string
127121
128122 return $ result ->template ;
129123 }
124+
125+ private function getName (Result $ result ): Name
126+ {
127+ if (array_key_exists ('name ' , $ result ->parameters ) && is_string ($ result ->parameters ['name ' ])) {
128+ return new Name ($ result ->parameters ['name ' ]);
129+ }
130+
131+ if (array_key_exists ('name ' , $ result ->parameters )) {
132+ return new Name ((string ) $ this ->stringifier ->stringify ($ result ->parameters ['name ' ], 0 ));
133+ }
134+
135+ if ($ result ->name !== null ) {
136+ return $ result ->path ? $ result ->name ->withPath ($ result ->path ) : $ result ->name ;
137+ }
138+
139+ if ($ result ->path ?->value !== null ) {
140+ return new Name ((string ) $ this ->stringifier ->stringify ($ result ->path , 0 ));
141+ }
142+
143+ return new Name ((string ) $ this ->stringifier ->stringify ($ result ->input , 0 ));
144+ }
130145}
0 commit comments