italian-ruby 0.8.7 → 0.8.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83284550d7e3870fcb441f11d5a0ddec4823c6eb230f1416ce9895e246748782
4
- data.tar.gz: 56b67fa379e306eb12ee16fe129019db57092820f412897191a9047b1dbcee22
3
+ metadata.gz: aa49125e7eef8e61c26ebd5b3eb981272a80b19614e7d7f8b4b735f4631cd222
4
+ data.tar.gz: 44eff11aa4a52d78c429512669f20abdb797962c1fdcc0db1f8255540ba8e2ad
5
5
  SHA512:
6
- metadata.gz: '0852d6a8a169ae6b2421d6c9df88595eca1dbd62588c874d597053541441736b62d798385bdbff233b8f19c49e86584bbe326b6693224864e2babb40e4b5fed1'
7
- data.tar.gz: d5214dafb0d58cfeb16f6f1927d5ba17796cd932b361ecea13dc18595760eed35437bcf28e6b8b3095833d0dd51348f2e754835c64f418980b7c5d7360bad1e3
6
+ metadata.gz: b6a6731ae3c3fabab3915431cc3fc1786625b2d4a1582ca8a8d668624314e8c59b295437bba6ff286a173eb4304f4240579135c1a3fb650b1cc5476b274e0f07
7
+ data.tar.gz: 3207db71d259980c597fcc42ff12240e87c18da1e242e39361d5ee9c9dc287f03b4f06ba553476c756fbc296087cb64f44d30a8a80c86fd18c083ee7d0d8cf6c
data/README.md CHANGED
@@ -38,11 +38,11 @@ A questo punto ci sono due strade. Prima strada, usare l'eseguibile `italian-rub
38
38
  ```ruby
39
39
  # persona.ir
40
40
  classe Persona
41
- def inizializzatore(nome)
41
+ definisci inizializzatore(nome)
42
42
  @nome = nome
43
43
  fine
44
44
 
45
- def come_ti_chiami?
45
+ definisci come_ti_chiami?
46
46
  stampa "Ciao, mi chiamo #{@nome}."
47
47
  fine
48
48
  fine
@@ -63,7 +63,7 @@ Oppure si può richiedere all'interno di codice sorgente Ruby standard, in modo
63
63
  ```ruby
64
64
  # libreria_interessantissima.rb
65
65
  modulo LibreriaInteressantissima
66
- def se_stesso.metodo_interessantissimo
66
+ definisci se_stesso.metodo_interessantissimo
67
67
  stampa "Che roba!"
68
68
  fine
69
69
  fine
@@ -93,15 +93,56 @@ GemmaImpossibile.esiste?
93
93
  >
94
94
  > \- un tizio saggio, qualche anno fa.
95
95
 
