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
