Class: Hash
- Defined in:
- lib/italian/ruby/alias/hash.rb,
lib/italian/ruby/metodi/hash.rb
Instance Method Summary collapse
-
#+(altra_mappa) ⇒ Object
Somma due mappe.
-
#_stampa(i = 0) ⇒ Object
Rappresentazione per stampa.
-
#congela_in_profondità ⇒ Object
Congela in profondità la mappa.
-
#esiste? ⇒ Boolean
Determina se una mappa non è nulla e non è vuota.
-
#esponi(*keys) ⇒ Object
Espone le chiavi passate in una nuova mappa.
-
#non_esiste? ⇒ Boolean
Determina se una mappa è nulla o è vuota.
-
#non_ha_chiave?(key) ⇒ Boolean
Determina se una mappa non ha una data chiave.
- #non_specificata? ⇒ Object
- #non_specificato? ⇒ Object
-
#puntifica(*prefissi) ⇒ Object
Ritorna una rappresentazione a singolo livello, con notazione “.”.
-
#simbolizza ⇒ Object
Restituisce la mappa con le chiavi convertite in simbolo.
-
#simbolizza! ⇒ Object
Restituisce la mappa con le chiavi convertite in simbolo.
- #specificata? ⇒ Object
- #specificato? ⇒ Object
-
#valori(*keys) ⇒ Object
Espone i valori.
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.
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.
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.
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 |
#simbolizza ⇒ Object
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 |