| Server IP : 104.21.37.246 / Your IP : 172.71.28.145 [ Web Server : Apache System : Linux cpanel01wh.bkk1.cloud.z.com 2.6.32-954.3.5.lve1.4.59.el6.x86_64 #1 SMP Thu Dec 6 05:11:00 EST 2018 x86_64 User : cp648411 ( 1354) PHP Version : 7.2.34 Disable Function : NONE Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /usr/lib64/python2.6/site-packages/modulator/ |
Upload File : |
#
# Variable substitution. Variables are $delimited$
#
import re
error = 'varsubst.error'
class Varsubst:
def __init__(self, dict):
self.dict = dict
self.prog = re.compile('\$([a-zA-Z0-9_]*)\$')
self.do_useindent = 0
def useindent(self, onoff):
self.do_useindent = onoff
def subst(self, s):
rv = ''
while 1:
m = self.prog.search(s)
if not m:
return rv + s
rv = rv + s[:m.start()]
s = s[m.end():]
if m.end() - m.start() == 2:
# Escaped dollar
rv = rv + '$'
s = s[2:]
continue
name = m.group(1)
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 = old.rfind('\n', 0) + 1
lastnl = len(old) - lastnl
sub = '\n' + (' '*lastnl)
return re.sub('\n', sub, value)
def _test():
import sys
import os
sys.stderr.write('-- Copying stdin to stdout with environment map --\n')
c = Varsubst(os.environ)
c.useindent(1)
d = sys.stdin.read()
sys.stdout.write(c.subst(d))
sys.exit(1)
if __name__ == '__main__':
_test()