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 +4 -4
- data/app/kern/services/vm.rb +13 -0
- data/docs/services/vm.md +5 -1
- data/lib/flok/version.rb +1 -1
- data/spec/kern/vm_service_functional_spec.rb +68 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f42ffe41437733572bf53f5f8e98a52b099ddd5
|
4
|
+
data.tar.gz: 51e6e0dcb4bce07f7f5216658bd78257714ce173
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1b7320923d3b0286d1b5fc08c8a5b1907506693032901c67b6be1f43209a09240bff287cd3b20720ee70030c972b8d1a707b527a13c69384297294e32121307
|
7
|
+
data.tar.gz: b5da37b43f298dd5d87f16232c2e05b52c9d4c4cb670d3de37b7bd7da91131c3c05bdbe03ea89c4ebb8d1e946934638041d3205e90658465a5f219d5194ac679
|
data/app/kern/services/vm.rb
CHANGED
@@ -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
|
data/docs/services/vm.md
CHANGED
@@ -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
|
data/lib/flok/version.rb
CHANGED
@@ -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 %{
|