iris-rb 0.4.6 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/iris/azione.ir +1 -1
- data/lib/iris/azione/parametri.ir +32 -206
- data/lib/iris/azione/parametri/parametro.ir +266 -0
- data/lib/iris/navigatore.ir +1 -1
- data/lib/iris/versione.ir +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a755655dcf8f31c8e4c0648da47df1961d424fbbf1615be9cfb08a2c7577b633
|
4
|
+
data.tar.gz: f418618d0a3ddf7bb0efd4ec84e8c53ff0852d82e9531bf992be45023169da6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1fd99d2ecc90ad5fa8d9a34bac29d666001b257744f70ba85cbf8d88544e651ef625ce72cf9abf7eb7955ff784bc4b20879bc455eaf6f210886c3cf08e3bd05
|
7
|
+
data.tar.gz: 10c33264e8d5e752ff43d61be35f8a47f92d18e877b64a06e8620c8de7c9dcaf1783cc3d9bc9153978f2e86ffcf219203e7374e0e26919f8777ab4c12679824c
|
data/lib/iris/azione.ir
CHANGED
@@ -139,7 +139,7 @@ modulo Iris
|
|
139
139
|
definisci _imposta_variabili_istanza(richiesta)
|
140
140
|
@richiesta = richiesta
|
141
141
|
@richiesta["iris.parametri"] ||= Mappa.nuova
|
142
|
-
@tipo_contenuto = richiesta.
|
142
|
+
@tipo_contenuto = richiesta.prendi "CONTENT_TYPE", "application/json"
|
143
143
|
@stato = 200
|
144
144
|
@intestazioni = INTESTAZIONI_PREDEFINITE.clona
|
145
145
|
@corpo = nullo
|
@@ -1,3 +1,5 @@
|
|
1
|
+
richiedi_relativo "parametri/parametro"
|
2
|
+
|
1
3
|
modulo Iris
|
2
4
|
modulo Azione
|
3
5
|
##
|
@@ -67,17 +69,21 @@ modulo Iris
|
|
67
69
|
fine
|
68
70
|
|
69
71
|
##
|
70
|
-
# Esegue un controllo su un parametro
|
71
|
-
|
72
|
-
|
73
|
-
|
72
|
+
# Esegue un controllo su un parametro obbligatorio.
|
73
|
+
# Quando un parametro obbligatorio non viene passato, oppure viene passato
|
74
|
+
# con valore nullo o stringa vuota, viene generato un errore.
|
75
|
+
definisci obbligatorio(parametro, *opzioni_parametro, **opzioni_lista, &blocco)
|
76
|
+
_inizializza parametro, :obbligatorio, *opzioni_parametro, **opzioni_lista, &blocco
|
74
77
|
fine
|
75
78
|
|
76
79
|
##
|
77
80
|
# Esegue un controllo su un parametro opzionale.
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
+
# Quando un parametro opzionale non viene passato, non viene generato un errore.
|
82
|
+
# Se però esso viene passato, e con valore nullo o stringa vuota, allora
|
83
|
+
# viene generato un errore, a meno che non sia stato specificato come
|
84
|
+
# annullabile.
|
85
|
+
definisci opzionale(parametro, *opzioni_parametro, **opzioni_lista, &blocco)
|
86
|
+
_inizializza parametro, :opzionale, *opzioni_parametro, **opzioni_lista, &blocco
|
81
87
|
fine
|
82
88
|
|
83
89
|
##
|
@@ -88,8 +94,10 @@ modulo Iris
|
|
88
94
|
# includi Iris::Azione
|
89
95
|
#
|
90
96
|
# definisci valida_parametri
|
97
|
+
# parametri.obbligatorio :prezzo, :decimale
|
98
|
+
#
|
91
99
|
# parametri.regola "il prezzo deve essere maggiore di zero" esegui
|
92
|
-
# parametri.
|
100
|
+
# parametri.prendi(:prezzo) > 0.0
|
93
101
|
# fine
|
94
102
|
# fine
|
95
103
|
# fine
|
@@ -103,6 +111,7 @@ modulo Iris
|
|
103
111
|
|
104
112
|
regola_rispettata = si
|
105
113
|
regola_rispettata = blocco.avvia se blocco.esiste?
|
114
|
+
|
106
115
|
se regola_rispettata == no
|
107
116
|
@validi = no
|
108
117
|
@errori.deposita :regole, [] se @errori.non_ha_chiave? :regole
|
@@ -113,211 +122,28 @@ modulo Iris
|
|
113
122
|
privati
|
114
123
|
|
115
124
|
##
|
116
|
-
#
|
117
|
-
definisci
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
valore_parametro = valore_parametro.mappa esegui |valore|
|
124
|
-
_applica_conversioni_su valore, tipo_desiderato_elementi_lista
|
125
|
-
fine
|
126
|
-
fine
|
127
|
-
|
128
|
-
cattura :controllo_terminato esegui
|
129
|
-
_segnala_presenza_obbligatoria_su parametro se obbligatorio == si e @parametri_originali.non_ha_chiave? parametro
|
130
|
-
|
131
|
-
se @parametri_originali.ha_chiave? parametro
|
132
|
-
_segnala_non_annullabile_su parametro se annullabile == no e valore_parametro.non_specificato?
|
133
|
-
_segnala_tipo_non_valido_su parametro, tipo_desiderato se tipo_non_corrispondente?(valore_parametro, tipo_desiderato)
|
134
|
-
valore_parametro = nullo se valore_parametro.non_specificato?
|
135
|
-
|
136
|
-
_controlla_elementi_lista parametro, valore_parametro, tipo_desiderato_elementi_lista se
|
137
|
-
tipo_desiderato == :lista e tipo_desiderato_elementi_lista.specificato?
|
138
|
-
|
139
|
-
@parametri_processati.deposita parametro, valore_parametro
|
140
|
-
fine
|
141
|
-
|
142
|
-
_controlla_annidato parametro, valore_parametro, tipo_desiderato, obbligatorio, &blocco se blocco.esiste?
|
143
|
-
fine
|
144
|
-
fine
|
145
|
-
|
146
|
-
##
|
147
|
-
# Esegue il controllo annidato sul parametro.
|
148
|
-
definisci _controlla_annidato(parametro, valore_parametro, tipo_desiderato, obbligatorio, &blocco)
|
149
|
-
se obbligatorio == si
|
150
|
-
_segnala_tipo_non_valido_su parametro, :mappa se valore_parametro.non_è_una? Mappa e tipo_desiderato == :mappa
|
151
|
-
_segnala_tipo_non_valido_su parametro, :lista se valore_parametro.non_è_una? Lista e tipo_desiderato == :lista
|
152
|
-
fine
|
153
|
-
lancia :controllo_terminato se valore_parametro.nullo?
|
154
|
-
|
155
|
-
_controllo_annidato_mappa parametro, valore_parametro, &blocco se tipo_desiderato == :mappa
|
156
|
-
_controllo_annidato_lista parametro, valore_parametro, &blocco se tipo_desiderato == :lista
|
125
|
+
# Inizializza un parametro da controllare.
|
126
|
+
definisci _inizializza(parametro, obbligatorietà, *opzioni_parametro, **opzioni_lista, &blocco)
|
127
|
+
valore = @parametri_originali.prendi parametro, nullo
|
128
|
+
opzioni_parametro |= [ :mappa ] se blocco_dato?
|
129
|
+
parametro = Parametro.nuovo parametro, valore, obbligatorietà,
|
130
|
+
*opzioni_parametro, **opzioni_lista
|
131
|
+
_valida parametro, &blocco
|
157
132
|
fine
|
158
133
|
|
159
134
|
##
|
160
|
-
#
|
161
|
-
definisci
|
162
|
-
|
163
|
-
blocco.avvia parametri_annidati
|
164
|
-
@validi = (@validi e parametri_annidati.validi?)
|
165
|
-
@parametri_processati.deposita parametro, parametri_annidati.in_mappa se @validi == si
|
166
|
-
@errori.deposita parametro, parametri_annidati.errori se parametri_annidati.errati?
|
167
|
-
fine
|
135
|
+
# Esegue la validazione di un singolo parametro.
|
136
|
+
definisci _valida(parametro, &blocco)
|
137
|
+
parametro.valida @parametri_originali, &blocco
|
168
138
|
|
169
|
-
|
170
|
-
|
171
|
-
definisci _controllo_annidato_lista(parametro, valore_parametro, &blocco)
|
172
|
-
elementi_processati = []
|
173
|
-
errori_trovati = []
|
174
|
-
|
175
|
-
valore_parametro.per_ognuno.con_indice esegui |elemento, indice|
|
176
|
-
parametri_elemento = Parametri.nuovo elemento
|
177
|
-
blocco.avvia parametri_elemento
|
178
|
-
@validi = (@validi e parametri_elemento.validi?)
|
179
|
-
elementi_processati << parametri_elemento.in_mappa se @validi == si
|
180
|
-
errori_trovati << parametri_elemento.errori.fondi(_indice: indice) se parametri_elemento.errati?
|
139
|
+
se parametro.valido? e @parametri_originali.ha_chiave? parametro.nome
|
140
|
+
@parametri_processati.deposita parametro.nome, parametro.valore
|
181
141
|
fine
|
182
142
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
##
|
188
|
-
# Controllo che gli elementi della lista siano tutti del tipo desiderato.
|
189
|
-
definisci _controlla_elementi_lista(parametro, valore_parametro, tipo_desiderato_elementi_lista)
|
190
|
-
ritorna se valore_parametro.non_è_una? Lista
|
191
|
-
|
192
|
-
se valore_parametro.almeno_uno? { |valore| tipo_non_corrispondente? valore, tipo_desiderato_elementi_lista }
|
193
|
-
_segnala_tipo_non_valido_su parametro, tipo_desiderato_elementi_lista
|
194
|
-
fine
|
195
|
-
fine
|
196
|
-
|
197
|
-
##
|
198
|
-
# Recupera le opzioni del parametro, ovvero tipo e annullabilità.
|
199
|
-
definisci _opzioni_parametro(*opzioni, **tipo_elementi_lista, &blocco)
|
200
|
-
mappa_opzioni = Mappa[annullabile: no, tipo_desiderato: :stringa]
|
201
|
-
mappa_opzioni.deposita :annullabile, si se opzioni.include? :annullabile
|
202
|
-
considera
|
203
|
-
quando opzioni.include?(:booleano)
|
204
|
-
mappa_opzioni.deposita :tipo_desiderato, :booleano
|
205
|
-
quando opzioni.include?(:data)
|
206
|
-
mappa_opzioni.deposita :tipo_desiderato, :data
|
207
|
-
quando opzioni.include?(:stringa)
|
208
|
-
mappa_opzioni.deposita :tipo_desiderato, :stringa
|
209
|
-
quando opzioni.include?(:simbolo)
|
210
|
-
mappa_opzioni.deposita :tipo_desiderato, :simbolo
|
211
|
-
quando opzioni.include?(:id_oggetto)
|
212
|
-
mappa_opzioni.deposita :tipo_desiderato, :id_oggetto
|
213
|
-
quando opzioni.include?(:intero)
|
214
|
-
mappa_opzioni.deposita :tipo_desiderato, :intero
|
215
|
-
quando opzioni.include?(:decimale)
|
216
|
-
mappa_opzioni.deposita :tipo_desiderato, :decimale
|
217
|
-
quando opzioni.include?(:lista)
|
218
|
-
mappa_opzioni.deposita :tipo_desiderato, :lista
|
219
|
-
se tipo_elementi_lista.ha_chiave? :di
|
220
|
-
mappa_opzioni.deposita :tipo_desiderato_elementi_lista, tipo_elementi_lista.ottieni(:di)
|
221
|
-
fine
|
222
|
-
quando opzioni.include?(:mappa)
|
223
|
-
mappa_opzioni.deposita :tipo_desiderato, :mappa
|
143
|
+
se parametro.errato?
|
144
|
+
@validi = no
|
145
|
+
@errori.deposita parametro.nome, parametro.errore
|
224
146
|
fine
|
225
|
-
mappa_opzioni.deposita :tipo_desiderato, :mappa se blocco.esiste? e opzioni.non_include? :lista
|
226
|
-
mappa_opzioni
|
227
|
-
fine
|
228
|
-
|
229
|
-
##
|
230
|
-
# Segnala che un parametro deve per forza essere passato.
|
231
|
-
definisci _segnala_presenza_obbligatoria_su(parametro)
|
232
|
-
@validi = no
|
233
|
-
@errori.deposita parametro, "è obbligatorio."
|
234
|
-
lancia :controllo_terminato
|
235
|
-
fine
|
236
|
-
|
237
|
-
##
|
238
|
-
# Segnala che un parametro non può essere nullo.
|
239
|
-
definisci _segnala_non_annullabile_su(parametro)
|
240
|
-
@validi = no
|
241
|
-
@errori.deposita parametro, "non deve essere nullo."
|
242
|
-
lancia :controllo_terminato
|
243
|
-
fine
|
244
|
-
|
245
|
-
##
|
246
|
-
# Segnala che un parametro deve essere del tipo specificato.
|
247
|
-
definisci _segnala_tipo_non_valido_su(parametro, tipo_desiderato)
|
248
|
-
@validi = no
|
249
|
-
@errori.deposita parametro, "deve essere #{_messaggio_per tipo_desiderato}."
|
250
|
-
lancia :controllo_terminato
|
251
|
-
fine
|
252
|
-
|
253
|
-
##
|
254
|
-
# Applica conversioni sul valore parametro in base al tipo desiderato.
|
255
|
-
definisci _applica_conversioni_su(valore_parametro, tipo_desiderato)
|
256
|
-
considera tipo_desiderato
|
257
|
-
quando :id_oggetto, :id_oggetti
|
258
|
-
valore_parametro.in_id
|
259
|
-
quando :simbolo, :simboli
|
260
|
-
valore_parametro.in_simbolo
|
261
|
-
quando :data, :date
|
262
|
-
Data.strptime(valore_parametro, "%Y-%m-%d")
|
263
|
-
altrimenti
|
264
|
-
valore_parametro
|
265
|
-
fine
|
266
|
-
recupera
|
267
|
-
valore_parametro
|
268
|
-
fine
|
269
|
-
|
270
|
-
##
|
271
|
-
# Determina se il tipo del valore di un parametro è corrispondente
|
272
|
-
# a quello desiderato.
|
273
|
-
definisci tipo_non_corrispondente?(valore_parametro, tipo_desiderato)
|
274
|
-
ritorna no se valore_parametro.non_specificato?
|
275
|
-
|
276
|
-
considera tipo_desiderato
|
277
|
-
quando :intero, :interi, :decimale, :decimali
|
278
|
-
ritorna si se valore_parametro.non_è_un? Numerico
|
279
|
-
quando :booleano, :booleani
|
280
|
-
ritorna si se valore_parametro.non_è_un? TrueClass e valore_parametro.non_è_un? FalseClass
|
281
|
-
quando :data, :date
|
282
|
-
ritorna si se valore_parametro.non_è_una? Data
|
283
|
-
quando :stringa, :stringhe
|
284
|
-
ritorna si se valore_parametro.non_è_una? Stringa
|
285
|
-
quando :simbolo, :simboli
|
286
|
-
ritorna si se valore_parametro.non_è_una? Simbolo
|
287
|
-
quando :id_oggetto, :id_oggetti
|
288
|
-
ritorna si se valore_parametro.non_è_un? IdOggetto
|
289
|
-
quando :lista, :liste
|
290
|
-
ritorna si se valore_parametro.non_è_una? Lista
|
291
|
-
quando :mappa, :mappe
|
292
|
-
ritorna si se valore_parametro.non_è_una? Mappa
|
293
|
-
fine
|
294
|
-
|
295
|
-
no
|
296
|
-
fine
|
297
|
-
|
298
|
-
##
|
299
|
-
# Messaggio per il tipo parametro.
|
300
|
-
definisci _messaggio_per(tipo_parametro)
|
301
|
-
considera tipo_parametro
|
302
|
-
quando :booleano allora "un booleano"
|
303
|
-
quando :booleani allora "una lista di booleani"
|
304
|
-
quando :data allora "una data"
|
305
|
-
quando :date allora "una lista di date"
|
306
|
-
quando :stringa allora "una stringa"
|
307
|
-
quando :stringhe allora "una lista di stringhe"
|
308
|
-
quando :simbolo allora "una stringa"
|
309
|
-
quando :simboli allora "una lista di simboli"
|
310
|
-
quando :id_oggetto allora "un id oggetto"
|
311
|
-
quando :id_oggetti allora "una lista di id oggetti"
|
312
|
-
quando :intero allora "un numero intero"
|
313
|
-
quando :interi allora "una lista di numeri interi"
|
314
|
-
quando :decimale allora "un numero decimale"
|
315
|
-
quando :decimali allora "una lista di numeri decimali"
|
316
|
-
quando :lista allora "una lista"
|
317
|
-
quando :liste allora "una lista di liste"
|
318
|
-
quando :mappa allora "un oggetto"
|
319
|
-
quando :mappe allora "una lista di oggetti"
|
320
|
-
altrimenti nullo fine
|
321
147
|
fine
|
322
148
|
|
323
149
|
fine
|
@@ -0,0 +1,266 @@
|
|
1
|
+
modulo Iris
|
2
|
+
modulo Azione
|
3
|
+
classe Parametri
|
4
|
+
##
|
5
|
+
# Un parametro è un singolo elemento di una mappa di Parametri.
|
6
|
+
classe Parametro
|
7
|
+
|
8
|
+
##
|
9
|
+
# Tipi disponibili.
|
10
|
+
TIPI = [ :booleano, :data, :stringa, :simbolo, :id_oggetto, :intero, :decimale, :mappa, :lista ].congela
|
11
|
+
|
12
|
+
accessore :nome, :valore,
|
13
|
+
:valido, :errore,
|
14
|
+
:obbligatorio, :opzionale, :annullabile,
|
15
|
+
:tipi_desiderati, :tipi_elementi_lista
|
16
|
+
|
17
|
+
alias :obbligatorio? :obbligatorio
|
18
|
+
alias :opzionale? :opzionale
|
19
|
+
alias :annullabile? :annullabile
|
20
|
+
alias :valido? :valido
|
21
|
+
|
22
|
+
definisci inizializzatore(nome, valore_originale, obbligatorietà, *opzioni, di: nulla)
|
23
|
+
@nome = nome
|
24
|
+
@annullabile = _estrai_annullabilità_da *opzioni
|
25
|
+
@tipi_desiderati = _estrai_tipi_desiderati_da *opzioni
|
26
|
+
@tipi_elementi_lista = [ di ].appiattisci.compatta
|
27
|
+
@valido = si
|
28
|
+
@valore = _esegui_conversione_tipo_su valore_originale
|
29
|
+
|
30
|
+
considera obbligatorietà
|
31
|
+
quando :obbligatorio
|
32
|
+
@obbligatorio = si
|
33
|
+
@opzionale = no
|
34
|
+
quando :opzionale
|
35
|
+
@obbligtorio = no
|
36
|
+
@opzionale = si
|
37
|
+
altrimenti
|
38
|
+
alza "il parametro deve essere `obbligatorio` o `opzionale`"
|
39
|
+
fine
|
40
|
+
fine
|
41
|
+
|
42
|
+
##
|
43
|
+
# Valida il parametro.
|
44
|
+
definisci valida(parametri_originali, &blocco)
|
45
|
+
@parametri_originali = parametri_originali
|
46
|
+
|
47
|
+
cattura :controllo_terminato esegui
|
48
|
+
_segnala_presenza_obbligatoria se obbligatorio? e @parametri_originali.non_ha_chiave? nome
|
49
|
+
_segnala_non_annullabile se annullabile? == no e @parametri_originali.ha_chiave? nome
|
50
|
+
_segnala_tipo_non_valido se tipi_desiderati.tutti? { |tipo| _tipo_non_corrispondente? tipo }
|
51
|
+
_controlla_tipi_elementi_lista se tipi_elementi_lista.almeno_uno?
|
52
|
+
_controlla_annidato &blocco se blocco_dato?
|
53
|
+
fine
|
54
|
+
fine
|
55
|
+
|
56
|
+
##
|
57
|
+
# Determina se il parametro ha errori.
|
58
|
+
definisci errato?
|
59
|
+
!valido?
|
60
|
+
fine
|
61
|
+
|
62
|
+
privati
|
63
|
+
|
64
|
+
##
|
65
|
+
# Estrae l'annullabilità dalle opzioni.
|
66
|
+
definisci _estrai_annullabilità_da(*opzioni)
|
67
|
+
se opzioni.include? :annullabile
|
68
|
+
@annullabile = si
|
69
|
+
altrimenti
|
70
|
+
@annullabile = no
|
71
|
+
fine
|
72
|
+
fine
|
73
|
+
|
74
|
+
##
|
75
|
+
# Estrae i tipi desiderati dalle opzioni.
|
76
|
+
definisci _estrai_tipi_desiderati_da(*opzioni)
|
77
|
+
tipi_estratti = opzioni.seleziona esegui |opzione|
|
78
|
+
opzione.in? TIPI e opzione != :annullabile
|
79
|
+
fine
|
80
|
+
tipi_non_riconosciuti = opzioni - tipi_estratti - [ :annullabile ]
|
81
|
+
se tipi_non_riconosciuti.almeno_una?
|
82
|
+
alza "i tipi `#{tipi_non_riconosciuti.unisci(", ")}` non sono supportati"
|
83
|
+
fine
|
84
|
+
tipi_estratti = [ :stringa ] se tipi_estratti.nessuno?
|
85
|
+
tipi_estratti
|
86
|
+
fine
|
87
|
+
|
88
|
+
##
|
89
|
+
# Esegue la conversione di tipo sul valore.
|
90
|
+
definisci _esegui_conversione_tipo_su(valore_originale, tipi = tipi_desiderati)
|
91
|
+
se valore_originale.è_una? Lista e tipi.include? :lista
|
92
|
+
lista = valore_originale
|
93
|
+
ritorna _esegui_conversione_tipo_su_ogni_elemento_della lista
|
94
|
+
fine
|
95
|
+
|
96
|
+
considera tipi.primo
|
97
|
+
quando :id_oggetto, :id_oggetti
|
98
|
+
valore_originale.in_id
|
99
|
+
quando :simbolo, :simboli
|
100
|
+
valore_originale.in_simbolo
|
101
|
+
quando :data, :date
|
102
|
+
Data.strptime(valore_originale, "%Y-%m-%d")
|
103
|
+
quando :stringa
|
104
|
+
valore_originale.specificato? ? valore_originale : nullo
|
105
|
+
altrimenti
|
106
|
+
valore_originale
|
107
|
+
fine
|
108
|
+
recupera
|
109
|
+
valore_originale
|
110
|
+
fine
|
111
|
+
|
112
|
+
##
|
113
|
+
# Esegue la conversione dei tipi su ogni elemento della lista.
|
114
|
+
definisci _esegui_conversione_tipo_su_ogni_elemento_della(lista)
|
115
|
+
lista.mappa esegui |valore_originale|
|
116
|
+
_esegui_conversione_tipo_su valore_originale, tipi_elementi_lista
|
117
|
+
fine
|
118
|
+
fine
|
119
|
+
|
120
|
+
##
|
121
|
+
# Segnala che un parametro deve per forza essere passato.
|
122
|
+
definisci _segnala_presenza_obbligatoria
|
123
|
+
@valido = no
|
124
|
+
@errore = "è obbligatorio."
|
125
|
+
lancia :controllo_terminato
|
126
|
+
fine
|
127
|
+
|
128
|
+
##
|
129
|
+
# Segnala che un parametro non può essere nullo.
|
130
|
+
definisci _segnala_non_annullabile
|
131
|
+
ritorna se valore.specificato?
|
132
|
+
@valido = no
|
133
|
+
@errore = "non deve essere nullo."
|
134
|
+
lancia :controllo_terminato
|
135
|
+
fine
|
136
|
+
|
137
|
+
##
|
138
|
+
# Segnala che un parametro deve essere uno dei tipi specificati.
|
139
|
+
definisci _segnala_tipo_non_valido(tipi = tipi_desiderati)
|
140
|
+
@valido = no
|
141
|
+
@errore = "deve essere #{_messaggio_per tipi}."
|
142
|
+
lancia :controllo_terminato
|
143
|
+
fine
|
144
|
+
|
145
|
+
##
|
146
|
+
# Controlla che gli elementi della lista siano tutti del tipo desiderato.
|
147
|
+
definisci _controlla_tipi_elementi_lista
|
148
|
+
ritorna se tipi_desiderati.non_include? :lista o valore.non_è_una? Lista
|
149
|
+
|
150
|
+
lista = valore
|
151
|
+
lista.per_ognuno esegui |elemento|
|
152
|
+
se tipi_elementi_lista.tutti? { |tipo| _tipo_non_corrispondente? tipo, elemento }
|
153
|
+
_segnala_tipo_non_valido tipi_elementi_lista
|
154
|
+
fine
|
155
|
+
fine
|
156
|
+
fine
|
157
|
+
|
158
|
+
##
|
159
|
+
# Controlla i parametri annidati.
|
160
|
+
definisci _controlla_annidato(&blocco)
|
161
|
+
ritorna se tipi_desiderati.non_include? :mappa e tipi_desiderati.non_include? :lista
|
162
|
+
ritorna se valore.nullo?
|
163
|
+
|
164
|
+
se valore.è_una? Mappa
|
165
|
+
_controllo_annidato_mappa &blocco
|
166
|
+
fine
|
167
|
+
|
168
|
+
se valore.è_una? Lista
|
169
|
+
_controllo_annidato_lista valore, &blocco
|
170
|
+
fine
|
171
|
+
fine
|
172
|
+
|
173
|
+
##
|
174
|
+
# Controlla i parametri annidati su mappa.
|
175
|
+
definisci _controllo_annidato_mappa(&blocco)
|
176
|
+
parametri_annidati = Iris::Azione::Parametri.nuovo valore
|
177
|
+
blocco.avvia parametri_annidati
|
178
|
+
@valido = (@valido e parametri_annidati.validi?)
|
179
|
+
@valore = parametri_annidati.in_mappa se parametri_annidati.validi?
|
180
|
+
@errore = parametri_annidati.errori se parametri_annidati.errati?
|
181
|
+
fine
|
182
|
+
|
183
|
+
##
|
184
|
+
# Controlla i parametri annidati su lista.
|
185
|
+
definisci _controllo_annidato_lista(lista, &blocco)
|
186
|
+
elementi_processati = []
|
187
|
+
|
188
|
+
lista.per_ognuno.con_indice esegui |elemento, indice|
|
189
|
+
parametri_elemento = Iris::Azione::Parametri.nuovo elemento
|
190
|
+
blocco.avvia parametri_elemento
|
191
|
+
se parametri_elemento.validi?
|
192
|
+
elementi_processati << parametri_elemento.in_mappa
|
193
|
+
altrimenti
|
194
|
+
@valido = no
|
195
|
+
@errore = Mappa("elemento alla posizione #{indice}:" => parametri_elemento.errori)
|
196
|
+
fine
|
197
|
+
fine
|
198
|
+
|
199
|
+
@valore = elementi_processati se valido?
|
200
|
+
fine
|
201
|
+
|
202
|
+
##
|
203
|
+
# Determina se il tipo del valore di un parametro è corrispondente
|
204
|
+
# a quello desiderato.
|
205
|
+
definisci _tipo_non_corrispondente?(tipo_desiderato, valore_da_controllare = valore)
|
206
|
+
ritorna no se valore_da_controllare.non_specificato?
|
207
|
+
|
208
|
+
considera tipo_desiderato
|
209
|
+
quando :intero, :interi, :decimale, :decimali
|
210
|
+
ritorna si se valore_da_controllare.non_è_un? Numerico
|
211
|
+
quando :booleano, :booleani
|
212
|
+
ritorna si se valore_da_controllare.non_è_un? TrueClass e valore_da_controllare.non_è_un? FalseClass
|
213
|
+
quando :data, :date
|
214
|
+
ritorna si se valore_da_controllare.non_è_una? Data
|
215
|
+
quando :stringa, :stringhe
|
216
|
+
ritorna si se valore_da_controllare.non_è_una? Stringa
|
217
|
+
quando :simbolo, :simboli
|
218
|
+
ritorna si se valore_da_controllare.non_è_una? Simbolo
|
219
|
+
quando :id_oggetto, :id_oggetti
|
220
|
+
ritorna si se valore_da_controllare.non_è_un? IdOggetto
|
221
|
+
quando :lista, :liste
|
222
|
+
ritorna si se valore_da_controllare.non_è_una? Lista
|
223
|
+
quando :mappa, :mappe
|
224
|
+
ritorna si se valore_da_controllare.non_è_una? Mappa
|
225
|
+
altrimenti
|
226
|
+
alza "tipo `#{tipo_desiderato}` non supportato"
|
227
|
+
fine
|
228
|
+
|
229
|
+
no
|
230
|
+
fine
|
231
|
+
|
232
|
+
##
|
233
|
+
# Messaggio per il tipo parametro.
|
234
|
+
definisci _messaggio_per(tipi = tipi_desiderati)
|
235
|
+
lista_messaggi = []
|
236
|
+
|
237
|
+
tipi.per_ognuno esegui |tipo_desiderato|
|
238
|
+
considera tipo_desiderato
|
239
|
+
quando :booleano allora lista_messaggi << "un booleano"
|
240
|
+
quando :booleani allora lista_messaggi << "una lista di booleani"
|
241
|
+
quando :data allora lista_messaggi << "una data"
|
242
|
+
quando :date allora lista_messaggi << "una lista di date"
|
243
|
+
quando :stringa allora lista_messaggi << "una stringa"
|
244
|
+
quando :stringhe allora lista_messaggi << "una lista di stringhe"
|
245
|
+
quando :simbolo allora lista_messaggi << "una stringa"
|
246
|
+
quando :simboli allora lista_messaggi << "una lista di simboli"
|
247
|
+
quando :id_oggetto allora lista_messaggi << "un id oggetto"
|
248
|
+
quando :id_oggetti allora lista_messaggi << "una lista di id oggetti"
|
249
|
+
quando :intero allora lista_messaggi << "un numero intero"
|
250
|
+
quando :interi allora lista_messaggi << "una lista di numeri interi"
|
251
|
+
quando :decimale allora lista_messaggi << "un numero decimale"
|
252
|
+
quando :decimali allora lista_messaggi << "una lista di numeri decimali"
|
253
|
+
quando :lista allora lista_messaggi << "una lista"
|
254
|
+
quando :liste allora lista_messaggi << "una lista di liste"
|
255
|
+
quando :mappa allora lista_messaggi << "un oggetto"
|
256
|
+
quando :mappe allora lista_messaggi << "una lista di oggetti"
|
257
|
+
fine
|
258
|
+
fine
|
259
|
+
|
260
|
+
lista_messaggi.unisci(" o ")
|
261
|
+
fine
|
262
|
+
|
263
|
+
fine
|
264
|
+
fine
|
265
|
+
fine
|
266
|
+
fine
|
data/lib/iris/navigatore.ir
CHANGED
@@ -89,7 +89,7 @@ modulo Iris
|
|
89
89
|
##
|
90
90
|
# Definisce una rotta.
|
91
91
|
definisci rotta(percorso_rotta, **opzioni)
|
92
|
-
azione = opzioni.
|
92
|
+
azione = opzioni.prendi :verso
|
93
93
|
nome_metodo = __callee__
|
94
94
|
percorso_completo = [ @percorso_padre, percorso_rotta ].unisci
|
95
95
|
alza "Metodo `#{nome_metodo}` non supportato. I metodi supportati per le rotte "\
|
data/lib/iris/versione.ir
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iris-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Ballardin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: italian-ruby
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- lib/iris/azione.ir
|
75
75
|
- lib/iris/azione/intestazioni.ir
|
76
76
|
- lib/iris/azione/parametri.ir
|
77
|
+
- lib/iris/azione/parametri/parametro.ir
|
77
78
|
- lib/iris/load.rb
|
78
79
|
- lib/iris/navigatore.ir
|
79
80
|
- lib/iris/navigatore/percorso.ir
|