iris-rb 0.4.6 → 0.5.0
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 +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
|