flok 0.0.94 → 0.0.95

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