diff options
author | German M. Bravo <german.mb@deipi.com> | 2013-10-04 15:23:51 -0500 |
---|---|---|
committer | German M. Bravo <german.mb@deipi.com> | 2013-10-04 15:23:51 -0500 |
commit | 4ab721722ccc1473cbf32c1407d26f84e613bb98 (patch) | |
tree | 48ae126229d709e5a8f80c6637dc32f75d0ddb36 /scss/rule.py | |
parent | f11f1ec17aa7babcf20ce87629fd4f9394fa8994 (diff) | |
download | pyscss-4ab721722ccc1473cbf32c1407d26f84e613bb98.tar.gz |
Added "Unused @import" warning message
Diffstat (limited to 'scss/rule.py')
-rw-r--r-- | scss/rule.py | 29 |
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 |