flok 0.0.94 → 0.0.95

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
  SHA1:
3
- metadata.gz: de56f8ba2fe41aaa8103b7620742535cc9f6bea7
4
- data.tar.gz: b8fb650a7505ec372d8d0e2ad95760a60bdee5d0
3
+ metadata.gz: 1f42ffe41437733572bf53f5f8e98a52b099ddd5
4
+ data.tar.gz: 51e6e0dcb4bce07f7f5216658bd78257714ce173
5
5
  SHA512:
6
- metadata.gz: 76aff860e57bb8506f8388e0b5e94005fc445d57082d47f97c2e6ed5d2559498379ab86c3655436000eb588383557feaecbb59ec5d31b7cf164522f5cf2e8b07
7
- data.tar.gz: bb7e7adf1c1fb97b9e3081328a42340b10306c54ef8204718f6ac94b66ebb41480ce9f3d06bf31b2abea1692969d3300d0347b5938d8475ef529067288280bab
6
+ metadata.gz: c1b7320923d3b0286d1b5fc08c8a5b1907506693032901c67b6be1f43209a09240bff287cd3b20720ee70030c972b8d1a707b527a13c69384297294e32121307
7
+ data.tar.gz: b5da37b43f298dd5d87f16232c2e05b52c9d4c4cb670d3de37b7bd7da91131c3c05bdbe03ea89c4ebb8d1e946934638041d3205e90658465a5f219d5194ac679
@@ -252,6 +252,19 @@ service :vm do
252
252
  page.__index[page.entries[i]._id] = i;
253
253
  }
254
254
  }
255
+
256
+ function vm_entry_with_id(page, eid) {
257
+ var _idx = page.__index[eid];
258
+ return page.entries[_idx];
259
+ }
260
+
261
+ function vm_del_entry_with_id(page, eid) {
262
+ var _idx = page.__index[eid];
263
+ if (_idx > -1) {
264
+ page.entries.splice(_idx, 1);
265
+ }
266
+ vm_reindex_page(page);
267
+ }
255
268
  ///////////////////////////////////////////////////////////////////////////
256
269
 
257
270
  //vm_diff helpers
@@ -194,8 +194,12 @@ The pager synchronization daemon is embodied in the function called `vm_pg_sync_
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
196
  * `vm_copy_page(page)` - Creates a copy of the page. Only copies the `_head`, `_next`, `_id`, `entries`, `_hash`
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
+ 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
+ added recently will not be available by this untli they are written to disk via `vm_cache_write`
200
+ * `vm_del_entry_with_id(page, entry_id)` - Removes the entry from the page. If entry_id doesn't exist, nothing happends.
197
201
  * `vm_rehash_page(page)` - Calculates the hash for a page and modifies that page with the new `_hash` field. If the `_hash` field does not exist, it
198
- will create it
202
+ will create it. Multiple calls are supported as it will recalculate the index as needed.
199
203
  * `vm_reindex_page(page)` - Recalculates the `__index` field of the page. If `__index` does not exist, it is added.
200
204
  * **Diff helpers**
201
205
  * See [VM Diff](./vm/diff.md) section on *Functional Kernel
@@ -1,3 +1,3 @@
1
1
  module Flok
2
- VERSION = "0.0.94"
2
+ VERSION = "0.0.95"
3
3
  end
@@ -36,6 +36,74 @@ RSpec.describe "kern:vm_service_functional" do
36
36
  expect(dump["new_anon_page"]["entries"]).to eq []
37
37
  end
38
38
 
39
+ it "Can can use vm_entry_with_id" do
40
+ ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config5.rb")
41
+ dump = ctx.evald %{
42
+ dump.new_page = vm_create_page("my_id")
43
+ dump.new_page.entries.push({
44
+ _sig: "test",
45
+ _id: "test",
46
+ value: "test",
47
+ });
48
+
49
+ vm_reindex_page(dump.new_page);
50
+ vm_rehash_page(dump.new_page);
51
+
52
+ dump.test_entry = vm_entry_with_id(dump.new_page, "test");
53
+ dump.no_such_entry = vm_entry_with_id(dump.new_page, "test2");
54
+ }
55
+
56
+ expect(dump["test_entry"]).to eq({
57
+ "_id" => "test",
58
+ "_sig" => "test",
59
+ "value" => "test",
60
+ })
61
+
62
+ expect(dump["test_entry2"]).to eq(nil)
63
+ end
64
+
65
+ it "Can can use vm_del_entry_with_id" do
66
+ ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config5.rb")
67
+ dump = ctx.evald %{
68
+ dump.new_page = vm_create_page("my_id")
69
+ dump.new_page.entries.push({
70
+ _sig: "test",
71
+ _id: "test",
72
+ value: "test",
73
+ });
74
+ dump.new_page.entries.push({
75
+ _sig: "test2",
76
+ _id: "test2",
77
+ value: "test2",
78
+ });
79
+ dump.new_page.entries.push({
80
+ _sig: "test3",
81
+ _id: "test3",
82
+ value: "test3",
83
+ });
84
+ dump.new_page.entries.push({
85
+ _sig: "test4",
86
+ _id: "test4",
87
+ value: "test4",
88
+ });
89
+
90
+ vm_reindex_page(dump.new_page);
91
+ vm_rehash_page(dump.new_page);
92
+
93
+ vm_del_entry_with_id(dump.new_page, "test3");
94
+ vm_del_entry_with_id(dump.new_page, "test4");
95
+ vm_del_entry_with_id(dump.new_page, "test");
96
+ vm_del_entry_with_id(dump.new_page, "testX");
97
+ }
98
+
99
+ expect(dump["new_page"]["entries"]).to eq([{
100
+ "_sig" => "test2",
101
+ "_id" => "test2",
102
+ "value" => "test2",
103
+ }
104
+ ])
105
+ end
106
+
39
107
  it "Can can use vm_copy_page" do
40
108
  ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config5.rb")
41
109
  dump = ctx.evald %{
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.94
4
+ version: 0.0.95
5
5
  platform: ruby
6
6
  authors:
7
7
  - seo