mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
Merge da10fd408b into f9704f1d84
This commit is contained in:
commit
928a842778
1 changed files with 23 additions and 18 deletions
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import os
|
||||
import parsesetup
|
||||
import re
|
||||
|
||||
def checkextensions(unknown, extensions):
|
||||
files = []
|
||||
|
|
@ -70,21 +71,25 @@ def treatword(w):
|
|||
return w
|
||||
|
||||
def expandvars(str, vars):
|
||||
i = 0
|
||||
while i < len(str):
|
||||
i = k = str.find('$', i)
|
||||
if i < 0:
|
||||
break
|
||||
i = i+1
|
||||
var = str[i:i+1]
|
||||
i = i+1
|
||||
if var == '(':
|
||||
j = str.find(')', i)
|
||||
if j < 0:
|
||||
break
|
||||
var = str[i:j]
|
||||
i = j+1
|
||||
if var in vars:
|
||||
str = str[:k] + vars[var] + str[i:]
|
||||
i = k
|
||||
return str
|
||||
def repl(m):
|
||||
name = m[1]
|
||||
if name[0] == '(':
|
||||
if name[-1] != ')':
|
||||
return m[0]
|
||||
name = name[1:-1]
|
||||
|
||||
if name in resolved:
|
||||
result = resolved[name]
|
||||
if result is not None:
|
||||
return result
|
||||
elif name in vars:
|
||||
resolved[name] = None
|
||||
result = resolved[name] = expandvars(vars[name])
|
||||
return result
|
||||
return m[0]
|
||||
|
||||
def expandvars(str):
|
||||
return re.sub(r'(?m)\$(\([^)]*\)?|.)', repl, str)
|
||||
|
||||
resolved = {}
|
||||
return expandvars(str)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue