SUI-Components / sui

Monorepo for SUI (Simple User Interface) packages.
169 stars 33 forks source link

Fix/interpolate with multiple nesting keys #1801

Closed ferransimon closed 1 month ago

ferransimon commented 1 month ago

Description

The interpolate function is using a statefull regex but it is being reused without reseting its inner state, in order to handle its statefull nature we need to reset the inner state lastIndex every time we need to reuse it to match something from the beginning.

Example

I found the bug by providing this literal: %[item1]Para verificar tu perfil, por favor revisa el email que te hemos enviado a: %[email][email]%.[item1]%%[item2]¿Este no es tu email? %[changeEmail]Cámbialo ahora[changeEmail]%.[item2]%%[item3]¿No lo has recibido? Revisa tu carpeta de spam o añade pushinfojobs@push.infojobs.net a remitentes seguros.[item3]%%[item4]¿Aún no lo has recibido? %[resend]Te lo reenviamos[resend]%[item4]%

It was handling correctly the first and third nested elements but the second was not able to handle it due to the use of global regex