diff -r f44fb15a0f30 -r ce5eb725d0c6 hgkw/keyword.py --- a/hgkw/keyword.py Wed Feb 06 00:24:49 2008 +0100 +++ b/hgkw/keyword.py Wed Feb 06 11:32:34 2008 +0100 @@ -132,8 +132,6 @@ and calls given substitution function.''' if node is None: # kwrepo.wwrite except when overwriting on commit - if self.ctx is None: - self.ctx = self.repo.changectx() try: fnode = self.ctx.filenode(path) fl = self.repo.file(path) @@ -154,11 +152,13 @@ return subfunc(kwsub, data) - def expand(self, path, data, node): + def expand(self, path, data, ctx): '''Returns data with keywords expanded.''' if util.binary(data): return data - return self.substitute(path, data, node, self.re_kw.sub) + if self.ctx is None: + self.ctx = ctx or self.repo.changectx() + return self.substitute(path, data, None, self.re_kw.sub) def process(self, path, data, expand, ctx, node): '''Returns a tuple: data, count. @@ -246,18 +246,16 @@ %p root-relative path name of file being printed ''' ctx = repo.changectx(opts['rev']) - try: - repo._kwt.ctx = ctx - kw = True - except AttributeError: - kw = False err = 1 for src, abs, rel, exact in cmdutil.walk(repo, (file1,) + pats, opts, ctx.node()): fp = cmdutil.make_file(repo, opts['output'], ctx.node(), pathname=abs) data = ctx.filectx(abs).data() - if kw and repo._kwt.matcher(abs): - data = repo._kwt.expand(abs, data, None) + try: + if repo._kwt.matcher(abs): + data = repo._kwt.expand(abs, data, ctx) + except AttributeError: + pass fp.write(data) err = 0 return err @@ -494,7 +492,7 @@ path = fctx.path() text = fctx.data() if kwt.matcher(path): - text = kwt.expand(path, text, fctx.node()) + text = kwt.expand(path, text, web.changectx(req)) mt = mimetypes.guess_type(path)[0] if mt is None or util.binary(text): mt = mt or 'application/octet-stream'