keyword: prettier command lists as strings (was: [PATCH 1 of 3] keyword: allow keyword expansion on clone)

Christian Ebert blacktrash at gmx.net
Mon Feb 4 14:16:46 CST 2008


* Matt Mackall on Monday, February 04, 2008 at 12:36:47 -0600
> On Mon, 2008-02-04 at 19:20 +0100, Christian Ebert wrote:
>> Is splitting a string safer?
> 
> No, it's just a bit prettier.

Ah, I'm always for pretty ;)



# HG changeset patch
# User Christian Ebert <blacktrash at gmx.net>
# Date 1202155725 -3600
# Node ID 24241940d00d34216929c693e8e206c078453f7b
# Parent  1beaaef823f73502178fec025523488b10e07dfa
keyword: nokwcommands, restricted string variables at top level

- prettier syntax conforming eg. to commands.norepo
- possibly easier to hook from outside

diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -86,10 +86,13 @@
 
 commands.optionalrepo += ' kwdemo'
 
+# hg commands that do not act on keywords
+nokwcommands = ('add addremove bundle copy export grep identify incoming init'
+                'log outgoing push remove rename rollback tip convert')
+
 # hg commands that trigger expansion only when writing to working dir,
 # not when reading filelog, and unexpand when reading from working dir
-restricted = ('diff1', 'record',
-              'qfold', 'qimport', 'qnew', 'qpush', 'qrefresh', 'qrecord')
+restricted = 'diff1 record qfold qimport qnew qpush qrefresh qrecord'
 
 def utcdate(date):
     '''Returns hgdate in cvs-like UTC format.'''
@@ -113,11 +116,11 @@
         'Header': '{root}/{file},v {node|short} {date|utcdate} {author|user}',
     }
 
-    def __init__(self, ui, repo, inc, exc, hgcmd):
+    def __init__(self, ui, repo, inc, exc, restricted):
         self.ui = ui
         self.repo = repo
         self.matcher = util.matcher(repo.root, inc=inc, exc=exc)[1]
-        self.hgcmd = hgcmd
+        self.restricted = restricted
         self.commitnode = None
         self.path = ''
 
@@ -156,7 +159,7 @@
 
     def expand(self, node, data):
         '''Returns data with keywords expanded.'''
-        if util.binary(data) or self.hgcmd in restricted:
+        if self.restricted or util.binary(data):
             return data
         return self.substitute(node, data, self.re_kw.sub)
 
@@ -410,12 +413,8 @@
     if not repo.local():
         return
 
-    nokwcommands = ('add', 'addremove', 'bundle', 'copy', 'export', 'grep',
-                    'identify', 'incoming', 'init', 'log', 'outgoing', 'push',
-                    'remove', 'rename', 'rollback', 'tip',
-                    'convert')
     hgcmd, func, args, opts, cmdopts = dispatch._parse(ui, sys.argv[1:])
-    if hgcmd in nokwcommands:
+    if hgcmd in nokwcommands.split():
         return
 
     if hgcmd == 'diff':
@@ -437,7 +436,8 @@
         return
 
     global _kwtemplater
-    _kwtemplater = kwtemplater(ui, repo, inc, exc, hgcmd)
+    _restricted = hgcmd in restricted.split()
+    _kwtemplater = kwtemplater(ui, repo, inc, exc, _restricted)
 
     class kwrepo(repo.__class__):
         def file(self, f, kwmatch=False):
@@ -449,7 +449,7 @@
 
         def wread(self, filename):
             data = super(kwrepo, self).wread(filename)
-            if hgcmd in restricted and _kwtemplater.matcher(filename):
+            if _restricted and _kwtemplater.matcher(filename):
                 return _kwtemplater.shrink(data)
             return data
 


More information about the Mercurial-devel mailing list