Con Aureliano probamos en "ruby 1.9.1p129 (2009-05-12 revision 23412)
[i386-darwin9.7.0]" y funciona como corresponde ! :)  Que bueno que ya no
uso 1.8 :)


2009/7/10 NachoKB <[email protected]>

> 2009/7/10 Pablo Herrero <[email protected]>
>
>> El 9 de julio de 2009 23:50, NachoKB<[email protected]> escribió:
>> Esto me funciona por ejemplo:
>>
>> r1 = /À/u
>> r3 = /À/u
>> r3 = /À/u
>>
>> r1 =~ "asd  À asd "
>> r2 =~ "as"
>>
>> r1 == r3 # devuelve true
>> r2 == r3 # devuelve true
>>
>> Podrias postear como es tu codigo?
>>
>>
> Pablo, yo venía probando, como OP, con los caracteres Unicode escapados, o
> sea que en vez de usar À directamente usaba \303\200... Debido a esto (todos
> mis ejemplos con $KCODE == "UTF8")
>
> irb(main):061:0* a = "À"
>> => "À"
>> irb(main):062:0> b = "\303\200"
>> => "À"
>> irb(main):063:0> a == b
>> => *true*
>>
>
> Ahora probé como lo ponés vos, que, según entiendo, debería ser equivalente
> (supondría que crearía la misma Regexp, de hecho). Y encuentro esto:
>
> irb(main):064:0> c = /\303\200/
>> => /\303\200/
>> irb(main):065:0> d = /À/
>> => /À/
>> irb(main):066:0> c == d
>> => *false*
>>
>
> Por lo tanto, la prueba que nos compete es:
>
> irb(main):046:0* res = [ /\303\200/, /\303\200/u, /À/, /À/u ]
>> => [/\303\200/, /\303\200/u, /À/, /À/u]
>> irb(main):047:0> res.map &:hash
>> => [-*279873035*, -279873035, *429036*, 429036]
>> irb(main):048:0> res.each { |re| re === "hola" }
>> => [/\303\200/, /\303\200/u, /À/, /À/u]
>> irb(main):049:0> res.map &:hash
>> => [-*403010555*, -403010555, *429036*, 429036]
>>
>
> De aquí saco que especificar /u (al menos con el $KCODE en utf) le da lo
> mismo (no lo conocía, por eso ante tu post tuve que investigar un poco).
> Pero lo más importante: *crear las Regexps utilizando los caracteres
> especiales en lugar de su escaping no dispara este bug*...
>
> Por otro lado, me parece que hay 2 bugs: (1) /À/ != /\303\200/ y (2) el bug
> que encontró Aureliano (que una Regexp cambia su estado interno -- y lo
> expone via hash -- sin avisar y por aparentemente nada). Estos dos podrían
> reportarse. Por otro lado ¿alguien tiene a mano un Ruby 1.9 y un JRuby para
> probar esto mismo
>
> Aureliano, me parece que (siendo un poco macho, cuidando de que el
> encodings de los archivos donde esto se guarda no se pierda y probando)
> preferiría declarar las regexps con los caracteres directamente en lugar de
> su escaping (para evitar el monkey patch).
>
> nachokb
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>


-- 
--
--<自由編碼人>--
Ing. Matias Pablo Brutti
Security Consultant
Email : [email protected]
Site: http://www.freedomcoder.com.ar
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a