summaryrefslogtreecommitdiff
path: root/scss/rule.py
diff options
context:
space:
mode:
authorGerman M. Bravo <german.mb@deipi.com>2013-10-04 15:23:51 -0500
committerGerman M. Bravo <german.mb@deipi.com>2013-10-04 15:23:51 -0500
commit4ab721722ccc1473cbf32c1407d26f84e613bb98 (patch)
tree48ae126229d709e5a8f80c6637dc32f75d0ddb36 /scss/rule.py
parentf11f1ec17aa7babcf20ce87629fd4f9394fa8994 (diff)
downloadpyscss-4ab721722ccc1473cbf32c1407d26f84e613bb98.tar.gz
Added "Unused @import" warning message
Diffstat (limited to 'scss/rule.py')
-rw-r--r--scss/rule.py29
1 files changed, 21 insertions, 8 deletions
diff --git a/scss/rule.py b/scss/rule.py
index 6d3b856..dc1dd08 100644
--- a/scss/rule.py
+++ b/scss/rule.py
@@ -104,8 +104,7 @@ class MixinScope(Scope):
class ImportScope(Scope):
- def __repr__(self):
- return "<%s(%s) at 0x%x>" % (type(self).__name__, ', '.join('[%s]' % ', '.join(repr(k) for k in sorted(map.keys())) for map in self.maps), id(self))
+ pass
class Namespace(object):
@@ -170,14 +169,27 @@ class Namespace(object):
raise TypeError("Expected a Sass type, while setting %s got %r" % (name, value,))
self._variables.set(name, value, force_local=local_only)
- def has_import(self, name, path=None):
- import_key = (name, path)
+ def has_import(self, import_key):
return import_key in self._imports
- def add_import(self, name, path=None):
+ def add_import(self, import_key, parent_import_key, file_and_line):
self._assert_mutable()
- import_key = (name, path)
- self._imports[import_key] = True
+ if import_key:
+ imports = [0, parent_import_key, file_and_line]
+ self._imports[import_key] = imports
+
+ def use_import(self, import_key):
+ self._assert_mutable()
+ if import_key and import_key in self._imports:
+ imports = self._imports[import_key]
+ imports[0] += 1
+ self.use_import(imports[1])
+
+ def warn_unused_imports(self):
+ for import_key in self._imports.keys():
+ imports = self._imports[import_key]
+ if not imports[0]:
+ log.warn("Unused @import: '%s' (%s)", import_key[0], imports[2])
def _get_callable(self, chainmap, name, arity):
name = normalize_var(name)
@@ -216,7 +228,7 @@ class SassRule(object):
metadata, like `@extend` rules and `@media` nesting.
"""
- def __init__(self, source_file, unparsed_contents=None,
+ def __init__(self, source_file, import_key=None, unparsed_contents=None,
options=None, properties=None,
namespace=None,
lineno=0, extends_selectors=frozenset(),
@@ -224,6 +236,7 @@ class SassRule(object):
nested=-1):
self.source_file = source_file
+ self.import_key = import_key
self.lineno = lineno
self.unparsed_contents = unparsed_contents