From 679ec38e1e454e9441249ea122c5e39e29b3a9b0 Mon Sep 17 00:00:00 2001 From: "German M. Bravo" Date: Sat, 17 Aug 2013 20:17:34 -0500 Subject: Experimental _get_funct_def() for function calls with no surrounding parentheses --- scss/__init__.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/scss/__init__.py b/scss/__init__.py index 66d1c1d..e58b88c 100644 --- a/scss/__init__.py +++ b/scss/__init__.py @@ -611,7 +611,33 @@ class Scss(object): value = 0 rule.options[option.replace('-', '_')] = value - def _get_funct_def(self, calculator, argument): + # def _get_funct_def(self, calculator, argument, definition=True): + # # !!EXPERIMENTAL!! (for mixins-vars.scss test) + # ID_RE = re.compile(r'[-a-zA-Z_][-a-zA-Z0-9_]*') + # m = ID_RE.match(argument) + # if not m: + # raise SyntaxError("No function name found!" % (argument,)) + + # funct = argument[:m.end()] + # argstr = argument[m.end():].strip() + # funct = calculator.do_glob_math(funct) + # funct = normalize_var(funct.strip()) + + # if argstr: + # if definition: + # if argstr[0] != '(': + # raise SyntaxError("Expected '(', after function name: %r" % (argument,)) + # if argstr[-1] != ')': + # raise SyntaxError("Expected ')', found end of line: %r" % (argument,)) + # argstr = argstr[1:-1] + + # # Has arguments; parse them with the argspec rule + # argspec_node = calculator.parse_expression(argstr, target='goal_argspec') if argstr else None + # # print(argstr, repr(argspec_node)) + # return funct, argspec_node + # return funct, None + + def _get_funct_def(self, calculator, argument, definition=True): funct, lpar, argstr = argument.partition('(') funct = calculator.do_glob_math(funct) funct = normalize_var(funct.strip()) @@ -623,6 +649,7 @@ class Scss(object): raise SyntaxError("Expected ')', found end of line: %r" % (argument,)) argstr = argstr[:-1].strip() argspec_node = calculator.parse_expression(argstr, target='goal_argspec') if argstr else None + # print(argstr, repr(argspec_node)) return funct, argspec_node return funct, None @@ -636,7 +663,7 @@ class Scss(object): raise SyntaxError("%s requires a function name (%s)" % (block.directive, rule.file_and_line)) calculator = Calculator(rule.namespace) - funct, argspec_node = self._get_funct_def(calculator, block.argument) + funct, argspec_node = self._get_funct_def(calculator, block.argument, definition=False) defaults = {} new_params = [] -- cgit v1.2.1