| | |
| | return $this->processSegments( $content, $pattern, function( $part ) { |
| | - $out = htmlspecialchars( $part ); |
| | - |
| | - if( str_starts_with( $part, '${' ) && str_ends_with( $part, '}' ) ) { |
| | - $inner = substr( $part, 2, -1 ); |
| | - $out = $this->wrap( '${', 'hl-interp-punct', false ) . |
| | - $this->wrap( $inner, 'hl-variable' ) . |
| | - $this->wrap( '}', 'hl-interp-punct', false ); |
| | - } elseif( str_starts_with( $part, '$' ) && strlen( $part ) > 1 ) { |
| | - $inner = substr( $part, 1 ); |
| | - $out = $this->wrap( '$', 'hl-interp-punct', false ) . |
| | - $this->wrap( $inner, 'hl-variable' ); |
| | - } else { |
| | + if( !str_starts_with( $part, '$' ) || strlen( $part ) <= 1 ) { |
| | $out = $this->wrap( $part, 'hl-string' ); |
| | + } else { |
| | + $isComplex = str_starts_with( $part, '${' ) && |
| | + str_ends_with( $part, '}' ); |
| | + |
| | + $inner = $isComplex ? substr( $part, 2, -1 ) : substr( $part, 1 ); |
| | + $prefix = $isComplex ? '${' : '$'; |
| | + $suffix = $isComplex |
| | + ? $this->wrap( '}', 'hl-interp-punct', false ) |
| | + : ''; |
| | + |
| | + $out = $this->wrap( $prefix, 'hl-interp-punct', false ) . |
| | + $this->wrap( $inner, 'hl-variable' ) . |
| | + $suffix; |
| | } |
| | |