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.
Files changed (79) 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 +13 -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 +17 -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 +6 -36
  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 +4 -65
  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 +46 -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/errors.rb +0 -12
  68. data/lib/italian/ruby/core_ext/gems/bson.rb +0 -26
  69. data/lib/italian/ruby/core_ext/gems/fabrication.rb +0 -12
  70. data/lib/italian/ruby/core_ext/gems/hanami.rb +0 -66
  71. data/lib/italian/ruby/core_ext/gems/rack_test.rb +0 -15
  72. data/lib/italian/ruby/core_ext/json.rb +0 -11
  73. data/lib/italian/ruby/core_ext/kernel.rb +0 -111
  74. data/lib/italian/ruby/core_ext/module.rb +0 -32
  75. data/lib/italian/ruby/core_ext/numeric.rb +0 -6
  76. data/lib/italian/ruby/core_ext/object.rb +0 -79
  77. data/lib/italian/ruby/core_ext/time.rb +0 -69
  78. data/lib/italian/ruby/errore.rb +0 -52
  79. 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
@@ -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,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