summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerman M. Bravo <german.mb@deipi.com>2013-08-18 10:17:14 -0500
committerGerman M. Bravo <german.mb@deipi.com>2013-08-18 10:17:14 -0500
commitae4988f1d3f3a8cdc2d3d1fbd1c8f6013f5c07da (patch)
treedef1a9bc8094a4249669de0e9fd397149948c491
parent679ec38e1e454e9441249ea122c5e39e29b3a9b0 (diff)
downloadpyscss-ae4988f1d3f3a8cdc2d3d1fbd1c8f6013f5c07da.tar.gz
Function declarations need parentheses at the start and at the end in Ruby as well
-rw-r--r--scss/__init__.py34
-rw-r--r--scss/tests/files/regressions/mixins-vars.css3
-rw-r--r--scss/tests/files/regressions/mixins-vars.scss8
3 files changed, 4 insertions, 41 deletions
diff --git a/scss/__init__.py b/scss/__init__.py
index e58b88c..540fcfb 100644
--- a/scss/__init__.py
+++ b/scss/__init__.py
@@ -611,33 +611,7 @@ class Scss(object):
value = 0
rule.options[option.replace('-', '_')] = value
- # 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):
+ def _get_funct_def(self, rule, calculator, argument):
funct, lpar, argstr = argument.partition('(')
funct = calculator.do_glob_math(funct)
funct = normalize_var(funct.strip())
@@ -646,7 +620,7 @@ class Scss(object):
if lpar:
# Has arguments; parse them with the argspec rule
if not argstr.endswith(')'):
- raise SyntaxError("Expected ')', found end of line: %r" % (argument,))
+ raise SyntaxError("Expected ')', found end of line for %s (%s)" % (funct, rule.file_and_line))
argstr = argstr[:-1].strip()
argspec_node = calculator.parse_expression(argstr, target='goal_argspec') if argstr else None
# print(argstr, repr(argspec_node))
@@ -663,7 +637,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, definition=False)
+ funct, argspec_node = self._get_funct_def(rule, calculator, block.argument)
defaults = {}
new_params = []
@@ -760,7 +734,7 @@ class Scss(object):
Implements @include, for @mixins
"""
calculator = Calculator(rule.namespace.derive())
- funct, argspec_node = self._get_funct_def(calculator, block.argument)
+ funct, argspec_node = self._get_funct_def(rule, calculator, block.argument)
if argspec_node:
argspec = list(argspec_node.iter_call_argspec())
diff --git a/scss/tests/files/regressions/mixins-vars.css b/scss/tests/files/regressions/mixins-vars.css
deleted file mode 100644
index 11802f7..0000000
--- a/scss/tests/files/regressions/mixins-vars.css
+++ /dev/null
@@ -1,3 +0,0 @@
-div {
- box-shadow: black 0 0.08em 0.1em 1px inset, white 1px 1px 0 0;
-}
diff --git a/scss/tests/files/regressions/mixins-vars.scss b/scss/tests/files/regressions/mixins-vars.scss
deleted file mode 100644
index 135cdab..0000000
--- a/scss/tests/files/regressions/mixins-vars.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-@option compress:no;
-
-@mixin box-shadow($first, $second) {
- box-shadow: $first, second
-}
-div {
- @include box-shadow(darken(red, 9) 0 0.08em 0.1em 1px inset), rgba(white, lightness(green) / 3) 1px 1px 0 0;
-}