diff options
author | German M. Bravo <german.mb@deipi.com> | 2013-08-17 20:17:34 -0500 |
---|---|---|
committer | German M. Bravo <german.mb@deipi.com> | 2013-08-17 20:17:34 -0500 |
commit | 679ec38e1e454e9441249ea122c5e39e29b3a9b0 (patch) | |
tree | 6513d348ec10cfb220c6a5283fc7f5c3e38a07b3 | |
parent | 67bc8eadab35c9a45c4e634c6eb54164126f0883 (diff) | |
download | pyscss-679ec38e1e454e9441249ea122c5e39e29b3a9b0.tar.gz |
Experimental _get_funct_def() for function calls with no surrounding parentheses
-rw-r--r-- | scss/__init__.py | 31 |
1 files 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 = [] |