Reparse call nodes to refresh variables

This commit is contained in:
robotis
2012-06-04 09:41:44 +00:00
parent e671572683
commit 1ada3c163a
4 changed files with 37 additions and 27 deletions

View File

@@ -30,34 +30,32 @@ class Call(Node):
args:
scope (Scope): Current scope
"""
if not self.parsed:
name = ''.join(self.tokens[0])
parsed = self.process(self.tokens[1:], scope)
name = ''.join(self.tokens[0])
parsed = self.process(self.tokens[1:], scope)
if name == '%(':
name = 'sformat'
elif name in ('~', 'e'):
name = 'escape'
color = Color.Color()
args = [t for t in parsed
if type(t) is not str or t not in '(),']
if hasattr(self, name):
if name == '%(':
name = 'sformat'
elif name in ('~', 'e'):
name = 'escape'
color = Color.Color()
args = [t for t in parsed
if type(t) is not str or t not in '(),']
if hasattr(self, name):
try:
return getattr(self, name)(*args)
except ValueError:
pass
if hasattr(color, name):
try:
result = getattr(color, name)(*args)
try:
return getattr(self, name)(*args)
except ValueError:
pass
if hasattr(color, name):
try:
result = getattr(color, name)(*args)
try:
return result + ' '
except TypeError:
return result
except ValueError:
pass
self.parsed = name + ''.join([p for p in parsed])
return self.parsed
return result + ' '
except TypeError:
return result
except ValueError:
pass
return name + ''.join([p for p in parsed])
def escape(self, string, *args):
"""Less Escape.

View File

@@ -26,3 +26,7 @@
#colors {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#333333', GradientType=1);
}
a {
background-image: linear-gradient(top,#ffffff,#333333);
background-image: linear-gradient(top,#a6a6a6,#000000);
}

View File

@@ -3,3 +3,4 @@
#format{format:"rgb(32, 128, 64)";format-string:"hello world";format-multiple:"hello earth 2";format-url-encode:'red is %23ff0000';}
#more{width:1px;height:1px;top:50%;}
#colors{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#333333', GradientType=1);}
a{background-image:linear-gradient(top,#ffffff,#333333);background-image:linear-gradient(top,#a6a6a6,#000000);}

View File

@@ -30,4 +30,11 @@
}
#colors {
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",#fff,#333));
}
}
#gradient(@startColor, @endColor) {
background-image: linear-gradient(top, @startColor, @endColor);
}
a {
#gradient(#fff, #333);
#gradient(#a6a6a6, #000);
}