@@ -183,7 +183,7 @@ public static function parse(Parser $parser, TokensList $list, array $options =
183183 'value ' => '' ,
184184 );
185185 $ state = 1 ;
186- } elseif ($ lastOption [1 ] === 'expr ' ) {
186+ } elseif ($ lastOption [1 ] === 'expr ' || $ lastOption [ 1 ] === ' expr= ' ) {
187187 // This is a keyword that is followed by an expression.
188188 // The expression is used by the specialized parser.
189189
@@ -192,8 +192,11 @@ public static function parse(Parser $parser, TokensList $list, array $options =
192192 $ ret ->options [$ lastOptionId ] = array (
193193 // @var string The name of the option.
194194 'name ' => $ token ->value ,
195+ // @var bool Whether it contains an equal sign.
196+ // This is used by the builder to rebuild it.
197+ 'equals ' => $ lastOption [1 ] === 'expr= ' ,
195198 // @var Expression The parsed expression.
196- 'expr ' => null ,
199+ 'expr ' => '' ,
197200 );
198201 $ state = 1 ;
199202 }
@@ -208,7 +211,7 @@ public static function parse(Parser $parser, TokensList $list, array $options =
208211 // This is outside the `elseif` group above because the change might
209212 // change this iteration.
210213 if ($ state === 2 ) {
211- if ($ lastOption [1 ] === 'expr ' ) {
214+ if ($ lastOption [1 ] === 'expr ' || $ lastOption [ 1 ] === ' expr= ' ) {
212215 $ ret ->options [$ lastOptionId ]['expr ' ] = Expression::parse (
213216 $ parser ,
214217 $ list ,
@@ -250,7 +253,8 @@ public static function parse(Parser $parser, TokensList $list, array $options =
250253 && $ lastOption
251254 && ($ lastOption [1 ] == 'expr '
252255 || $ lastOption [1 ] == 'var '
253- || $ lastOption [1 ] == 'var= ' )
256+ || $ lastOption [1 ] == 'var= '
257+ || $ lastOption [1 ] == 'expr= ' )
254258 ) {
255259 $ parser ->error (
256260 sprintf (
@@ -287,7 +291,7 @@ public static function build($component, array $options = array())
287291 $ options [] = $ option ;
288292 } else {
289293 $ options [] = $ option ['name ' ]
290- . (!empty ($ option ['equals ' ]) ? '= ' : ' ' )
294+ . (( !empty ($ option [ ' equals ' ]) && $ option ['equals ' ]) ? '= ' : ' ' )
291295 . (!empty ($ option ['expr ' ]) ? $ option ['expr ' ] : $ option ['value ' ]);
292296 }
293297 }
0 commit comments