# HG changeset patch # User Christian Ebert # Date 1183126908 -7200 # Node ID 5329863fb64eb3e7f8d6f6256b7e590deaf6f70a # Parent ad0da655bd12628a9b4027fb58f679572413dcb3 filectx does not need filelog; more nokwcommands Improve docs. diff -r ad0da655bd12 -r 5329863fb64e hgkw/keyword.py --- a/hgkw/keyword.py Fri Jun 29 01:18:49 2007 +0200 +++ b/hgkw/keyword.py Fri Jun 29 16:21:48 2007 +0200 @@ -98,8 +98,8 @@ 'Header': '{root}/{file},v {node|short} {date|utcdate} {author|user}', } -nokwcommands = ('add', 'remove', 'addremove', 'rollback', - 'incoming', 'outgoing', 'export', 'bundle', 'push') +nokwcommands = ('add', 'addremove', 'bundle', 'clone', 'copy', 'export', + 'incoming', 'outgoing', 'push', 'remove', 'rename', 'rollback') def utcdate(date): '''Returns hgdate in cvs-like UTC format.''' @@ -153,11 +153,11 @@ keywordsub = templater.firstline(self.ui.popbuffer()) return '$%s: %s $' % (kw, keywordsub) - def expand(self, node, flog, data): + def expand(self, node, data): '''Returns data with expanded keywords.''' if util.binary(data): return data - c = context.filectx(self.repo, self.path, fileid=node, filelog=flog) + c = context.filectx(self.repo, self.path, fileid=node) self.node = c.node() return self.re_kw.sub(self.kwsub, data) @@ -184,7 +184,7 @@ class kwfilelog(filelog.filelog): ''' - Superclass over filelog to customize its read, add, cmp methods. + Subclass of filelog to hook into its read, add, cmp methods. Keywords are "stored" unexpanded, and expanded on reading. ''' def __init__(self, opener, path, kwtemplater): @@ -194,7 +194,7 @@ def read(self, node): '''Substitutes keywords when reading filelog.''' data = super(kwfilelog, self).read(node) - return self.kwtemplater.expand(node, super(kwfilelog, self), data) + return self.kwtemplater.expand(node, data) def add(self, text, meta, tr, link, p1=None, p2=None): '''Removes keyword substitutions when adding to filelog.''' @@ -231,10 +231,14 @@ kwfmatcher = util.matcher(repo.root, inc=inc, exc=exc)[1] class kwrepo(repo.__class__): + ''' + Subclass of repo's class attribute to wrap its file and commit methods. + ''' + def file(self, f): + '''Opens kwfilelog instead of filelog if needed.''' if f[0] == '/': f = f[1:] - # only use kwfilelog when needed if kwfmatcher(f): kwt = kwtemplater(repo.ui, self, path=f) return kwfilelog(self.sopener, f, kwt)