comparison mercurial/localrepo.py @ 12707:2216ab103ea8

localrepo: load filter patterns outside of _filter
author Nicolas Dumazet <nicdumz.commits@gmail.com>
date Sun, 10 Oct 2010 19:10:16 +0200
parents 9ca08fbb750a
children 8a08b12ae88e
comparison
equal deleted inserted replaced
12706:9ca08fbb750a 12707:2216ab103ea8
586 fn = lambda s, c, **kwargs: oldfn(s, c) 586 fn = lambda s, c, **kwargs: oldfn(s, c)
587 l.append((mf, fn, params)) 587 l.append((mf, fn, params))
588 self.filterpats[filter] = l 588 self.filterpats[filter] = l
589 return self.filterpats[filter] 589 return self.filterpats[filter]
590 590
591 def _filter(self, filter, filename, data): 591 def _filter(self, filterpats, filename, data):
592 for mf, fn, cmd in self._loadfilter[filter]: 592 for mf, fn, cmd in filterpats:
593 if mf(filename): 593 if mf(filename):
594 self.ui.debug("filtering %s through %s\n" % (filename, cmd)) 594 self.ui.debug("filtering %s through %s\n" % (filename, cmd))
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
603 def wread(self, filename): 603 def wread(self, filename):
604 if self._link(filename): 604 if self._link(filename):
605 data = os.readlink(self.wjoin(filename)) 605 data = os.readlink(self.wjoin(filename))
606 else: 606 else:
607 data = self.wopener(filename, 'r').read() 607 data = self.wopener(filename, 'r').read()
608 return self._filter("encode", filename, data) 608 return self._filter(self._loadfilter("encode"), filename, data)
609 609
610 def wwrite(self, filename, data, flags): 610 def wwrite(self, filename, data, flags):
611 data = self._filter("decode", filename, data) 611 data = self._filter(self._loadfilter("decode"), filename, data)
612 try: 612 try:
613 os.unlink(self.wjoin(filename)) 613 os.unlink(self.wjoin(filename))
614 except OSError: 614 except OSError:
615 pass 615 pass
616 if 'l' in flags: 616 if 'l' in flags:
619 self.wopener(filename, 'w').write(data) 619 self.wopener(filename, 'w').write(data)
620 if 'x' in flags: 620 if 'x' in flags:
621 util.set_flags(self.wjoin(filename), False, True) 621 util.set_flags(self.wjoin(filename), False, True)
622 622
623 def wwritedata(self, filename, data): 623 def wwritedata(self, filename, data):
624 return self._filter("decode", filename, data) 624 return self._filter(self._loadfilter("decode"), filename, data)
625 625
626 def transaction(self, desc): 626 def transaction(self, desc):
627 tr = self._transref and self._transref() or None 627 tr = self._transref and self._transref() or None
628 if tr and tr.running(): 628 if tr and tr.running():
629 return tr.nest() 629 return tr.nest()