mangusta 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/lib/mangusta/core_ext/mongo.rb +4 -0
- data/lib/mangusta/documento/espositore.ir +68 -0
- data/lib/mangusta/documento.ir +1 -40
- data/lib/mangusta/versione.ir +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 525522fdcedd3360d063c536c736a26788886ae9aeb8d82631dec3d7fb8c6ed8
|
4
|
+
data.tar.gz: b811b5ddfba6944be3ee5d80d00d890863dbd75301f1d02a395bfbb69be27603
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e43da18fe3039c56c44fed4ccd1efa975c898ca1868c0e5f4bb15b42c6b7bbf6ebb65456c6e855e5c3cacfc68e6eeafcea4893d0e2a72e74dc6568ca3fe7ada
|
7
|
+
data.tar.gz: f387e722ddeba3745fec9c2ff59abc5ddec8a0ea54fafa1af363be4ca84ea7187eca6dfa505a722b980cf688c298a0b5ad8c9cf971e28b6de83d511661d31f4d
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mangusta (0.
|
4
|
+
mangusta (0.3.1)
|
5
5
|
italian-ruby (~> 0.1)
|
6
6
|
mongo (~> 2.11)
|
7
7
|
|
@@ -10,10 +10,10 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
bson (4.8.2)
|
12
12
|
diff-lcs (1.3)
|
13
|
-
italian-ruby (0.2.
|
13
|
+
italian-ruby (0.2.7)
|
14
14
|
ruby2ruby (~> 2.4)
|
15
|
-
mongo (2.
|
16
|
-
bson (>= 4.
|
15
|
+
mongo (2.12.0)
|
16
|
+
bson (>= 4.8.2, < 5.0.0)
|
17
17
|
rake (12.3.3)
|
18
18
|
rspec (3.9.0)
|
19
19
|
rspec-core (~> 3.9.0)
|
@@ -0,0 +1,68 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
modulo Documento
|
3
|
+
##
|
4
|
+
# Gestisce l'esposizione di un documento.
|
5
|
+
classe Espositore
|
6
|
+
|
7
|
+
##
|
8
|
+
# Imposta campi e relazioni richieste.
|
9
|
+
definisci inizializzatore(documento, *chiavi_richieste, **relazioni_richieste)
|
10
|
+
@documento = documento
|
11
|
+
@campi_richiesti = chiavi_richieste.seleziona { |chiave| chiave.in? documento.campi.mappa(&:nome) }
|
12
|
+
@relazioni_dirette = chiavi_richieste.seleziona { |chiave| chiave.in? documento.relazioni.mappa(&:nome) }
|
13
|
+
@relazioni_annidate = relazioni_richieste.chiavi
|
14
|
+
@relazioni_richieste = relazioni_richieste
|
15
|
+
fine
|
16
|
+
|
17
|
+
##
|
18
|
+
# Espone il documento.
|
19
|
+
definisci esponi
|
20
|
+
@documento_convertito = Mangusta::Utilità.converti_in_json @documento,
|
21
|
+
*(@relazioni_dirette + @relazioni_annidate)
|
22
|
+
|
23
|
+
se @campi_richiesti.nessuno?
|
24
|
+
@documento_convertito
|
25
|
+
altrimenti
|
26
|
+
filtra_esposizione
|
27
|
+
fine
|
28
|
+
fine
|
29
|
+
|
30
|
+
##
|
31
|
+
# Filtra l'esposizione del documento sui campi o relazioni richieste.
|
32
|
+
definisci filtra_esposizione
|
33
|
+
esposizione_filtrata = Mappa.nuova
|
34
|
+
|
35
|
+
@campi_richiesti.per_ognuno esegui |campo_richiesto|
|
36
|
+
prossimo se campo_richiesto.non_è_un? Simbolo
|
37
|
+
esposizione_filtrata.deposita campo_richiesto, @documento_convertito.ottieni(campo_richiesto, nullo)
|
38
|
+
fine
|
39
|
+
|
40
|
+
@relazioni_dirette.per_ognuna esegui |relazione_richiesta|
|
41
|
+
alza Relazione::NonInclusa, "per poter esporre la relazione `#{relazione_richiesta}` è necessario prima includerla" se
|
42
|
+
relazione_richiesta.non_è_un? Simbolo o @documento_convertito.non_ha_chiave? relazione_richiesta
|
43
|
+
esposizione_filtrata.deposita relazione_richiesta, @documento_convertito.ottieni(relazione_richiesta)
|
44
|
+
fine
|
45
|
+
|
46
|
+
@relazioni_richieste.per_ognuna esegui |nome_relazione, campi_relazione_richiesti|
|
47
|
+
prossima se campi_relazione_richiesti.non_è_una? Lista
|
48
|
+
valore_relazione = @documento_convertito.ottieni nome_relazione, nulla
|
49
|
+
se valore_relazione.è_una? Mappa
|
50
|
+
esposizione_filtrata.deposita nome_relazione, valore_relazione
|
51
|
+
.seleziona { |chiave, valore| chiave.in? campi_relazione_richiesti }
|
52
|
+
altrimenti_se valore_relazione.è_una? Lista
|
53
|
+
valori_filtrati = valore_relazione.mappa esegui |singolo_valore_relazione|
|
54
|
+
prossima se singolo_valore_relazione.non_è_una? Mappa
|
55
|
+
singolo_valore_relazione.seleziona { |chiave, valore| chiave.in? campi_relazione_richiesti }
|
56
|
+
fine
|
57
|
+
esposizione_filtrata.deposita nome_relazione, valori_filtrati.compatta
|
58
|
+
altrimenti
|
59
|
+
prossima
|
60
|
+
fine
|
61
|
+
fine
|
62
|
+
|
63
|
+
esposizione_filtrata
|
64
|
+
fine
|
65
|
+
|
66
|
+
fine
|
67
|
+
fine
|
68
|
+
fine
|
data/lib/mangusta/documento.ir
CHANGED
@@ -88,45 +88,7 @@ modulo Mangusta
|
|
88
88
|
##
|
89
89
|
# Ottiene la rappresentazione in Mappa dei campi del documento.
|
90
90
|
definisci esponi(*chiavi_richieste, **relazioni_richieste)
|
91
|
-
|
92
|
-
.seleziona { |chiave| chiave.in? campi.mappa(&:nome) }
|
93
|
-
relazioni_dirette = chiavi_richieste
|
94
|
-
.seleziona { |chiave| chiave.in? relazioni.mappa(&:nome) }
|
95
|
-
relazioni_annidate = relazioni_richieste.chiavi
|
96
|
-
relazioni_da_convertire = relazioni_dirette + relazioni_annidate
|
97
|
-
|
98
|
-
risultato_conversione = Mangusta::Utilità.converti_in_json se_stesso, *relazioni_da_convertire
|
99
|
-
ritorna risultato_conversione se campi_richiesti.nessuno?
|
100
|
-
conversione_filtrata = Mappa.nuova
|
101
|
-
|
102
|
-
campi_richiesti.per_ognuno esegui |campo_richiesto|
|
103
|
-
prossimo se campo_richiesto.non_è_un? Simbolo
|
104
|
-
conversione_filtrata.deposita campo_richiesto, risultato_conversione.ottieni(campo_richiesto, nullo)
|
105
|
-
fine
|
106
|
-
|
107
|
-
relazioni_dirette.per_ognuna esegui |relazione_richiesta|
|
108
|
-
alza Relazione::NonInclusa, "per poter esporre la relazione `#{relazione_richiesta}` è necessario prima includerla" se
|
109
|
-
relazione_richiesta.non_è_un? Simbolo o risultato_conversione.non_ha_chiave? relazione_richiesta
|
110
|
-
conversione_filtrata.deposita relazione_richiesta, risultato_conversione.ottieni(relazione_richiesta)
|
111
|
-
fine
|
112
|
-
|
113
|
-
relazioni_richieste.per_ognuna esegui |nome_relazione, campi_relazione_richiesti|
|
114
|
-
prossima se campi_relazione_richiesti.non_è_una? Lista
|
115
|
-
valore_relazione = risultato_conversione.ottieni nome_relazione, nulla
|
116
|
-
se valore_relazione.è_una? Mappa
|
117
|
-
conversione_filtrata.deposita nome_relazione, valore_relazione
|
118
|
-
.seleziona { |chiave, valore| chiave.in? campi_relazione_richiesti }
|
119
|
-
altrimenti_se valore_relazione.è_una? Lista
|
120
|
-
valori_filtrati = valore_relazione.mappa esegui |singolo_valore_relazione|
|
121
|
-
prossima se singolo_valore_relazione.non_è_una? Mappa
|
122
|
-
singolo_valore_relazione.seleziona { |chiave, valore| chiave.in? campi_relazione_richiesti }
|
123
|
-
fine
|
124
|
-
conversione_filtrata.deposita nome_relazione, valori_filtrati.compatta
|
125
|
-
altrimenti
|
126
|
-
prossima
|
127
|
-
fine
|
128
|
-
fine
|
129
|
-
conversione_filtrata
|
91
|
+
Espositore.nuovo(se_stesso, *chiavi_richieste, **relazioni_richieste).esponi
|
130
92
|
fine
|
131
93
|
|
132
94
|
##
|
@@ -193,7 +155,6 @@ modulo Mangusta
|
|
193
155
|
@_attributi_originali = attributi
|
194
156
|
fine
|
195
157
|
|
196
|
-
|
197
158
|
##
|
198
159
|
# Codice da eseguire quando questo modulo verrà incluso.
|
199
160
|
definisci se_stesso.quando_incluso(classe_documento)
|
data/lib/mangusta/versione.ir
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mangusta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Ballardin
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- lib/mangusta/core_ext/mongo.rb
|
59
59
|
- lib/mangusta/documento.ir
|
60
60
|
- lib/mangusta/documento/campo.ir
|
61
|
+
- lib/mangusta/documento/espositore.ir
|
61
62
|
- lib/mangusta/documento/incorporato.ir
|
62
63
|
- lib/mangusta/documento/metodi_di_classe.ir
|
63
64
|
- lib/mangusta/documento/relazione.ir
|