595 data = fn(data, cmd, ui=self.ui, repo=self, filename=filename) |
595 data = fn(data, cmd, ui=self.ui, repo=self, filename=filename) |
596 break |
596 break |
597 |
597 |
598 return data |
598 return data |
599 |
599 |
|
600 @propertycache |
|
601 def _encodefilterpats(self): |
|
602 return self._loadfilter('encode') |
|
603 |
|
604 @propertycache |
|
605 def _decodefilterpats(self): |
|
606 return self._loadfilter('decode') |
|
607 |
600 def adddatafilter(self, name, filter): |
608 def adddatafilter(self, name, filter): |
601 self._datafilters[name] = filter |
609 self._datafilters[name] = filter |
602 |
610 |
603 def wread(self, filename): |
611 def wread(self, filename): |
604 if self._link(filename): |
612 if self._link(filename): |
605 data = os.readlink(self.wjoin(filename)) |
613 data = os.readlink(self.wjoin(filename)) |
606 else: |
614 else: |
607 data = self.wopener(filename, 'r').read() |
615 data = self.wopener(filename, 'r').read() |
608 return self._filter(self._loadfilter("encode"), filename, data) |
616 return self._filter(self._encodefilterpats, filename, data) |
609 |
617 |
610 def wwrite(self, filename, data, flags): |
618 def wwrite(self, filename, data, flags): |
611 data = self._filter(self._loadfilter("decode"), filename, data) |
619 data = self._filter(self._decodefilterpats, filename, data) |
612 try: |
620 try: |
613 os.unlink(self.wjoin(filename)) |
621 os.unlink(self.wjoin(filename)) |
614 except OSError: |
622 except OSError: |
615 pass |
623 pass |
616 if 'l' in flags: |
624 if 'l' in flags: |
619 self.wopener(filename, 'w').write(data) |
627 self.wopener(filename, 'w').write(data) |
620 if 'x' in flags: |
628 if 'x' in flags: |
621 util.set_flags(self.wjoin(filename), False, True) |
629 util.set_flags(self.wjoin(filename), False, True) |
622 |
630 |
623 def wwritedata(self, filename, data): |
631 def wwritedata(self, filename, data): |
624 return self._filter(self._loadfilter("decode"), filename, data) |
632 return self._filter(self._decodefilterpats, filename, data) |
625 |
633 |
626 def transaction(self, desc): |
634 def transaction(self, desc): |
627 tr = self._transref and self._transref() or None |
635 tr = self._transref and self._transref() or None |
628 if tr and tr.running(): |
636 if tr and tr.running(): |
629 return tr.nest() |
637 return tr.nest() |