italian-ruby 0.9.18 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +2 -9
- data/bin/italian-rspec +9 -18
- data/bin/italian-ruby +7 -7
- data/{vim → dev/vim}/ftdetect/ir.vim +0 -0
- data/{vim → dev/vim}/syntax/ir.vim +0 -0
- data/{vim → dev/vim}/vimrc +0 -0
- data/{vscode → dev/vscode}/italianruby.tmGrammar.json +0 -0
- data/italian-ruby.gemspec +7 -6
- data/lib/italian/ruby.rb +39 -14
- data/lib/italian/ruby/alias.rb +28 -0
- data/lib/italian/ruby/{core_ext → alias}/array.rb +11 -80
- data/lib/italian/ruby/{core_ext → alias}/class.rb +9 -2
- data/lib/italian/ruby/{core_ext → alias}/date.rb +4 -35
- data/lib/italian/ruby/{core_ext → alias}/enumerator.rb +4 -5
- data/lib/italian/ruby/{core_ext/errors.rb → alias/error.rb} +6 -5
- data/lib/italian/ruby/{core_ext → alias}/false_class.rb +4 -3
- data/lib/italian/ruby/{core_ext → alias}/file.rb +6 -9
- data/lib/italian/ruby/{core_ext → alias}/float.rb +3 -4
- data/lib/italian/ruby/{core_ext → alias}/hash.rb +3 -39
- data/lib/italian/ruby/{core_ext → alias}/integer.rb +2 -26
- data/lib/italian/ruby/alias/io.rb +7 -0
- data/lib/italian/ruby/alias/kernel.rb +9 -0
- data/lib/italian/ruby/{core_ext → alias}/main.rb +5 -23
- data/lib/italian/ruby/alias/module.rb +9 -0
- data/lib/italian/ruby/{core_ext → alias}/nil_class.rb +3 -5
- data/lib/italian/ruby/alias/numeric.rb +3 -0
- data/lib/italian/ruby/alias/object.rb +39 -0
- data/lib/italian/ruby/alias/open_struct.rb +3 -0
- data/lib/italian/ruby/{core_ext → alias}/proc.rb +4 -5
- data/lib/italian/ruby/{core_ext → alias}/range.rb +2 -7
- data/lib/italian/ruby/{core_ext → alias}/rational.rb +3 -4
- data/lib/italian/ruby/{core_ext/gems → alias}/rspec.rb +7 -61
- data/lib/italian/ruby/alias/set.rb +39 -0
- data/lib/italian/ruby/alias/socket.rb +30 -0
- data/lib/italian/ruby/{core_ext → alias}/string.rb +3 -69
- data/lib/italian/ruby/{core_ext → alias}/symbol.rb +4 -5
- data/lib/italian/ruby/alias/time.rb +26 -0
- data/lib/italian/ruby/{core_ext → alias}/true_class.rb +4 -3
- data/lib/italian/ruby/errori.rb +84 -0
- data/lib/italian/ruby/metodi.rb +16 -0
- data/lib/italian/ruby/metodi/array.rb +105 -0
- data/lib/italian/ruby/metodi/date.rb +37 -0
- data/lib/italian/ruby/metodi/hash.rb +57 -0
- data/lib/italian/ruby/metodi/integer.rb +45 -0
- data/lib/italian/ruby/metodi/json.rb +17 -0
- data/lib/italian/ruby/metodi/kernel.rb +86 -0
- data/lib/italian/ruby/metodi/main.rb +31 -0
- data/lib/italian/ruby/metodi/module.rb +46 -0
- data/lib/italian/ruby/metodi/nil_class.rb +11 -0
- data/lib/italian/ruby/metodi/object.rb +64 -0
- data/lib/italian/ruby/{core_ext → metodi}/open_struct.rb +5 -7
- data/lib/italian/ruby/metodi/range.rb +11 -0
- data/lib/italian/ruby/metodi/rspec.rb +64 -0
- data/lib/italian/ruby/metodi/string.rb +142 -0
- data/lib/italian/ruby/metodi/time.rb +51 -0
- data/lib/italian/ruby/traduttore.rb +93 -122
- data/lib/italian/ruby/traduttore/linea.rb +144 -0
- data/lib/italian/ruby/traduttore/pezzo.rb +106 -0
- data/lib/italian/ruby/traduttore/stringa.rb +76 -0
- data/lib/italian/ruby/{version.rb → versione.rb} +1 -1
- metadata +58 -43
- data/Rakefile +0 -6
- data/lib/italian/ruby/core_ext.rb +0 -32
- data/lib/italian/ruby/core_ext/gems/bson.rb +0 -26
- data/lib/italian/ruby/core_ext/gems/fabrication.rb +0 -12
- data/lib/italian/ruby/core_ext/gems/hanami.rb +0 -92
- data/lib/italian/ruby/core_ext/gems/rack_test.rb +0 -15
- data/lib/italian/ruby/core_ext/json.rb +0 -11
- data/lib/italian/ruby/core_ext/kernel.rb +0 -111
- data/lib/italian/ruby/core_ext/module.rb +0 -32
- data/lib/italian/ruby/core_ext/numeric.rb +0 -6
- data/lib/italian/ruby/core_ext/object.rb +0 -83
- data/lib/italian/ruby/core_ext/time.rb +0 -69
- data/lib/italian/ruby/errore.rb +0 -52
- data/lib/italian/ruby/utils/debug.rb +0 -134
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "set"
|
3
|
+
|
4
|
+
class Set
|
5
|
+
|
6
|
+
alias :ispeziona :inspect
|
7
|
+
alias :per_ogni :each
|
8
|
+
alias :per_ognuno :each
|
9
|
+
alias :per_ognuna :each
|
10
|
+
alias :mappa :map
|
11
|
+
alias :vuoto? :empty?
|
12
|
+
alias :vuota? :empty?
|
13
|
+
alias :primo :first
|
14
|
+
alias :prima :first
|
15
|
+
alias :primi :first
|
16
|
+
alias :prime :first
|
17
|
+
alias :conteggio :count
|
18
|
+
alias :conteggia :count
|
19
|
+
alias :lunghezza :count
|
20
|
+
alias :tutti? :all?
|
21
|
+
alias :tutte? :all?
|
22
|
+
alias :alcuni? :any?
|
23
|
+
alias :alcune? :any?
|
24
|
+
alias :almeno_uno? :any?
|
25
|
+
alias :almeno_una? :any?
|
26
|
+
alias :nessuno? :none?
|
27
|
+
alias :nessuna? :none?
|
28
|
+
alias :uno? :one?
|
29
|
+
alias :una? :one?
|
30
|
+
alias :congela :freeze
|
31
|
+
alias :seleziona :select
|
32
|
+
alias :seleziona! :select!
|
33
|
+
alias :scarta :reject
|
34
|
+
alias :scarta! :reject!
|
35
|
+
alias :in_lista :to_a
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
Insieme = Set
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "socket"
|
3
|
+
|
4
|
+
class Socket
|
5
|
+
|
6
|
+
alias :scrivi :write
|
7
|
+
alias :leggi :read
|
8
|
+
alias :leggi_linea :readline
|
9
|
+
alias :chiudi :close
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
class UNIXSocket
|
14
|
+
|
15
|
+
alias :scrivi :write
|
16
|
+
alias :leggi :read
|
17
|
+
alias :ricevi :recv
|
18
|
+
alias :leggi_linea :readline
|
19
|
+
alias :chiudi :close
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
class UNIXServer
|
24
|
+
|
25
|
+
alias :accetta :accept
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
Presa = Socket
|
@@ -1,7 +1,4 @@
|
|
1
|
-
|
2
|
-
# Core Ext - String
|
3
|
-
#
|
4
|
-
# Alias di metodi della classe String.
|
1
|
+
# frozen_string_literal: true
|
5
2
|
|
6
3
|
class String
|
7
4
|
alias :congela :freeze
|
@@ -29,80 +26,17 @@ class String
|
|
29
26
|
alias :rimpiazza :gsub
|
30
27
|
alias :rimpiazza! :gsub!
|
31
28
|
alias :spoglia :strip
|
29
|
+
alias :mastica :chomp
|
32
30
|
alias :conteggio :count
|
33
31
|
alias :conteggia :count
|
32
|
+
alias :dimensione_in_byte :bytesize
|
34
33
|
alias :codifica :encoding
|
35
34
|
alias :codifica_in :encode
|
36
35
|
alias :codifica_valida? :valid_encoding?
|
37
36
|
alias :forza_codifica_a :force_encoding
|
38
37
|
|
39
|
-
def esiste?
|
40
|
-
!nil? and self != ""
|
41
|
-
end
|
42
38
|
alias :specificato? :esiste?
|
43
39
|
alias :specificata? :esiste?
|
44
|
-
|
45
|
-
def non_include?(*args)
|
46
|
-
!include? *args
|
47
|
-
end
|
48
|
-
|
49
|
-
def non_inizia_con?(*args)
|
50
|
-
!inizia_con? *args
|
51
|
-
end
|
52
|
-
|
53
|
-
def non_finisce_con?(*args)
|
54
|
-
!finisce_con? *args
|
55
|
-
end
|
56
|
-
|
57
|
-
def in_data
|
58
|
-
return unless defined? Date
|
59
|
-
Date.parse self
|
60
|
-
end
|
61
|
-
|
62
|
-
def in_tempo
|
63
|
-
return unless defined? Time
|
64
|
-
Time.parse self
|
65
|
-
end
|
66
|
-
|
67
|
-
def in_classe
|
68
|
-
Object.const_get self
|
69
|
-
end
|
70
|
-
|
71
|
-
def primi(n)
|
72
|
-
self[0..(n - 1)]
|
73
|
-
end
|
74
|
-
|
75
|
-
def primo_carattere
|
76
|
-
self[0]
|
77
|
-
end
|
78
|
-
|
79
|
-
def ultimo_carattere
|
80
|
-
self[-1]
|
81
|
-
end
|
82
|
-
|
83
|
-
def salta_caratteri(n)
|
84
|
-
self[(n - 1)..-1]
|
85
|
-
end
|
86
|
-
|
87
|
-
def salta_il_primo_carattere
|
88
|
-
self[1..-1]
|
89
|
-
end
|
90
|
-
|
91
|
-
def tronca_caratteri(n)
|
92
|
-
self[0..(-1 - n)]
|
93
|
-
end
|
94
|
-
|
95
|
-
def tronca
|
96
|
-
self[0..-2]
|
97
|
-
end
|
98
|
-
|
99
|
-
def adatta(l)
|
100
|
-
if self.length > l
|
101
|
-
"#{self[0..l - 3]}.."
|
102
|
-
else
|
103
|
-
self.ljust l, " "
|
104
|
-
end
|
105
|
-
end
|
106
40
|
end
|
107
41
|
|
108
42
|
Stringa = String
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Time
|
4
|
+
|
5
|
+
class << self
|
6
|
+
alias :adesso :now
|
7
|
+
alias :alla :at
|
8
|
+
alias :al :at
|
9
|
+
end
|
10
|
+
|
11
|
+
alias :in_stringa :to_s
|
12
|
+
alias :in_numero :to_i
|
13
|
+
alias :formatta :strftime
|
14
|
+
alias :localizza :localtime
|
15
|
+
alias :secondi :sec
|
16
|
+
alias :secondo :sec
|
17
|
+
alias :minuto :min
|
18
|
+
alias :minuti :min
|
19
|
+
alias :ore :hour
|
20
|
+
alias :ora :hour
|
21
|
+
|
22
|
+
alias :formatta :formatta_locale
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
Tempo = Time
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
##
|
4
|
+
# Modulo per la gestione degli errori rilevati durante
|
5
|
+
# l'esecuzione di codice Ruby tradotto da ItalianRuby.
|
6
|
+
module Italian
|
7
|
+
module Ruby
|
8
|
+
module Errori
|
9
|
+
|
10
|
+
##
|
11
|
+
# Errore stringa non terminata.
|
12
|
+
class StringaNonTerminata < StandardError; end
|
13
|
+
|
14
|
+
##
|
15
|
+
# Nomi classi errori tradotti.
|
16
|
+
TRADUZIONI_NOMI_CLASSI_ERRORI = Hash[
|
17
|
+
"SyntaxError" => "ErroreSintassi",
|
18
|
+
"LoadError" => "ErroreCaricamento"
|
19
|
+
].freeze
|
20
|
+
|
21
|
+
def self.recupera(errore, archivio = nil, numero_linea = nil)
|
22
|
+
archivio, numero_linea = ottieni_archivio_e_numero_linea_per_sintassi errore if errore.class.name == "SyntaxError"
|
23
|
+
archivio, numero_linea = ottieni_archivio_e_numero_linea_da errore if archivio.nil?
|
24
|
+
linee_sorgente = File.readlines archivio
|
25
|
+
numero_linea_errata = numero_linea if numero_linea != nil
|
26
|
+
numero_linea_errata = ottieni_numero_linea_da errore, archivio if numero_linea_errata.nil?
|
27
|
+
linea_errata = linee_sorgente[numero_linea_errata - 1].strip
|
28
|
+
linea_errata_precedente = linee_sorgente[numero_linea_errata - 2].strip if numero_linea_errata >= 2
|
29
|
+
linea_errata_successiva = linee_sorgente[numero_linea_errata].strip if numero_linea_errata < linee_sorgente.length
|
30
|
+
nome_classe_errore = TRADUZIONI_NOMI_CLASSI_ERRORI.fetch errore.class.name, nil
|
31
|
+
nome_classe_errore = errore.class.name if nome_classe_errore.nil?
|
32
|
+
|
33
|
+
puts "-------".rosso
|
34
|
+
puts "Si è verificato un errore: #{nome_classe_errore}.".rosso
|
35
|
+
puts
|
36
|
+
puts "\t [#{numero_linea_errata - 1}] #{linea_errata_precedente}".rosso if linea_errata_precedente != nil
|
37
|
+
puts "\t> [#{numero_linea_errata}] #{linea_errata}".rosso
|
38
|
+
puts "\t [#{numero_linea_errata + 1}] #{linea_errata_successiva}".rosso if linea_errata_successiva != nil
|
39
|
+
puts
|
40
|
+
puts errore.message.rosso
|
41
|
+
puts errore.backtrace.map(&:rosso)
|
42
|
+
puts "-------".rosso
|
43
|
+
|
44
|
+
exit
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
##
|
50
|
+
# Ottiene l'archivio e il numero della linea errata dal messaggio
|
51
|
+
# di errore. Utilizzato per gli errori di sintassi.
|
52
|
+
def self.ottieni_archivio_e_numero_linea_per_sintassi(errore)
|
53
|
+
archivio_e_numero_linea = errore.message.partition(": ").first
|
54
|
+
archivio, numero_linea = archivio_e_numero_linea.split(":")
|
55
|
+
numero_linea = numero_linea.to_i
|
56
|
+
[ archivio, numero_linea ]
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# Ottiene l'archivio e il numero della linea errata dalla traccia dell'errore.
|
61
|
+
def self.ottieni_archivio_e_numero_linea_da(errore)
|
62
|
+
traccia = errore.backtrace[0]
|
63
|
+
traccia = errore.backtrace[1] if errore.message.start_with? "wrong number of arguments"
|
64
|
+
|
65
|
+
archivio_e_numero_linea = traccia.partition(":in").first
|
66
|
+
archivio, numero_linea = archivio_e_numero_linea.split(":")
|
67
|
+
numero_linea = numero_linea.to_i
|
68
|
+
[ archivio, numero_linea ]
|
69
|
+
end
|
70
|
+
|
71
|
+
##
|
72
|
+
# Ottiene il numero della linea errata dal messaggio d'errore.
|
73
|
+
def self.ottieni_numero_linea_da(errore, archivio)
|
74
|
+
traccia_errore = errore.backtrace.find do |traccia|
|
75
|
+
traccia.include? archivio
|
76
|
+
end
|
77
|
+
traccia_errore.partition(":").last.partition(":").first.to_i
|
78
|
+
rescue
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "metodi/array"
|
4
|
+
require_relative "metodi/date"
|
5
|
+
require_relative "metodi/hash"
|
6
|
+
require_relative "metodi/integer"
|
7
|
+
require_relative "metodi/json"
|
8
|
+
require_relative "metodi/kernel"
|
9
|
+
require_relative "metodi/main"
|
10
|
+
require_relative "metodi/module"
|
11
|
+
require_relative "metodi/nil_class"
|
12
|
+
require_relative "metodi/object"
|
13
|
+
require_relative "metodi/open_struct"
|
14
|
+
require_relative "metodi/range"
|
15
|
+
require_relative "metodi/string"
|
16
|
+
require_relative "metodi/time"
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Array
|
4
|
+
|
5
|
+
##
|
6
|
+
# Determina se una lista non è nullo e non è vuoto.
|
7
|
+
def esiste?
|
8
|
+
!nil? && !empty?
|
9
|
+
end
|
10
|
+
|
11
|
+
##
|
12
|
+
# Determina se una lista non include un dato elemento.
|
13
|
+
def non_include?(*args)
|
14
|
+
!include? *args
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
# Esegue il metodo specificato con gli argomenti specificati
|
19
|
+
# per ogni elemento della lista.
|
20
|
+
def pizzica(method_name, *method_args)
|
21
|
+
self.map do |element|
|
22
|
+
if element.respond_to? method_name
|
23
|
+
element.send method_name, *method_args
|
24
|
+
elsif element.is_a? Hash
|
25
|
+
element[method_name]
|
26
|
+
else
|
27
|
+
raise ArgumentError, "Array elements do not respond to #{method_name}."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Converte tutti gli elementi della lista in simboli, sostituendo
|
34
|
+
# la lista originale.
|
35
|
+
def simbolizza!
|
36
|
+
self.map! do |element|
|
37
|
+
if element.is_a? Hash
|
38
|
+
element.simbolizza!
|
39
|
+
else
|
40
|
+
element
|
41
|
+
end
|
42
|
+
end
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Converte tutti gli elementi della lista in simboli, creando
|
48
|
+
# una nuova lista.
|
49
|
+
def simbolizza
|
50
|
+
self.map do |element|
|
51
|
+
if element.is_a? Hash
|
52
|
+
element.simbolizza
|
53
|
+
else
|
54
|
+
element
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# Mappa e rimuove duplicati in un unico metodo.
|
61
|
+
def mappa_e_rimuovi_duplicati(&block)
|
62
|
+
self.map.with_index(&block).uniq
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# Mappa e compatta in un unico metodo.
|
67
|
+
def mappa_e_compatta(&block)
|
68
|
+
self.map.with_index(&block).compact
|
69
|
+
end
|
70
|
+
|
71
|
+
##
|
72
|
+
# Mappa e appiattisce in un unico metodo.
|
73
|
+
def mappa_e_appiattisci(&block)
|
74
|
+
self.map.with_index(&block).flatten
|
75
|
+
end
|
76
|
+
|
77
|
+
##
|
78
|
+
# Converte la lista in una mappa.
|
79
|
+
def in_mappa(&block)
|
80
|
+
if block_given?
|
81
|
+
self.map(&block).to_h
|
82
|
+
else
|
83
|
+
self.to_h
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
# Restituisce il secondo elemento della lista.
|
89
|
+
def secondo
|
90
|
+
self[1]
|
91
|
+
end
|
92
|
+
|
93
|
+
##
|
94
|
+
# Restituisce la lista togliendo gli ultimi n elementi.
|
95
|
+
def tronca(n = 0)
|
96
|
+
self[0..(-1 - n)]
|
97
|
+
end
|
98
|
+
|
99
|
+
##
|
100
|
+
# Restituisce la lista saltando il primo elemento.
|
101
|
+
def salta_il_primo
|
102
|
+
self.drop 1
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "date"
|
3
|
+
|
4
|
+
class Date
|
5
|
+
class << self
|
6
|
+
|
7
|
+
##
|
8
|
+
# Restituisce la data di domani.
|
9
|
+
def domani
|
10
|
+
oggi + 1
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
# Restituisce la data di ieri.
|
15
|
+
def ieri
|
16
|
+
oggi - 1
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Restituisce la data di oggi a due anni fa.
|
23
|
+
def due_anni_fa
|
24
|
+
self.prev_year.prev_year
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Formatta la data secondo la rappresentazione passata.
|
29
|
+
def formatta_locale(format)
|
30
|
+
if defined? I18n
|
31
|
+
I18n.l self, format: format
|
32
|
+
else
|
33
|
+
strftime format
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|