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 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