Class: Array

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

Instance Method Summary collapse

Instance Method Details

#_stampa(i = 0) ⇒ Object

Rappresentazione per stampa.



175
176
177
178
179
180
181
182
183
184
185
# File 'lib/italian/ruby/metodi/array.rb', line 175

def _stampa(i = 0)
  return "[]" if empty?
  spazi = i.times.map { " " }.join
  spazi_valori = (i + 2).times.map { " " }.join
  [ "[",
    *self.map do |e|
      "#{spazi_valori}#{e._stampa(i + 2)},"
    end,
    "#{spazi}]"
  ].join("\r\n")
end

#campiona(*method_names) ⇒ Object

Esegue i metodi specificati per ogni elemento della lista.



60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/italian/ruby/metodi/array.rb', line 60

def campiona(*method_names)
  self.map do |element|
    method_names.map do |method_name|
      if element.respond_to? method_name
        element.send method_name
      elsif element.is_a? Hash
        element[method_name]
      else
        raise ArgumentError, "Array elements do not respond to #{method_name}."
      end
    end
  end
end

#congela_in_profonditàObject

Congela in profondità la lista.



118
119
120
121
122
123
124
125
# File 'lib/italian/ruby/metodi/array.rb', line 118

def congela_in_profondità
  self.each do |element|
    next unless element.respond_to? :congela_in_profondità
    element.congela_in_profondità
  end
  self.freeze
  self
end

#esiste?Boolean

Determina se una lista non è nullo e non è vuoto.

Returns:

  • (Boolean)


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

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

#in_mappa(&block) ⇒ Object

Converte la lista in una mappa.



147
148
149
150
151
152
153
# File 'lib/italian/ruby/metodi/array.rb', line 147

def in_mappa(&block)
  if block_given?
    self.map(&block).to_h
  else
    self.to_h
  end
end

#in_pacchetti_equi(da: 25) ⇒ Object

Divide la lista in n pacchetti in modo che ogni pacchetto abbia circa lo stesso numero di elementi.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/italian/ruby/metodi/array.rb', line 20

def in_pacchetti_equi da: 25
  conteggio = self.count

  if conteggio < da
    avanzamento = da.in_decimale / conteggio
    indice = 0

    self.each.with_index do |elemento, indice_elemento|
      pacchetto = [ elemento ]
      indice += avanzamento
      indice = da if indice_elemento == conteggio - 1
      yield pacchetto, indice_elemento + 1, conteggio if block_given?
    end
  else
    avanzamento = conteggio / da.in_decimale
    elementi_presi = 0
    contatore = 0
    indice = 0

    while contatore < da
      elementi_da_prendere = (indice + avanzamento).round - 1
      pacchetto = self[elementi_presi..elementi_da_prendere]
      elementi_presi = elementi_da_prendere + 1
      indice += avanzamento
      contatore += 1
      yield pacchetto, elementi_presi, conteggio if block_given?
    end
  end

  self
end

#in_pacchetti_percentuali(&blocco) ⇒ Object

Pacchetti equi da 100.



54
55
56
# File 'lib/italian/ruby/metodi/array.rb', line 54

def in_pacchetti_percentuali &blocco
  in_pacchetti_equi da: 100, &blocco
end

#mappa_e_appiattisci(&block) ⇒ Object

Mappa e appiattisce in un unico metodo.



141
142
143
# File 'lib/italian/ruby/metodi/array.rb', line 141

def mappa_e_appiattisci(&block)
  self.map.with_index(&block).flatten
end

#mappa_e_compatta(&block) ⇒ Object

Mappa e compatta in un unico metodo.



135
136
137
# File 'lib/italian/ruby/metodi/array.rb', line 135

def mappa_e_compatta(&block)
  self.map.with_index(&block).compact
end

#mappa_e_rimuovi_duplicati(&block) ⇒ Object

Mappa e rimuove duplicati in un unico metodo.



129
130
131
# File 'lib/italian/ruby/metodi/array.rb', line 129

def mappa_e_rimuovi_duplicati(&block)
  self.map.with_index(&block).uniq
end

#non_include?(*args) ⇒ Boolean

Determina se una lista non include un dato elemento.

Returns:

  • (Boolean)


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

def non_include?(*args)
  !include? *args
end

#pizzica(method_name, *method_args) ⇒ Object

Esegue il metodo specificato con gli argomenti specificati per ogni elemento della lista.



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/italian/ruby/metodi/array.rb', line 77

def pizzica(method_name, *method_args)
  self.map do |element|
    if element.respond_to? method_name
      element.send method_name, *method_args
    elsif element.is_a? Hash
      element[method_name]
    else
      raise ArgumentError, "Array elements do not respond to #{method_name}."
    end
  end
end

#salta_gli_ultimiObject



96
# File 'lib/italian/ruby/alias/array.rb', line 96

alias         :salta_gli_ultimi         :tronca

#salta_il_primoObject

Restituisce la lista saltando il primo elemento.



169
170
171
# File 'lib/italian/ruby/metodi/array.rb', line 169

def salta_il_primo
  self.drop 1
end

#salta_la_primaObject



98
# File 'lib/italian/ruby/alias/array.rb', line 98

alias         :salta_la_prima           :salta_il_primo

#salta_le_ultimeObject



97
# File 'lib/italian/ruby/alias/array.rb', line 97

alias         :salta_le_ultime          :tronca

#secondaObject



95
# File 'lib/italian/ruby/alias/array.rb', line 95

alias         :seconda                  :secondo

#secondoObject

Restituisce il secondo elemento della lista.



157
158
159
# File 'lib/italian/ruby/metodi/array.rb', line 157

def secondo
  self[1]
end

#simbolizzaObject

Converte tutti gli elementi della lista in simboli, creando una nuova lista.



106
107
108
109
110
111
112
113
114
# File 'lib/italian/ruby/metodi/array.rb', line 106

def simbolizza
  self.map do |element|
    if element.is_a? Hash or element.is_a? Array
      element.simbolizza
    else
      element
    end
  end
end

#simbolizza!Object

Converte tutti gli elementi della lista in simboli, sostituendo la lista originale.



92
93
94
95
96
97
98
99
100
101
# File 'lib/italian/ruby/metodi/array.rb', line 92

def simbolizza!
  self.map! do |element|
    if element.is_a? Hash or element.is_a? Array
      element.simbolizza!
    else
      element
    end
  end
  self
end

#specificata?Object



92
# File 'lib/italian/ruby/alias/array.rb', line 92

alias         :specificata?             :esiste?

#specificate?Object



94
# File 'lib/italian/ruby/alias/array.rb', line 94

alias         :specificate?             :esiste?

#specificati?Object



93
# File 'lib/italian/ruby/alias/array.rb', line 93

alias         :specificati?             :esiste?

#specificato?Object



91
# File 'lib/italian/ruby/alias/array.rb', line 91

alias         :specificato?             :esiste?

#tranne_il_primoObject



100
# File 'lib/italian/ruby/alias/array.rb', line 100

alias         :tranne_il_primo          :salta_il_primo

#tranne_la_primaObject



99
# File 'lib/italian/ruby/alias/array.rb', line 99

alias         :tranne_la_prima          :salta_il_primo

#tronca(n = 1) ⇒ Object

Restituisce la lista togliendo gli ultimi n elementi.



163
164
165
# File 'lib/italian/ruby/metodi/array.rb', line 163

def tronca(n = 1)
  self[0..(-1 - n)]
end