- @override
Removes the node specified at path
.
Source
@override void removeNode(String path, {bool recurse: true}) { if (path == '/' || !path.startsWith('/')) return; SimpleNode node = getNode(path); if (node == null) { return; } if (recurse) { String base = path; if (!base.endsWith("/")) { base += "/"; } int baseSlashFreq = countCharacterFrequency(base, "/"); List<String> targets = nodes.keys.where((String x) { return x.startsWith(base) && baseSlashFreq == countCharacterFrequency(x, "/"); }).toList(); for (String target in targets) { removeNode(target); } } Path p = new Path(path); SimpleNode pnode = getNode(p.parentPath); node.onRemoving(); node.removed = true; if (pnode != null) { pnode.children.remove(p.name); pnode.onChildRemoved(p.name, node); pnode.updateList(p.name); } if (node.callbacks.isEmpty && !node._hasListListener) { nodes.remove(path); } else { node._stub = true; } }