summaryrefslogtreecommitdiff
path: root/fs/multifs.py
diff options
context:
space:
mode:
authorwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2008-07-28 16:13:37 +0000
committerwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2008-07-28 16:13:37 +0000
commit7c35df5a4d6b94036f8f0779cf133879762ad88a (patch)
treee3243606aaebf105b59b5b738fe70a34aea97981 /fs/multifs.py
parentec0df8e5225ce1f98c7e80167230bd3e1bcd7c3e (diff)
downloadpyfilesystem-git-7c35df5a4d6b94036f8f0779cf133879762ad88a.tar.gz
Diffstat (limited to 'fs/multifs.py')
-rw-r--r--fs/multifs.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/fs/multifs.py b/fs/multifs.py
new file mode 100644
index 0000000..028eb74
--- /dev/null
+++ b/fs/multifs.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+
+from fs import FS
+
+class MultiFS(FS):
+
+ def __init__(self):
+ FS.__init__(self)
+
+ self.fs_sequence = []
+ self.fs_lookup = {}
+
+
+ def add_fs(self, name, fs):
+
+ self.fs_sequence.append(name, fs)
+ self.fs_lookup[name] = fs
+
+
+ def remove_fs(self, name):
+
+ fs = self.fs_lookup[name]
+ self.fs_sequence.remove(fs)
+ del self.fs_lookup[name]
+
+
+
+ def __getitem__(self, name):
+
+ return self.fs_lookup[name]
+
+ def __iter__(self):
+
+ return iter(self.fs_sequence)
+
+ def _delegate_search(self, path):
+
+ for fs in self:
+ if self.exists(path):
+ return fs
+ return None
+
+ def exists(self, path):
+
+ return self._delegate_search(path) is not None
+ \ No newline at end of file