[ruby-core:121299] [Ruby master Feature#21182] Add Hash#rename

Issue #21182 has been reported by calebm (Caleb Meyer). ---------------------------------------- Feature #21182: Add Hash#rename https://bugs.ruby-lang.org/issues/21182 * Author: calebm (Caleb Meyer) * Status: Open ---------------------------------------- Abstract: Implement Hash#rename which takes as arguments a from key and a to key and renames the from key to the new name. Background: One of the most common data transformations for a hash (in my experience) is renaming a single key. You can do this with the existing hash methods (e.g. `hash['new'] = hash.delete('old')` or `hash.transform_keys('old' => 'new')`) but they feel a bit clunky. Proposal: Add a new method to Hash, something like this: ```ruby class Hash # usage { old: 'value' }.rename(:old, to: :new) # => { new: 'value' } def rename(from, to:) transform_keys(from => to) end def rename!(from, to:) transform_keys!(from => to) end end ``` -- https://bugs.ruby-lang.org/

Issue #21182 has been updated by nobu (Nobuyoshi Nakada). `transform_keys('old' => 'new')` feels good enough. At least, `('old' => 'new')` (or even `('old', 'new')`, `(from: 'old', to: 'new')`) looks clearer than `(:old, to: :new)` to me. And another concern is if the method name `rename` express the semantics well. Is there a consensus that `name` means `key`? ---------------------------------------- Feature #21182: Add Hash#rename https://bugs.ruby-lang.org/issues/21182#change-112266 * Author: calebm (Caleb Meyer) * Status: Open ---------------------------------------- Abstract: Implement Hash#rename which takes as arguments a from key and a to key and renames the from key to the new name. Background: One of the most common data transformations for a hash (in my experience) is renaming a single key. You can do this with the existing hash methods (e.g. `hash['new'] = hash.delete('old')` or `hash.transform_keys('old' => 'new')`) but they feel a bit clunky. Proposal: Add a new method to Hash, something like this: ```ruby class Hash # usage { old: 'value' }.rename(:old, to: :new) # => { new: 'value' } def rename(from, to:) transform_keys(from => to) end def rename!(from, to:) transform_keys!(from => to) end end ``` -- https://bugs.ruby-lang.org/
participants (2)
-
calebm (Caleb Meyer)
-
nobu (Nobuyoshi Nakada)