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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.ruby-version +1 -1
  4. data/Gemfile.lock +2 -9
  5. data/bin/italian-rspec +9 -18
  6. data/bin/italian-ruby +7 -7
  7. data/{vim → dev/vim}/ftdetect/ir.vim +0 -0
  8. data/{vim → dev/vim}/syntax/ir.vim +0 -0
  9. data/{vim → dev/vim}/vimrc +0 -0
  10. data/{vscode → dev/vscode}/italianruby.tmGrammar.json +0 -0
  11. data/italian-ruby.gemspec +7 -6
  12. data/lib/italian/ruby.rb +39 -14
  13. data/lib/italian/ruby/alias.rb +28 -0
  14. data/lib/italian/ruby/{core_ext → alias}/array.rb +11 -80
  15. data/lib/italian/ruby/{core_ext → alias}/class.rb +9 -2
  16. data/lib/italian/ruby/{core_ext → alias}/date.rb +4 -35
  17. data/lib/italian/ruby/{core_ext → alias}/enumerator.rb +4 -5
  18. data/lib/italian/ruby/{core_ext/errors.rb → alias/error.rb} +6 -5
  19. data/lib/italian/ruby/{core_ext → alias}/false_class.rb +4 -3
  20. data/lib/italian/ruby/{core_ext → alias}/file.rb +6 -9
  21. data/lib/italian/ruby/{core_ext → alias}/float.rb +3 -4
  22. data/lib/italian/ruby/{core_ext → alias}/hash.rb +3 -39
  23. data/lib/italian/ruby/{core_ext → alias}/integer.rb +2 -26
  24. data/lib/italian/ruby/alias/io.rb +7 -0
  25. data/lib/italian/ruby/alias/kernel.rb +9 -0
  26. data/lib/italian/ruby/{core_ext → alias}/main.rb +5 -23
  27. data/lib/italian/ruby/alias/module.rb +9 -0
  28. data/lib/italian/ruby/{core_ext → alias}/nil_class.rb +3 -5
  29. data/lib/italian/ruby/alias/numeric.rb +3 -0
  30. data/lib/italian/ruby/alias/object.rb +39 -0
  31. data/lib/italian/ruby/alias/open_struct.rb +3 -0
  32. data/lib/italian/ruby/{core_ext → alias}/proc.rb +4 -5
  33. data/lib/italian/ruby/{core_ext → alias}/range.rb +2 -7
  34. data/lib/italian/ruby/{core_ext → alias}/rational.rb +3 -4
  35. data/lib/italian/ruby/{core_ext/gems → alias}/rspec.rb +7 -61
  36. data/lib/italian/ruby/alias/set.rb +39 -0
  37. data/lib/italian/ruby/alias/socket.rb +30 -0
  38. data/lib/italian/ruby/{core_ext → alias}/string.rb +3 -69
  39. data/lib/italian/ruby/{core_ext → alias}/symbol.rb +4 -5
  40. data/lib/italian/ruby/alias/time.rb +26 -0
  41. data/lib/italian/ruby/{core_ext → alias}/true_class.rb +4 -3
  42. data/lib/italian/ruby/errori.rb +84 -0
  43. data/lib/italian/ruby/metodi.rb +16 -0
  44. data/lib/italian/ruby/metodi/array.rb +105 -0
  45. data/lib/italian/ruby/metodi/date.rb +37 -0
  46. data/lib/italian/ruby/metodi/hash.rb +57 -0
  47. data/lib/italian/ruby/metodi/integer.rb +45 -0
  48. data/lib/italian/ruby/metodi/json.rb +17 -0
  49. data/lib/italian/ruby/metodi/kernel.rb +86 -0
  50. data/lib/italian/ruby/metodi/main.rb +31 -0
  51. data/lib/italian/ruby/metodi/module.rb +46 -0
  52. data/lib/italian/ruby/metodi/nil_class.rb +11 -0
  53. data/lib/italian/ruby/metodi/object.rb +64 -0
  54. data/lib/italian/ruby/{core_ext → metodi}/open_struct.rb +5 -7
  55. data/lib/italian/ruby/metodi/range.rb +11 -0
  56. data/lib/italian/ruby/metodi/rspec.rb +64 -0
  57. data/lib/italian/ruby/metodi/string.rb +142 -0
  58. data/lib/italian/ruby/metodi/time.rb +51 -0
  59. data/lib/italian/ruby/traduttore.rb +93 -122
  60. data/lib/italian/ruby/traduttore/linea.rb +144 -0
  61. data/lib/italian/ruby/traduttore/pezzo.rb +106 -0
  62. data/lib/italian/ruby/traduttore/stringa.rb +76 -0
  63. data/lib/italian/ruby/{version.rb → versione.rb} +1 -1
  64. metadata +58 -43
  65. data/Rakefile +0 -6
  66. data/lib/italian/ruby/core_ext.rb +0 -32
  67. data/lib/italian/ruby/core_ext/gems/bson.rb +0 -26
  68. data/lib/italian/ruby/core_ext/gems/fabrication.rb +0 -12
  69. data/lib/italian/ruby/core_ext/gems/hanami.rb +0 -92
  70. data/lib/italian/ruby/core_ext/gems/rack_test.rb +0 -15
  71. data/lib/italian/ruby/core_ext/json.rb +0 -11
  72. data/lib/italian/ruby/core_ext/kernel.rb +0 -111
  73. data/lib/italian/ruby/core_ext/module.rb +0 -32
  74. data/lib/italian/ruby/core_ext/numeric.rb +0 -6
  75. data/lib/italian/ruby/core_ext/object.rb +0 -83
  76. data/lib/italian/ruby/core_ext/time.rb +0 -69
  77. data/lib/italian/ruby/errore.rb +0 -52
  78. 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
@@ -1,11 +1,10 @@
1
- ##
2
- # Core Ext - Symbol
3
- #
4
- # Alias di metodi della classe Symbol.
1
+ # frozen_string_literal: true
5
2
 
6
3
  class Symbol
4
+
7
5
  alias :in_simbolo :to_sym
8
6
  alias :in_stringa :to_s
7
+
9
8
  end
10
9
 
11
- Simbolo = Symbol
10
+ Simbolo = Symbol
@@ -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
@@ -1,6 +1,7 @@
1
- ##
2
- # Core Ext - True Class
1
+ # frozen_string_literal: true
3
2
 
4
3
  class TrueClass
4
+
5
5
  alias :in_stringa :to_s
6
- end
6
+
7
+ end
@@ -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