Alter_key function for Hash

Hallo all.
Of course i am reinventing the wheel, but may be that would be helpful
for
some one. With this method you can replace a key with a new one in a
Hash.
It could be helpful for example if you want to parse a lot of XML
documents
in hash from various external sources in one Library, so that you can
handle a unified interface.

class Hash

Replace an old key with a new one

=== Arguments:

* old_key

* new_key

def alter_key(old_key, new_key)
raise IndexError.new(“key already exist”) if self[new_key]
if self.has_key?(old_key)
self[new_key] = self[old_key]
self.delete(old_key)
end
return self
end
end

irb(main):006:0> hash = Hash.new
=> {}
irb(main):007:0> hash[:old] = 10000
=> 10000
irb(main):008:0> hash.alter_key(:old, :new)
=> {:new=>10000}
irb(main):009:0> hash[:new]
=> 10000

On Wed, 2007-09-12 at 02:57 +0900, Nikolay P. wrote:

end
end

It can even be written more concisely as:

class Hash
def alter_key(old_key, new_key)
raise IndexError, ‘key already exists’ if has_key? new_key
store(new_key, delete(old_key)) if has_key? old_key
return self
end
end

Cheers,
Daniel S.

On Tuesday 11 September 2007 21:14:43 Daniel S. wrote:

Replace an old key with a new one

return self
end

end

Cheers,
Daniel S.

Thanks Danial.
This is just a wheel :slight_smile:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs