Commit f59e7c56 authored by Michel Pelletier's avatar Michel Pelletier

Made tab widths 4 spaces, and 80 columned the code

parent f4e5af10
...@@ -115,63 +115,64 @@ ...@@ -115,63 +115,64 @@
from DT_Util import render_blocks, str, Eval, expr_globals, Eval, ParseError, regex, strip from DT_Util import render_blocks, str, Eval, expr_globals, Eval, ParseError, regex, strip
class Let: class Let:
blockContinuations=() blockContinuations=()
name='let' name='let'
def __init__(self, blocks): def __init__(self, blocks):
tname, args, section = blocks[0] tname, args, section = blocks[0]
self.__name__ = args self.__name__ = args
self.section = section.blocks self.section = section.blocks
self.args = args = parse_let_params(args) self.args = args = parse_let_params(args)
for i in range(len(args)): for i in range(len(args)):
name,expr = args[i] name,expr = args[i]
if expr[:1]=='"' and expr[-1:]=='"' and len(expr) > 1: # expr shorthand if expr[:1]=='"' and expr[-1:]=='"' and len(expr) > 1:
expr=expr[1:-1] # expr shorthand
try: args[i] = name, Eval(expr, expr_globals).eval expr=expr[1:-1]
except SyntaxError, v: try: args[i] = name, Eval(expr, expr_globals).eval
m,(huh,l,c,src) = v except SyntaxError, v:
raise ParseError, ( m,(huh,l,c,src) = v
'<strong>Expression (Python) Syntax error</strong>:' raise ParseError, (
'\n<pre>\n%s\n</pre>\n' % v[0], '<strong>Expression (Python) Syntax error</strong>:'
'let') '\n<pre>\n%s\n</pre>\n' % v[0],
def render(self, md): 'let')
d={}; md._push(d) def render(self, md):
try: d={}; md._push(d)
for name,expr in self.args: try:
if type(expr) is type(''): d[name]=md[expr] for name,expr in self.args:
else: d[name]=expr(md) if type(expr) is type(''): d[name]=md[expr]
return render_blocks(self.section, md) else: d[name]=expr(md)
finally: md._pop(1) return render_blocks(self.section, md)
finally: md._pop(1)
__call__ = render
__call__ = render
def parse_let_params(text, def parse_let_params(text,
result=None, result=None,
tag='let', tag='let',
parmre=regex.compile( parmre=regex.compile(
'\([\0- ]*\([^\0- =\"]+\)=\([^\0- =\"]+\)\)'), '\([\0- ]*\([^\0- =\"]+\)=\([^\0- =\"]+\)\)'),
qparmre=regex.compile( qparmre=regex.compile(
'\([\0- ]*\([^\0- =\"]+\)="\([^"]*\)\"\)'), '\([\0- ]*\([^\0- =\"]+\)="\([^"]*\)\"\)'),
**parms): **parms):
result=result or [] result=result or []
if parmre.match(text) >= 0: if parmre.match(text) >= 0:
name=parmre.group(2) name=parmre.group(2)
value=parmre.group(3) value=parmre.group(3)
l=len(parmre.group(1)) l=len(parmre.group(1))
elif qparmre.match(text) >= 0: elif qparmre.match(text) >= 0:
name=qparmre.group(2) name=qparmre.group(2)
value='"%s"' % qparmre.group(3) value='"%s"' % qparmre.group(3)
l=len(qparmre.group(1)) l=len(qparmre.group(1))
else: else:
if not text or not strip(text): return result if not text or not strip(text): return result
raise ParseError, ('invalid parameter: "%s"' % text, tag) raise ParseError, ('invalid parameter: "%s"' % text, tag)
result.append((name,value)) result.append((name,value))
text=strip(text[l:]) text=strip(text[l:])
if text: return apply(parse_let_params,(text,result,tag),parms) if text: return apply(parse_let_params,(text,result,tag),parms)
else: return result else: return result
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment