Patch en Regexp para poder usarlas como clave en un Hash
Siguiendo mi proyecto de hacer mi wiki en Ruby, encontré un comportamiento muy raro.
Generé un hash (que se llama @rules) que no tiene un elemento que tiene. O sea, @rules[@rules.keys[2]]
da nil, pero @rules.values[2]
devuelve el objeto asociado a la clave @rules.keys[2]
. Como este hash tiene como claves un montón de expresiones regulares, me imaginé que había un problema con el hash y el eql? de Regexp, así que los implementé de nuevo y monkeypatchié.
Este es el código:
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
Esta corrección me anduvo con la siguiente versión de ruby:
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Espero que les sirva.
Happy hacking,
Aureliano.
2 comentarios:
Aureliano,
Mi nombre es Alexis Walker, tengo una empresa que provee servicios de diseño y programacion. Estoy buscando un programador que tenga muy buenos conocimientos de SQL y que tambien tenga conocimientos de Ruby on Rails para un proyecto nuevo.
El proyecto tiene el potencial de durar mes a mes por varios meses.
Hice una busqueda y encontre tu perfil y queria saber si estarias interesado en conocer mas acerca del proyecto o si conces a alguien que pueda estar interesado.
Muchas gracias,
Alexis Walker
alexis@ikonwire.com
Hola amor!!
Publicar un comentario