italian-ruby 0.9.18 → 1.0.4

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.
Files changed (81) 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 +29 -0
  14. data/lib/italian/ruby/{core_ext → alias}/array.rb +12 -80
  15. data/lib/italian/ruby/{core_ext → alias}/class.rb +9 -2
  16. data/lib/italian/ruby/{core_ext → alias}/date.rb +4 -36
  17. data/lib/italian/ruby/{core_ext → alias}/enumerator.rb +4 -5
  18. data/lib/italian/ruby/alias/error.rb +19 -0
  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 +5 -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 +4 -7
  34. data/lib/italian/ruby/{core_ext → alias}/rational.rb +3 -4
  35. data/lib/italian/ruby/alias/regexp.rb +13 -0
  36. data/lib/italian/ruby/{core_ext/gems → alias}/rspec.rb +7 -61
  37. data/lib/italian/ruby/alias/set.rb +39 -0
  38. data/lib/italian/ruby/alias/socket.rb +48 -0
  39. data/lib/italian/ruby/{core_ext → alias}/string.rb +4 -69
  40. data/lib/italian/ruby/{core_ext → alias}/symbol.rb +4 -5
  41. data/lib/italian/ruby/alias/time.rb +26 -0
  42. data/lib/italian/ruby/{core_ext → alias}/true_class.rb +4 -3
  43. data/lib/italian/ruby/errori.rb +84 -0
  44. data/lib/italian/ruby/metodi.rb +17 -0
  45. data/lib/italian/ruby/metodi/array.rb +105 -0
  46. data/lib/italian/ruby/metodi/date.rb +46 -0
  47. data/lib/italian/ruby/metodi/hash.rb +57 -0
  48. data/lib/italian/ruby/metodi/integer.rb +45 -0
  49. data/lib/italian/ruby/metodi/json.rb +17 -0
  50. data/lib/italian/ruby/metodi/kernel.rb +86 -0
  51. data/lib/italian/ruby/metodi/main.rb +31 -0
  52. data/lib/italian/ruby/metodi/module.rb +46 -0
  53. data/lib/italian/ruby/metodi/nil_class.rb +11 -0
  54. data/lib/italian/ruby/metodi/object.rb +64 -0
  55. data/lib/italian/ruby/{core_ext → metodi}/open_struct.rb +5 -7
  56. data/lib/italian/ruby/metodi/range.rb +11 -0
  57. data/lib/italian/ruby/metodi/rspec.rb +64 -0
  58. data/lib/italian/ruby/metodi/socket.rb +18 -0
  59. data/lib/italian/ruby/metodi/string.rb +174 -0
  60. data/lib/italian/ruby/metodi/time.rb +51 -0
  61. data/lib/italian/ruby/traduttore.rb +93 -122
  62. data/lib/italian/ruby/traduttore/linea.rb +144 -0
  63. data/lib/italian/ruby/traduttore/pezzo.rb +106 -0
  64. data/lib/italian/ruby/traduttore/stringa.rb +76 -0
  65. data/lib/italian/ruby/{version.rb → versione.rb} +1 -1
  66. metadata +60 -43
  67. data/Rakefile +0 -6
  68. data/lib/italian/ruby/core_ext.rb +0 -32
  69. data/lib/italian/ruby/core_ext/errors.rb +0 -16
  70. data/lib/italian/ruby/core_ext/gems/bson.rb +0 -26
  71. data/lib/italian/ruby/core_ext/gems/fabrication.rb +0 -12
  72. data/lib/italian/ruby/core_ext/gems/hanami.rb +0 -92
  73. data/lib/italian/ruby/core_ext/gems/rack_test.rb +0 -15
  74. data/lib/italian/ruby/core_ext/json.rb +0 -11
  75. data/lib/italian/ruby/core_ext/kernel.rb +0 -111
  76. data/lib/italian/ruby/core_ext/module.rb +0 -32
  77. data/lib/italian/ruby/core_ext/numeric.rb +0 -6
  78. data/lib/italian/ruby/core_ext/object.rb +0 -83
  79. data/lib/italian/ruby/core_ext/time.rb +0 -69
  80. data/lib/italian/ruby/errore.rb +0 -52
  81. 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,48 @@
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 :prendi_byte :getbyte
17
+ alias :leggi :read
18
+ alias :ricevi :recv
19
+ alias :leggi_linea :readline
20
+ alias :chiudi :close
21
+
22
+ end
23
+
24
+ class UNIXServer
25
+
26
+ alias :accetta :accept
27
+
28
+ end
29
+
30
+ class TCPSocket
31
+
32
+ alias :scrivi :write
33
+ alias :prendi_byte :getbyte
34
+ alias :leggi :read
35
+ alias :ricevi :recv
36
+ alias :leggi_linea :readline
37
+ alias :chiudi :close
38
+
39
+ end
40
+
41
+ class TCPServer
42
+
43
+ alias :accetta :accept
44
+
45
+ end
46
+
47
+
48
+ 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
@@ -28,81 +25,19 @@ class String
28
25
  alias :giustifica_a_destra :rjust
29
26
  alias :rimpiazza :gsub
30
27
  alias :rimpiazza! :gsub!
28
+ alias :scansiona :scan
31
29
  alias :spoglia :strip
30
+ alias :mastica :chomp
32
31
  alias :conteggio :count
33
32
  alias :conteggia :count
33
+ alias :dimensione_in_byte :bytesize
34
34
  alias :codifica :encoding
35
35
  alias :codifica_in :encode
36
36
  alias :codifica_valida? :valid_encoding?
37
37
  alias :forza_codifica_a :force_encoding
38
38
 
39
- def esiste?
40
- !nil? and self != ""
41
- end
42
39
  alias :specificato? :esiste?
43
40
  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
41
  end
107
42
 
108
43
  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,17 @@
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/socket"
16
+ require_relative "metodi/string"
17
+ 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