96
- Volete sapere la verità su Italian Ruby? Ecco come funziona. Ho preso ispirazione da questa gemma che si chiama [Bato](https://github.com/jjuliano/bato). Praticamente è la stessa cosa di Italian Ruby solo che in filippino. Bato vuole dire "Roccia" in filippino. Bato funziona usando la gemma [RubyParser](https://github.com/seattlerb/ruby_parser) che parsa codice Ruby e lo converte in espressioni sexp, e la gemma [Ruby2Ruby](https://github.com/seattlerb/ruby2ruby) che converte espressioni sexp in codice Ruby.
97
- In mezzo a queste due, ci infiliamo la nostra gemma, che, patchando il ruby parser, legge codice in italiano e lo converte in espressioni sexp. Il trucco sta nel file `lib/italian/ruby/ruby_parser_patches.rb` dove vengono definite nuove keywords al posto di quelle originali (es. `classe` al posti di `class`).
96
+ Volete sapere la verità su Italian Ruby? Ecco come funziona.
98
97
 
99
- Bato però ha solo un binario che permette di eseguire codice filippino. Italian Ruby, invece, permette di inglobare codice italiano all'interno di progetti Ruby già esistenti. Avete un gigantesco codebase con megabyte di codice, ma volete riscrivere un solo piccolo pezzettino in italiano? Con Italian Ruby si può.
98
+ Inizialmente, avevo preso ispirazione da questa gemma che si chiama [Bato](https://github.com/jjuliano/bato). L'idea, praticamente, è la stessa di Italian Ruby solo che in filippino. Bato vuole dire "Roccia" in filippino. Bato funziona usando la gemma [RubyParser](https://github.com/seattlerb/ruby_parser) che parsa codice Ruby e lo converte in espressioni sexp, e la gemma [Ruby2Ruby](https://github.com/seattlerb/ruby2ruby) che converte espressioni sexp in codice Ruby. In mezzo a queste due, si inserisce Bato, che, patchando il ruby parser, legge codice in filippino e lo converte in espressioni sexp.
99
+
100
+ Ora, Italian Ruby ha un suo parser vero e proprio. È molto semplice, per ora, e si basta sulla lettura contestuale di ogni riga del sorgente, ma senza dividere le parole e senza cercare di ricostruire l'intero albero sintattico astratto. In questo modo si hanno vari vantaggi:
101
+ - Non si dipende più dalle gemme `ruby_parser` e `ruby_2_ruby`. Il che significa che ogni nuova funzionalità del linguaggio è automaticamente e direttamente disponibile anche in Italian Ruby, senza aspettare che vengano aggiornate queste due gemme (es. il pattern-matching di Ruby 2.7).
102
+ - I tempi di caricamento iniziali della gemma sono ridotti di molto.
103
+ - La velocità di processazione e traduzione del sorgente è aumentata di molto.
104
+ - È mantenuta l'esatta corrispondenza fra i numeri di riga fra sorgente originale e sorgente tradotto.
105
+
106
+ Un'altra differenza fra Bato e Italian Ruby è che Bato ha solo un binario che permette di eseguire codice filippino. Italian Ruby, invece, permette di inglobare codice italiano all'interno di progetti Ruby già esistenti. Avete un gigantesco codebase con megabyte di codice, ma volete riscrivere un solo piccolo pezzettino in italiano? Con Italian Ruby si può. Ad esempio, prendiamo questo sorgente Italian Ruby:
107
+
108
+ ```ruby
109
+ classe Libro
110
+
111
+ accessore :titolo
112
+
113
+ definisci inizializzatore(titolo)
114
+ @titolo = titolo
115
+ fine
116
+
117
+ fine
118
+ ```
119
+
120
+ e questo codice Ruby:
121
+
122
+ ```ruby
123
+ require "italian/ruby"
124
+ richiedi_relativo "libro"
125
+
126
+ class Library
127
+
128
+ attr_accessor :books
129
+
130
+ def initialize
131
+ @books = []
132
+ end
133
+
134
+ def add(title)
135
+ @books << Libro.new(title)
136
+ end
137
+ end
138
+ ```
139
+
140
+ Questo codice risulta perfettamente valido e funzionante.
100
141
 
101
142
  Per concludere, ci sono degli avvertimenti.
102
- 1. il namespace verrà sporcato. Ho fatto del mio meglio per essere più chirurgico possibile, ma se fate `require "italian/ruby"` sappiate che verranno su un sacco di classi e di alias nuovi (es. `Oggetto.nuovo` ecc.).
103
- 2. il `richiedi` e `richiedi_relativo` funzionano traducendo un file sorgente in italiano nella cartella `.italian-ruby`, che viene creata in automatico nella home dell'utente. Viene ricreato l'intero percorso del file, in modo tale da preservarne l'unicità e il riferimento con il sorgente iniziale. Unaa volta tradotto, il file viene caricato in memoria con il `require` di Ruby. Non so se questo possa creare problemi. Immagino di no. Ma vi ho avvertito!
143
+ 1. Il namespace verrà sporcato. Ho fatto del mio meglio per essere più chirurgico possibile, ma se fate `require "italian/ruby"` sappiate che verranno su un sacco di classi e di alias nuovi (es. `Oggetto.nuovo` ecc.).
144
+ 2. Il `richiedi` e `richiedi_relativo` funzionano traducendo un file sorgente in italiano nella cartella `.italian-ruby`, che viene creata in automatico nella home dell'utente. Viene ricreato l'intero percorso del file, in modo tale da preservarne l'unicità e il riferimento con il sorgente iniziale. Unaa volta tradotto, il file viene caricato in memoria con il `require` di Ruby. Non so se questo possa creare problemi. Immagino di no. Ma vi ho avvertito!
104
145
 
105
146
  ## Contribuire
106
147
 
107
- Bug e issue qui -> https://github.com/[USERNAME]/italian-ruby.
148
+ Bug e issue qui -> https://github.com/Pluvie/italian-ruby.
@@ -33,9 +33,15 @@ class Date
33
33
  end
34
34
  alias :due_anni_precedenti :due_anni_fa
35
35
 
36
- alias :original_compare :==
36
+ alias :original_equality :==
37
37
  def ==(other)
38
38
  return (self == other.to_date) if other.is_a? Time
39
+ original_equality other
40
+ end
41
+
42
+ alias :original_compare :<=>
43
+ def <=>(other)
44
+ return (self <=> other.to_date) if other.is_a? Time
39
45
  original_compare other
40
46
  end
41
47
  end
@@ -8,6 +8,7 @@ class File
8
8
  alias :espandi :expand_path
9
9
  alias :nome_file :basename
10
10
  alias :nome_cartella :dirname
11
+ alias :estensione :extname
11
12
  alias :esiste? :exists?
12
13
  alias :scrivi :write
13
14
  alias :leggi :read
@@ -7,6 +7,7 @@ class Integer
7
7
  alias :volte :times
8
8
  alias :in_decimale :to_f
9
9
  alias :in_stringa :to_s
10
+ alias :in_numero :to_i
10
11
 
11
12
  def secondi
12
13
  self
@@ -1,3 +1,5 @@
1
+ require "fileutils"
2
+
1
3
  ##
2
4
  # CoreExt - Kernel
3
5
  #
@@ -4,6 +4,7 @@
4
4
  # Alias di metodi del namespace principale.
5
5
 
6
6
  alias :stampa :puts
7
+ alias :scrivi :print
7
8
  alias :cicla :loop
8
9
  alias :definisci_metodo_singolo :define_singleton_method
9
10
  alias :blocco_dato? :block_given?
@@ -26,4 +27,4 @@ def alza(*args)
26
27
  end
27
28
  def fallisci(*args)
28
29
  fail *args
29
- end
30
+ end
@@ -8,6 +8,7 @@ class String
8
8
  alias :prima_maiuscola :capitalize
9
9
  alias :in_simbolo :to_sym
10
10
  alias :in_stringa :to_s
11
+ alias :in_numero :to_i
11
12
  alias :dividi :split
12
13
  alias :maiuscola :upcase
13
14
  alias :maiuscolo :upcase
@@ -25,6 +26,10 @@ class String
25
26
  alias :spoglia :strip
26
27
  alias :conteggio :count
27
28
  alias :conteggia :count
29
+ alias :codifica :encoding
30
+ alias :codifica_in :encode
31
+ alias :codifica_valida? :valid_encoding?
32
+ alias :forza_codifica_a :force_encoding
28
33
 
29
34
  def esiste?
30
35
  !nil? and self != ""
@@ -22,9 +22,15 @@ class Time
22
22
  self
23
23
  end
24
24
 
25
- alias :original_compare :==
25
+ alias :original_equality :==
26
26
  def ==(other)
27
27
  return (self.to_date == other) if other.is_a? Date
28
+ original_equality other
29
+ end
30
+
31
+ alias :original_compare :<=>
32
+ def <=>(other)
33
+ return (self.to_date <=> other) if other.is_a? Date
28
34
  original_compare other
29
35
  end
30
36
  end
@@ -1,5 +1,5 @@
1
1
  module Italian
2
2
  module Ruby
3
- VERSION = "0.8.7"
3
+ VERSION = "0.8.12"
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ au BufRead,BufNewFile *.ir set filetype=ir
@@ -0,0 +1,44 @@
1
+ " Vim syntax file
2
+ " Language: Italian Ruby
3
+ " Maintainer: Francesco Ballardin
4
+ " Latest Revision: 01 July 2020
5
+
6
+ if exists("b:current_syntax")
7
+ finish
8
+ endif
9
+
10
+ syn match italianRubyKeyword /\v(\s)*(classe|modulo|esegui|fine)(\s|$)/
11
+ syn match italianRubyKeyword /\v(\s)*(se|allora|altrimenti|altrimenti_se|considera|quando|finché)(\s|$)/
12
+ syn match italianRubyKeyword /\v(\s)*(prossimo|prossima|esci|ritorna|rilascia|blocco_dato\?)(\s|$)/
13
+ syn match italianRubyKeyword /\v(\s)*(inizia|recupera|assicura|riprova)(\s|$)/
14
+
15
+ syn match italianRubySymbol /\v(\s)*([a-zè_][a-zA-Z0-9àèéìòù_"]+:)/
16
+ syn match italianRubySymbol /\v(\s)*("[a-zA-Z0-9àèéìòù_]+":)/
17
+ syn match italianRubySymbol /\v(\s)*(:[a-zè_"][a-zA-Z0-9àèéìòù_"]+)/
18
+
19
+ syn match italianRubyInstanceVar /\v[\s^]*\@[a-zè_][a-zA-Z0-9àèéìòù_"]*/
20
+ syn match italianRubyConstant /\v[A-Z][a-zA-Z0-9àèéìòù_]+/
21
+ syn match italianRubyComment /\v#.*$/
22
+
23
+ syn match italianRubyInterpolationStart /\v#\{/ containedin=italianRubyInterpolation
24
+ syn match italianRubyInterpolationStop /\v\}/ containedin=italianRubyInterpolation
25
+ syn region italianRubyInterpolation start=/\v#\{/ end=/\v\}/ contains=TOP,italianRubyComment contained keepend
26
+ syn region italianRubyString start=/"/ end=/"/ skip=/\\"/ contains=italianRubyInterpolation
27
+
28
+ syn match italianRubySpecial /\v(\s)*(includi|estendi|preponi)(\s|$)/
29
+ syn match italianRubySpecial /\v(\s)*(pubblici|protetti|privati)(\s|$)/
30
+ syn match italianRubySpecial /\v(\s)*(richiedi|richiedi_relativo|richiedi_tutti)(\s|$)/
31
+ syn match italianRubySpecial /\v(\s)*(cicla|alza)(\s|$)/
32
+ syn match italianRubySpecial /\v\.(nuovo|nuova)/hs=s+1
33
+ syn match italianRubySpecial /\v(se_stesso|se_stessa)/
34
+ syn match italianRubySpecial /\v(\*){1,2}[a-zA-Z_]/he=e-1
35
+ syn match italianRubySpecialBoolean /\v(\s)*(si|no)(\s|$)/
36
+ syn match italianRubySpecialBoolean /\v(\s)*(si|no)(\W)/he=e-1
37
+
38
+ syn region italianRubyDefinition start=/definisci/ end=/[$\n]/ contains=italianRubyDefinitionKeyword,italianRubyMethodName,italianRubySplatOperator,italianRubySymbol,italianRubySpecialBoolean
39
+ syn match italianRubyDefinitionKeyword /\vdefinisci/ contained
40
+ syn match italianRubyMethodName /\v([a-z0-9_]+)\(/he=e-1 contained
41
+ syn match italianRubyMethodName /\v([a-z0-9_]+)$/ contained
42
+ syn match italianRubySplatOperator /\v(\*{1,2}[a-zA-Z0-9_])/he=e-1
43
+
44
+ let b:current_syntax = "ir"
@@ -0,0 +1,42 @@
1
+ ""
2
+ " Imposta dimensione tabulazione
3
+ set tabstop=2
4
+ set shiftwidth=2
5
+ set expandtab
6
+ set nu
7
+
8
+ ""
9
+ " Comando per aprire nuovo tab
10
+ command! -complete=file -nargs=1 T tabedit <args>
11
+
12
+ ""
13
+ " Muoversi fra tab con H (sinistra) e L (destra)
14
+ nnoremap H gT
15
+ nnoremap L gt
16
+
17
+ ""
18
+ " Aggiunge automaticamente indentazione su nuova riga
19
+ set autoindent
20
+
21
+ ""
22
+ " Mostra opzioni sopra la linea di comando
23
+ set wildmenu
24
+
25
+ ""
26
+ " Evidenziazione sintassi ItalianRuby
27
+ syntax on
28
+
29
+ highlight italianRubyKeyword ctermfg=171
30
+ highlight italianRubyDefinitionKeyword ctermfg=171
31
+ highlight italianRubySpecial ctermfg=33
32
+ highlight italianRubySpecialBoolean ctermfg=33
33
+ highlight italianRubyMethod ctermfg=220
34
+ highlight italianRubyMethodName ctermfg=220
35
+ highlight italianRubySymbol ctermfg=33
36
+ highlight italianRubySplatOperator ctermfg=117
37
+ highlight italianRubyInstanceVar ctermfg=117
38
+ highlight italianRubyInterpolationStart ctermfg=117
39
+ highlight italianRubyInterpolationStop ctermfg=117
40
+ highlight italianRubyConstant ctermfg=43
41
+ highlight italianRubyComment ctermfg=28
42
+ highlight italianRubyString ctermfg=208
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: italian-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.8.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Ballardin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-25 00:00:00.000000000 Z
11
+ date: 2020-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -106,6 +106,9 @@ files:
106
106
  - lib/italian/ruby/traduttore.rb
107
107
  - lib/italian/ruby/utils/debug.rb
108
108
  - lib/italian/ruby/version.rb
109
+ - vim/ftdetect/ir.vim
110
+ - vim/syntax/ir.vim
111
+ - vim/vimrc
109
112
  - vscode/italianruby.tmGrammar.json
110
113
  homepage: https://github.com/Pluvie/italian-ruby
111
114
  licenses: