Implement value_filter for dump
parent
b0cc255623
commit
693c49403e
20
etctree.js
20
etctree.js
|
@ -134,10 +134,10 @@ class EtcTree
|
|||
}
|
||||
|
||||
// create a snapshot of all data including leases
|
||||
dump(persistent_only)
|
||||
dump(persistent_only, value_filter)
|
||||
{
|
||||
const snapshot = {
|
||||
state: this._copy_tree(this.state, persistent_only) || {},
|
||||
state: this._copy_tree(this.state, persistent_only, value_filter) || {},
|
||||
mod_revision: this.mod_revision,
|
||||
};
|
||||
if (!persistent_only)
|
||||
|
@ -152,17 +152,27 @@ class EtcTree
|
|||
return snapshot;
|
||||
}
|
||||
|
||||
_copy_tree(cur, no_lease)
|
||||
_copy_tree(cur, no_lease, value_filter)
|
||||
{
|
||||
const nonempty = cur.value != null && (!no_lease || !copy.lease);
|
||||
let nonempty = cur.value != null && (!no_lease || !cur.lease);
|
||||
let filtered;
|
||||
if (nonempty && value_filter)
|
||||
{
|
||||
filtered = value_filter(cur.value);
|
||||
nonempty = nonempty && filtered != null;
|
||||
}
|
||||
const copy = (nonempty ? { ...cur } : {});
|
||||
copy.children = {};
|
||||
if (nonempty && value_filter)
|
||||
{
|
||||
copy.value = filtered;
|
||||
}
|
||||
delete copy.watchers;
|
||||
delete copy.key_watchers;
|
||||
let has_children = false;
|
||||
for (const k in cur.children)
|
||||
{
|
||||
const child = this._copy_tree(cur.children[k], no_lease);
|
||||
const child = this._copy_tree(cur.children[k], no_lease, value_filter);
|
||||
if (child)
|
||||
{
|
||||
copy.children[k] = child;
|
||||
|
|
Loading…
Reference in New Issue