Parece que las opciones menos probables a veces son las que pasan.
Monkeypatchié Regexp y arreglé el problema. Este es el patch:
class Regexp
alias_method :old_rapidito_inspect, :inspect
def inspect
@inspect = old_rapidito_inspect if @inspect.nil?
@inspect
end
def eql?( other )
false if other.class != Regexp
self.inspect == other.inspect
end
alias_method :"==", :eql?
def hash
self.inspect.hash
end
end
Bueno,
parece que tengo post nuevo en mi blog :D,
Aureliano.
2009/7/5 Rodrigo Dominguez <[email protected]>:
> Debería... pero si a veces anda y a veces no, no tenes forma de atrapar
> cuando no anda, y loguear toda la información de la instancia de la clave y
> la instancia con la cual queres buscar esa clave?
>
> Es un poco rompe pelotas, pero quisiera imaginarme que un bug en el
> lenguaje/librería de hash sea la opción menos probable, y que si a veces anda
> y a veces no, se deba a un error lógico del código más que a un error de
> ruby, si fuese un error lógico, reimplementar eql y hash de Regexp es lo más
> tedioso... aunque debería de ser relativamente sencillo ;)
>
> En fin, de las 9 AM que estoy programando, me voy a pasear un rato, si no lo
> resolves pásame el código :)
>
> Saludos ;)
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of
> Aureliano Calvo
> Sent: Domingo, 05 de Julio de 2009 06:37 p.m.
> To: Rodrigo Dominguez
> Cc: Grupo Ruby Argentina
> Subject: Re: [RubyArg] Expresiones regulares como claves en hashes
>
> La clave en cuestión es
> /([A-Za-z0-9]|\303[\200-\277])*(_([A-Za-z0-9]|\303[\200-\277])+)+/.
> Estoy probando con:
> $ ruby --version
> ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
>
> Lo raro, es que anda a veces sí y a veces no. El código que hace que
> todo falle es demasiado grande como para postearlo en la lista y no
> encontré como achicarlo. Estoy pensando en cortar camino y
> reimplementar eql y hash de Regexp. Eso debería andar.
>
> Aureliano.
>
> 2009/7/5 Rodrigo Dominguez <[email protected]>:
>> http://www.ruby-doc.org/core/classes/Hash.html
>>
>> Siguiendo la doc, recupera la key del hash que no te devuelve (ya fuese
>> iterando el hash, o lo que fuese), y a través del .eql? fijate si es igual a
>> la key con la cual queres traer el valor de esa key...
>>
>> Si todavía te putea, volviendo a la doc del Hash, implementa tu propia clase
>> que defina eql? Y hash y ahí debería de andarte.
>>
>> Por otro lado, si queres, postea la key en cuestión y como es que te falla.
>>
>> Saludos ;)
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Aureliano Calvo
>> Sent: Domingo, 05 de Julio de 2009 06:04 p.m.
>> To: Grupo Ruby Argentina
>> Subject: [RubyArg] Expresiones regulares como claves en hashes
>>
>> Hola,
>>
>> estoy teniendo un bug muy raro en el que tengo un Hash que tiene como
>> claves regex y símbolos contesta que no tiene un elemento que tiene.
>>
>> El hash tiene más de 10 elementos y cuando hago h[h.keys[2]] devuelve
>> nil!!!!!!!!
>>
>> ¿Saben si se pueden usar expresiones regulares como claves de hashes?
>> En la iteración anterior, el hash con regexs como claves andaba joya.
>>
>> ¿Les pasó algo parecido antes?¿el problema vendrá por otro lado?
>>
>> Muchas gracias,
>> Aureliano.
>> _______________________________________________
>> Ruby mailing list
>> [email protected]
>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>>
>>
>> __________ Información de ESET Smart Security, versión de la base de firmas
>> de virus 4219 (20090705) __________
>>
>> ESET Smart Security ha comprobado este mensaje.
>>
>> http://www.eset.com
>>
>>
>>
>
> __________ Informacin de ESET Smart Security, versin de la base de firmas de
> virus 4219 (20090705) __________
>
> ESET Smart Security ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
> __________ Información de ESET Smart Security, versión de la base de firmas
> de virus 4219 (20090705) __________
>
> ESET Smart Security ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar