Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/hash_extend.rb

Overview

hash_extend.rb

Clase Hash

Esta clase extiende las funcionalidades de la clase Hash de Ruby

Author:

  • Rodrigo Fernández

Instance Method Summary collapse

Instance Method Details

#remove(*keys) ⇒ Object

Retorna un nuevo hash con los elementos borrados según las claves indicadas



61
62
63
64
65
# File 'lib/hash_extend.rb', line 61

def remove(*keys)
  cloned_hash = self.clone
  keys.flatten.each { |key| cloned_hash.delete(key) }
  cloned_hash
end

#remove!(*keys) ⇒ Hash

Note:

Los elementos son borrados del hash original

Borra elementos del hash.

Examples:

hash = {uno: 'uno', dos: 'dos', tres: 'tres'}
hash.remove!(:uno)
  => {:dos=>"dos", :tres=>"tres"}
hash.remove!(:uno, :dos, :tres)
  => {}
hash
  => {}

Parameters:

  • keys (Array)

    las claves a remover separadas por comas o en un arreglo.

Returns:

  • (Hash)

    un hash sin los elementos indicados.



55
56
57
58
# File 'lib/hash_extend.rb', line 55

def remove!(*keys)
  keys.flatten.each { |key| delete(key) }
  self
end

#sample(quantity = 1) ⇒ Hash

Retorna un hash con elementos aleatorios del hash original.

Examples:

hash = {uno: 'uno', dos: 'dos', tres: 'tres'}
hash.sample
  => {dos: 'dos'}
hash.sample(2)
  => {uno: 'uno', tres: 'tres'}

Parameters:

  • quantity (Integer) (defaults to: 1)

    la cantidad de elementos del nuevo hash retornado.

Returns:

  • (Hash)

    un hash con elementos aleatorios del hash original.



19
20
21
22
23
24
25
26
# File 'lib/hash_extend.rb', line 19

def sample(quantity = 1)
  sample_keys = keys.sample(quantity)
  sample_values = {}
  sample_keys.each do |sample_key|
    sample_values[sample_key] = self[sample_key]
  end
  sample_values
end

#sample!(quantity = 1) ⇒ Hash

Retorna un hash con elementos aleatorios del hash original y borra estos elementos del hash.

Examples:

hash = {uno: 'uno', dos: 'dos', tres: 'tres'}
hash.sample
  => {dos: 'dos'}
hash.sample(2)
  => {uno: 'uno', tres: 'tres'}

Parameters:

  • quantity (Integer) (defaults to: 1)

    la cantidad de elementos del nuevo hash retornado.

Returns:

  • (Hash)

    un hash con elementos aleatorios del hash original.



37
38
39
40
41
# File 'lib/hash_extend.rb', line 37

def sample!(quantity = 1)
  samples = sample(quantity)
  remove!(samples.keys)
  samples
end