mangusta 0.3.0 → 0.3.2
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/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
|