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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 389949238c8259b0673f09e72b0c5bd46681d7e7ef2f6336d5713db03e15bcda
4
- data.tar.gz: 52739e88619c9a0b0036857421d4e6648c3fd18b107eabb5cf36261b310c6006
3
+ metadata.gz: 525522fdcedd3360d063c536c736a26788886ae9aeb8d82631dec3d7fb8c6ed8
4
+ data.tar.gz: b811b5ddfba6944be3ee5d80d00d890863dbd75301f1d02a395bfbb69be27603
5
5
  SHA512:
6
- metadata.gz: dbe833890db5b169fe0a98739b8a72332beee5e11c9ce7c6565bc2def76267b377d2e74922280c9cbf3f804606f37d547c459ba5c460a221f2475deb07351b9c
7
- data.tar.gz: 28f8d3da01384ea4cedba6f8df6b17703bcffaa5a24cfd7b95433ba3f800db2406b423c14b9725487864b19d0a3eb5d5a139ad12a02dcae8ee83fbc89b0f50ce
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.2.2)
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.6)
13
+ italian-ruby (0.2.7)
14
14
  ruby2ruby (~> 2.4)
15
- mongo (2.11.4)
16
- bson (>= 4.4.2, < 5.0.0)
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)
@@ -19,5 +19,9 @@ end
19
19
  module BSON
20
20
  class ObjectId
21
21
  alias :in_stringa :to_s
22
+
23
+ def to_json(*args)
24
+ "\"#{self.to_s}\""
25
+ end
22
26
  end
23
27
  end
@@ -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
@@ -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
- campi_richiesti = chiavi_richieste
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)
@@ -1,3 +1,3 @@
1
1
  modulo Mangusta
2
- VERSIONE = "0.3.0"
2
+ VERSIONE = "0.3.2"
3
3
  fine
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.0
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