summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerman M. Bravo <german.mb@deipi.com>2013-08-17 20:17:34 -0500
committerGerman M. Bravo <german.mb@deipi.com>2013-08-17 20:17:34 -0500
commit679ec38e1e454e9441249ea122c5e39e29b3a9b0 (patch)
tree6513d348ec10cfb220c6a5283fc7f5c3e38a07b3
parent67bc8eadab35c9a45c4e634c6eb54164126f0883 (diff)
downloadpyscss-679ec38e1e454e9441249ea122c5e39e29b3a9b0.tar.gz
Experimental _get_funct_def() for function calls with no surrounding parentheses
-rw-r--r--scss/__init__.py31
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 = []