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: |