Class: Hash

Inherits:
Object show all
Defined in:
lib/italian/ruby/alias/hash.rb,
lib/italian/ruby/metodi/hash.rb

Instance Method Summary collapse

Instance Method Details

#+(altra_mappa) ⇒ Object

Somma due mappe.



79
80
81
82
83
84
85
86
87
88
89
# File 'lib/italian/ruby/metodi/hash.rb', line 79

def +(altra_mappa)
  altra_mappa.each do |chiave, valore|
    if self.has_key? chiave
      valore_sommato = valore + self[chiave]
      self.store chiave, valore_sommato
    else
      self.store chiave, valore
    end
  end
  self
end

#_stampa(i = 0) ⇒ Object

Rappresentazione per stampa.



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/italian/ruby/metodi/hash.rb', line 121

def _stampa(i = 0)
  return "{}" if empty?
  spazi = i.times.map { " " }.join
  spazi_chiavi = (i + 2).times.map { " " }.join
  [ "{",
    *self.map do |k, v|
      if k.is_a? Symbol
        "#{spazi_chiavi}#{k}: #{v._stampa(i + 2)},"
      elsif k.is_a? String
        "#{spazi_chiavi}\"#{k}\" => #{v._stampa(i + 2)},"
      else
        "#{spazi_chiavi}#{k._stampa(i + 2)} => #{v._stampa(i + 2)},"
      end
    end,
    "#{spazi}}"
  ].join("\r\n")
end

#congela_in_profonditàObject

Congela in profondità la mappa.



52
53
54
55
56
57
58
59
# File 'lib/italian/ruby/metodi/hash.rb', line 52

def congela_in_profondità
  self.each do |key, value|
    next unless value.respond_to? :congela_in_profondità
    value.congela_in_profondità
  end
  self.freeze
  self
end

#esiste?Boolean

Determina se una mappa non è nulla e non è vuota.

Returns:

  • (Boolean)


7
8
9
# File 'lib/italian/ruby/metodi/hash.rb', line 7

def esiste?
  !nil? && !empty?
end

#esponi(*keys) ⇒ Object

Espone le chiavi passate in una nuova mappa.



63
64
65
66
# File 'lib/italian/ruby/metodi/hash.rb', line 63

def esponi(*keys)
  return self if keys.none?
  self.select { |key, value| key.in? keys }
end

#non_esiste?Boolean

Determina se una mappa è nulla o è vuota.

Returns:

  • (Boolean)


13
14
15
# File 'lib/italian/ruby/metodi/hash.rb', line 13

def non_esiste?
  !esiste?
end

#non_ha_chiave?(key) ⇒ Boolean

Determina se una mappa non ha una data chiave.

Returns:

  • (Boolean)


19
20
21
# File 'lib/italian/ruby/metodi/hash.rb', line 19

def non_ha_chiave?(key)
  !has_key? key
end

#non_specificata?Object



51
# File 'lib/italian/ruby/alias/hash.rb', line 51

alias         :non_specificata?     :non_esiste?

#non_specificato?Object



50
# File 'lib/italian/ruby/alias/hash.rb', line 50

alias         :non_specificato?     :non_esiste?

#puntifica(*prefissi) ⇒ Object

Ritorna una rappresentazione a singolo livello, con notazione “.”.



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/italian/ruby/metodi/hash.rb', line 93

def puntifica(*prefissi)
  mappa_puntificata = {}

  self.each do |chiave, valore|
    case valore
    when Hash
      valore.puntifica *prefissi, chiave do |chiave_prefissa, valore_finale|
        if block_given?
          yield chiave_prefissa, valore_finale
        else
          mappa_puntificata.store chiave_prefissa, valore_finale
        end
      end
    else
      prefisso = [ *prefissi, chiave ].unisci "."
      if block_given?
        yield prefisso, valore
      else
        mappa_puntificata.store prefisso, valore
      end
    end
  end

  mappa_puntificata
end

#simbolizzaObject

Restituisce la mappa con le chiavi convertite in simbolo. Viene creata una nuova mappa.



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/italian/ruby/metodi/hash.rb', line 38

def simbolizza
  copy = Hash.new
  self.each do |key, value|
    if value.is_a? Hash or value.is_a? Array
      copy[key.to_sym] = value.simbolizza
    else
      copy[key.to_sym] = value
    end
  end
  copy
end

#simbolizza!Object

Restituisce la mappa con le chiavi convertite in simbolo. Viene sostituita la mappa esistente.



26
27
28
29
30
31
32
33
# File 'lib/italian/ruby/metodi/hash.rb', line 26

def simbolizza!
  keys.each do |key|
    value = delete key
    value.simbolizza! if value.is_a? Hash or value.is_a? Array
    self[key.to_sym] = value
  end
  self
end

#specificata?Object



49
# File 'lib/italian/ruby/alias/hash.rb', line 49

alias         :specificata?         :esiste?

#specificato?Object



48
# File 'lib/italian/ruby/alias/hash.rb', line 48

alias         :specificato?         :esiste?

#valori(*keys) ⇒ Object

Espone i valori.



70
71
72
73
74
75
# File 'lib/italian/ruby/metodi/hash.rb', line 70

def valori(*keys)
  return values if keys.none?
  keys.map do |key|
    self[key]
  end
end