Mercurial > ~astiob > upreckon > hgweb
comparison upreckon/files.py @ 174:e0b2fbd7ebe0
Improved built-in output validator; added conf. var. binary
The built-in output validator now reads blocks rather than lines, which
should make it faster. There is also a new configuration variable called
binary, which defaults to False and specifies whether the built-in output
validator should not try to translate line breaks. Finally, when binary
is false, the built-in output validator now translates line breaks even
if it the reference output is in a tape archive.
| author | Oleg Oshmyan <chortos@inbox.lv> |
|---|---|
| date | Sat, 18 Jun 2011 02:55:17 +0100 |
| parents | f8041e1e4d0d |
| children | 0d657576b1ac |
comparison
equal
deleted
inserted
replaced
| 170:b993d9257400 | 174:e0b2fbd7ebe0 |
|---|---|
| 58 def extract(self, name, target): | 58 def extract(self, name, target): |
| 59 member = self.file.getmember(name) | 59 member = self.file.getmember(name) |
| 60 member.name = target | 60 member.name = target |
| 61 self.file.extract(member) | 61 self.file.extract(member) |
| 62 | 62 |
| 63 # TODO: somehow automagically emulate universal line break support | |
| 64 def open(self, name): | 63 def open(self, name): |
| 65 return self.file.extractfile(name) | 64 return self.file.extractfile(name) |
| 66 | 65 |
| 67 def exists(self, queried_name): | 66 def exists(self, queried_name): |
| 68 if not hasattr(self, '_namelist'): | 67 if not hasattr(self, '_namelist'): |
| 115 else: | 114 else: |
| 116 member.filename = os.path.relpath(target) | 115 member.filename = os.path.relpath(target) |
| 117 self.file.extract(member) | 116 self.file.extract(member) |
| 118 | 117 |
| 119 def open(self, name): | 118 def open(self, name): |
| 120 return self.file.open(name, 'rU') | 119 return self.file.open(name, 'r') |
| 121 | 120 |
| 122 def exists(self, queried_name): | 121 def exists(self, queried_name): |
| 123 if not hasattr(self, '_namelist'): | 122 if not hasattr(self, '_namelist'): |
| 124 names = set() | 123 names = set() |
| 125 for name in self.file.namelist(): | 124 for name in self.file.namelist(): |
| 230 if hasattr(file, '__exit__'): | 229 if hasattr(file, '__exit__'): |
| 231 return file | 230 return file |
| 232 else: | 231 else: |
| 233 return contextlib.closing(file) | 232 return contextlib.closing(file) |
| 234 else: | 233 else: |
| 235 return open(self.real_path, 'rU') | 234 return open(self.real_path, 'rb') |
| 236 | 235 |
| 237 def copy(self, target): | 236 def copy(self, target): |
| 238 if self.archive: | 237 if self.archive: |
| 239 self.archive.extract(self.real_path, target) | 238 self.archive.extract(self.real_path, target) |
| 240 else: | 239 else: |
