flok 0.0.96 → 0.0.97

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
  SHA1:
3
- metadata.gz: 723b7ee6d523973fb556dd8a17fd5f83affcdf2b
4
- data.tar.gz: ffa8588b4d24dc0ddbb6f4175123cac51321d4bb
3
+ metadata.gz: ade07fa602cf88575c37421f1dc72c6e7eef5654
4
+ data.tar.gz: 0031fbe5dc0571736fa024d894580e9138902ff9
5
5
  SHA512:
6
- metadata.gz: 3f80f965f0d08132aa33504a9cab237e0ddab6939051d7fb8a66ed74144c6613286d7e372adba90d8066b3e44ecd1128fbae10615edc3fcd1b7237382b399d06
7
- data.tar.gz: c387613fb58f47c1f5addb74c37eabf58377ba50e598c75bf18260972968e0938b0656c0a2dc3fc042d6d7a2f0ba6a0644c48c5c8803e4c568a6534c9cc6cfef
6
+ metadata.gz: 692911fdab522f9e97e99e880d2078fdcc0ba547c6063fa89641af114b42220d2b23539af9a5f9f91b8a1e6da1194108220fa2150819c131b2256eb66bb61a6c
7
+ data.tar.gz: 4276ebf5bcc0e1388bda81f2cdb9ed2001642e9907e154caf6d73eec86fba5b04e6d85d0dda5f418602bf654abfb5cf01f9784d879ba59bd3a789992a1be8715
@@ -217,7 +217,7 @@ service :vm do
217
217
  }
218
218
 
219
219
  function vm_copy_page(page) {
220
- var page = {
220
+ var copy = {
221
221
  _id: page._id,
222
222
  _head: page._head,
223
223
  _next: page._next,
@@ -225,7 +225,9 @@ service :vm do
225
225
  entries: JSON.parse(JSON.stringify(page.entries)),
226
226
  };
227
227
 
228
- return page;
228
+ vm_reindex_page(copy);
229
+
230
+ return copy;
229
231
  }
230
232
 
231
233
  function vm_rehash_page(page) {
data/docs/services/vm.md CHANGED
@@ -193,7 +193,7 @@ The pager synchronization daemon is embodied in the function called `vm_pg_sync_
193
193
  * **Generic Page**
194
194
  * `vm_create_page(id)` - **this does not write anything to memory. It has no side effects except returning a hash**.
195
195
  * `vm_create_page()` - Same as vm_create_page, but generates an id fore you.
196
- * `vm_copy_page(page)` - Creates a copy of the page. Only copies the `_head`, `_next`, `_id`, `entries`, `_hash`
196
+ * `vm_copy_page(page)` - Creates a copy of the page. Only copies the `_head`, `_next`, `_id`, deep copy of `entries`, `_hash` and recalculates the `__index`
197
197
  * `vm_entry_with_id(page, entry_id)` - Searches a page for an entry with a particular id via the `__index` table. retruns `nil` if the entry is not found or
198
198
  a reference if the entry if it is found. The reference is **not** modifiable unless you call `vm_copy_page` first. Additionally, entries you
199
199
  added recently will not be available by this untli they are written to disk via `vm_cache_write`
data/lib/flok/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Flok
2
- VERSION = "0.0.96"
2
+ VERSION = "0.0.97"
3
3
  end
@@ -173,9 +173,18 @@ RSpec.describe "kern:vm_service_functional" do
173
173
  dump.new_page.entries[0]["value"] = "Circle";
174
174
  dump.head_z_next_triangle_entry_circle = vm_copy_page(dump.new_page);
175
175
 
176
- //Modify the new_page's entry again in-place
176
+ //Modify the new_page's entry again in-place to make sure it dosen't affect the copies
177
177
  dump.new_page.entries[0]["_sig"] = "Triangle"
178
178
  dump.new_page.entries[0]["value"] = "Triangle"
179
+
180
+ //Force a re-index, copy the page
181
+ vm_reindex_page(dump.new_page);
182
+ dump.head_z_next_triangle_entry_triangle_indexed = vm_copy_page(dump.new_page);
183
+
184
+ //Adjust the page's index array container and an element itself to make sure nothing
185
+ //is referenced.
186
+ dump.new_page.__index["id0"] = -1 //This shouldn't modify our copied pages index at id0
187
+ dump.new_page.__index["id1"] = 2 //Non-existant, just checking to make sure arrays are not referenced
179
188
  }
180
189
 
181
190
  expect(dump["no_head_no_next_no_entry"]).to eq({
@@ -184,6 +193,7 @@ RSpec.describe "kern:vm_service_functional" do
184
193
  "_id" => "Q",
185
194
  "_hash" => nil,
186
195
  "entries" => [],
196
+ "__index" => {}
187
197
  })
188
198
 
189
199
  expect(dump["head_z_next_triangle_entry_square"]).to eq({
@@ -194,6 +204,7 @@ RSpec.describe "kern:vm_service_functional" do
194
204
  "entries" => [
195
205
  {"_id" => "id0", "_sig" => "Square", "value" => "Square"},
196
206
  ],
207
+ "__index" => {"id0" => 0}
197
208
  })
198
209
 
199
210
  expect(dump["head_z_next_triangle_entry_circle"]).to eq({
@@ -204,6 +215,18 @@ RSpec.describe "kern:vm_service_functional" do
204
215
  "entries" => [
205
216
  {"_id" => "id0", "_sig" => "Circle", "value" => "Circle"},
206
217
  ],
218
+ "__index" => {"id0" => 0}
219
+ })
220
+
221
+ expect(dump["head_z_next_triangle_entry_triangle_indexed"]).to eq({
222
+ "_head" => "Z",
223
+ "_next" => "Triangle",
224
+ "_id" => "Q",
225
+ "_hash" => nil,
226
+ "entries" => [
227
+ {"_id" => "id0", "_sig" => "Triangle", "value" => "Triangle"},
228
+ ],
229
+ "__index" => { "id0" => 0, }
207
230
  })
208
231
 
209
232
  expect(dump["new_page"]).to eq({
@@ -214,7 +237,10 @@ RSpec.describe "kern:vm_service_functional" do
214
237
  "entries" => [
215
238
  {"_id" => "id0", "_sig" => "Triangle", "value" => "Triangle"},
216
239
  ],
217
- "__index" => {}
240
+ "__index" => {
241
+ "id0" => -1,
242
+ "id1" => 2
243
+ }
218
244
  })
219
245
  end
220
246
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.96
4
+ version: 0.0.97
5
5
  platform: ruby
6
6
  authors:
7
7
  - seo