diff options
author | willmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f> | 2008-07-28 16:13:37 +0000 |
---|---|---|
committer | willmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f> | 2008-07-28 16:13:37 +0000 |
commit | 7c35df5a4d6b94036f8f0779cf133879762ad88a (patch) | |
tree | e3243606aaebf105b59b5b738fe70a34aea97981 /fs/multifs.py | |
parent | ec0df8e5225ce1f98c7e80167230bd3e1bcd7c3e (diff) | |
download | pyfilesystem-git-7c35df5a4d6b94036f8f0779cf133879762ad88a.tar.gz |
Diffstat (limited to 'fs/multifs.py')
-rw-r--r-- | fs/multifs.py | 46 |
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 |