italian-ruby 0.9.15 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +13 -80
- data/lib/italian/ruby/{core_ext → alias}/class.rb +9 -2
- data/lib/italian/ruby/{core_ext → alias}/date.rb +4 -36
- data/lib/italian/ruby/{core_ext → alias}/enumerator.rb +4 -5
- data/lib/italian/ruby/alias/error.rb +17 -0
- 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 +6 -36
- 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 +4 -65
- 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 +46 -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/errors.rb +0 -12
- 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 -66
- 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 -79
- 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
|
@@ -27,77 +24,19 @@ class String
|
|
27
24
|
alias :giustifica_a_sinistra :ljust
|
28
25
|
alias :giustifica_a_destra :rjust
|
29
26
|
alias :rimpiazza :gsub
|
27
|
+
alias :rimpiazza! :gsub!
|
30
28
|
alias :spoglia :strip
|
29
|
+
alias :mastica :chomp
|
31
30
|
alias :conteggio :count
|
32
31
|
alias :conteggia :count
|
32
|
+
alias :dimensione_in_byte :bytesize
|
33
33
|
alias :codifica :encoding
|
34
34
|
alias :codifica_in :encode
|
35
35
|
alias :codifica_valida? :valid_encoding?
|
36
36
|
alias :forza_codifica_a :force_encoding
|
37
37
|
|
38
|
-
def esiste?
|
39
|
-
!nil? and self != ""
|
40
|
-
end
|
41
38
|
alias :specificato? :esiste?
|
42
39
|
alias :specificata? :esiste?
|
43
|
-
|
44
|
-
def non_include?(*args)
|
45
|
-
!include? *args
|
46
|
-
end
|
47
|
-
|
48
|
-
def non_inizia_con?(*args)
|
49
|
-
!inizia_con? *args
|
50
|
-
end
|
51
|
-
|
52
|
-
def non_finisce_con?(*args)
|
53
|
-
!finisce_con? *args
|
54
|
-
end
|
55
|
-
|
56
|
-
def in_data
|
57
|
-
return unless defined? Date
|
58
|
-
Date.parse self
|
59
|
-
end
|
60
|
-
|
61
|
-
def in_tempo
|
62
|
-
return unless defined? Time
|
63
|
-
Time.parse self
|
64
|
-
end
|
65
|
-
|
66
|
-
def primi(n)
|
67
|
-
self[0..(n - 1)]
|
68
|
-
end
|
69
|
-
|
70
|
-
def primo_carattere
|
71
|
-
self[0]
|
72
|
-
end
|
73
|
-
|
74
|
-
def ultimo_carattere
|
75
|
-
self[-1]
|
76
|
-
end
|
77
|
-
|
78
|
-
def salta_caratteri(n)
|
79
|
-
self[(n - 1)..-1]
|
80
|
-
end
|
81
|
-
|
82
|
-
def salta_il_primo_carattere
|
83
|
-
self[1..-1]
|
84
|
-
end
|
85
|
-
|
86
|
-
def tronca_caratteri(n)
|
87
|
-
self[0..(-1 - n)]
|
88
|
-
end
|
89
|
-
|
90
|
-
def tronca
|
91
|
-
self[0..-2]
|
92
|
-
end
|
93
|
-
|
94
|
-
def adatta(l)
|
95
|
-
if self.length > l
|
96
|
-
"#{self[0..l - 3]}.."
|
97
|
-
else
|
98
|
-
self.ljust l, " "
|
99
|
-
end
|
100
|
-
end
|
101
40
|
end
|
102
41
|
|
103
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,46 @@
|
|
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
|
+
formattazione = strftime format
|
31
|
+
formattazione
|
32
|
+
.gsub(/January/i, "Gennaio")
|
33
|
+
.gsub(/February/i, "Febbraio")
|
34
|
+
.gsub(/March/i, "Marzo")
|
35
|
+
.gsub(/April/i, "Aprile")
|
36
|
+
.gsub(/May/i, "Maggio")
|
37
|
+
.gsub(/June/i, "Giugno")
|
38
|
+
.gsub(/July/i, "Luglio")
|
39
|
+
.gsub(/August/i, "Agosto")
|
40
|
+
.gsub(/September/i, "Settembre")
|
41
|
+
.gsub(/October/i, "Ottobre")
|
42
|
+
.gsub(/November/i, "Novembre")
|
43
|
+
.gsub(/December/i, "Dicembre")
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|