From 3253034b263c55d248a3d1138f02e49cb319514e Mon Sep 17 00:00:00 2001 Message-Id: <3253034b263c55d248a3d1138f02e49cb319514e.1715014488.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sat, 7 Jan 2012 02:07:10 +0000 Subject: [PATCH] extract-profile: Allow `%' characters in internal property names. Organization: Straylight/Edgeware From: Mark Wooding Now we don't have to spam the caller with uninteresting properties. --- extract-profile.in | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/extract-profile.in b/extract-profile.in index 918da8c..03fe455 100755 --- a/extract-profile.in +++ b/extract-profile.in @@ -277,7 +277,9 @@ class Section (object, UD.DictMixin): ## Otherwise take as many constituent characters as we can. else: left = dol + 1 - while left < n and (string[left].isalnum() or string[left] in '-_'): + if left < n and string[left] == '@': + left += 1 + while left < n and (string[left].isalnum() or string[left] in '%-_'): left += 1 prop = string[dol + 1:left] @@ -296,10 +298,13 @@ class Section (object, UD.DictMixin): (' -> '.join(["`%s'" % p for p in path[seen[prop]:]])) ## Look up the raw value. - try: - value = me.inherited[prop] - except KeyError: - raise UserError, "unknown property `%s'" % prop + if prop == '@name': + value = me.name + else: + try: + value = me.inherited[prop] + except KeyError: + raise UserError, "unknown property `%s'" % prop ## Recursively expand, and unwind the PATH and SEEN stuff. seen[prop] = len(path) - 1 @@ -391,7 +396,7 @@ def parse(filename, d): name = name.replace('-', '_') if not (name and (name in SPECIALS or - all(map(lambda ch: ch == '_' or ch.isalnum(), name)))): + all(map(lambda ch: ch in '%_' or ch.isalnum(), name)))): raise UserError, "%s:%d: bad name `%s'" % (filename, n, name) ## Store the assignment. @@ -443,6 +448,7 @@ def main(args): except KeyError: raise UserError, "unknown section `%s'" % sect for k, v in s.inherited.iteritems(): + if '%' in k: continue print '%s=%s' % (k, s.expand(v)) ## Report errors for expected problems. -- [mdw]