mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
tabnanny stuff
This commit is contained in:
parent
ce73acf5e6
commit
a16a509dfc
4 changed files with 492 additions and 491 deletions
|
@ -9,42 +9,42 @@ error = 'varsubst.error'
|
|||
|
||||
class Varsubst:
|
||||
def __init__(self, dict):
|
||||
self.dict = dict
|
||||
self.prog = regex.compile('\$[a-zA-Z0-9_]*\$')
|
||||
self.do_useindent = 0
|
||||
self.dict = dict
|
||||
self.prog = regex.compile('\$[a-zA-Z0-9_]*\$')
|
||||
self.do_useindent = 0
|
||||
|
||||
def useindent(self, onoff):
|
||||
self.do_useindent = onoff
|
||||
|
||||
self.do_useindent = onoff
|
||||
|
||||
def subst(self, str):
|
||||
rv = ''
|
||||
while 1:
|
||||
pos = self.prog.search(str)
|
||||
if pos < 0:
|
||||
return rv + str
|
||||
if pos:
|
||||
rv = rv + str[:pos]
|
||||
str = str[pos:]
|
||||
len = self.prog.match(str)
|
||||
if len == 2:
|
||||
# Escaped dollar
|
||||
rv = rv + '$'
|
||||
str = str[2:]
|
||||
continue
|
||||
name = str[1:len-1]
|
||||
str = str[len:]
|
||||
if not self.dict.has_key(name):
|
||||
raise error, 'No such variable: '+name
|
||||
value = self.dict[name]
|
||||
if self.do_useindent and '\n' in value:
|
||||
value = self._modindent(value, rv)
|
||||
rv = rv + value
|
||||
rv = ''
|
||||
while 1:
|
||||
pos = self.prog.search(str)
|
||||
if pos < 0:
|
||||
return rv + str
|
||||
if pos:
|
||||
rv = rv + str[:pos]
|
||||
str = str[pos:]
|
||||
len = self.prog.match(str)
|
||||
if len == 2:
|
||||
# Escaped dollar
|
||||
rv = rv + '$'
|
||||
str = str[2:]
|
||||
continue
|
||||
name = str[1:len-1]
|
||||
str = str[len:]
|
||||
if not self.dict.has_key(name):
|
||||
raise error, 'No such variable: '+name
|
||||
value = self.dict[name]
|
||||
if self.do_useindent and '\n' in value:
|
||||
value = self._modindent(value, rv)
|
||||
rv = rv + value
|
||||
|
||||
def _modindent(self, value, old):
|
||||
lastnl = string.rfind(old, '\n', 0) + 1
|
||||
lastnl = len(old) - lastnl
|
||||
sub = '\n' + (' '*lastnl)
|
||||
return regsub.gsub('\n', sub, value)
|
||||
lastnl = string.rfind(old, '\n', 0) + 1
|
||||
lastnl = len(old) - lastnl
|
||||
sub = '\n' + (' '*lastnl)
|
||||
return regsub.gsub('\n', sub, value)
|
||||
|
||||
def _test():
|
||||
import sys
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue