diff options
author | Emile Anclin <emile.anclin@logilab.fr> | 2008-08-18 14:29:33 +0200 |
---|---|---|
committer | Emile Anclin <emile.anclin@logilab.fr> | 2008-08-18 14:29:33 +0200 |
commit | b301188a39e04785c119fdd171d9090316a1eace (patch) | |
tree | 4437a309d7bce6a53fb802fbebc06c3c3e9f5610 /pyreverse | |
parent | c6b5e45af507e0b02ace2a66921f3d38e7183526 (diff) | |
download | pylint-b301188a39e04785c119fdd171d9090316a1eace.tar.gz |
change FilterMixin inheritance
Diffstat (limited to 'pyreverse')
-rw-r--r-- | pyreverse/diadefslib.py | 25 | ||||
-rw-r--r-- | pyreverse/diagrams.py | 27 | ||||
-rw-r--r-- | pyreverse/utils.py | 26 |
3 files changed, 39 insertions, 39 deletions
diff --git a/pyreverse/diadefslib.py b/pyreverse/diadefslib.py index 96830ea..cc7a394 100644 --- a/pyreverse/diadefslib.py +++ b/pyreverse/diadefslib.py @@ -151,11 +151,12 @@ class OptionHandler: title = '%s.%s' % (node.root().name , title) return title - def not_builtin(self, node): - "filter out builtins except if show_builtin option" + def show_builtin(self, node): + "true if builtins and show_builtin option" # FIXME : does it work as it should ? - return (not self.config.show_builtin) and \ + return (self.config.show_builtin) or not \ (node.name in ('object', 'type') or node.root().name == '__builtin__') + class DefaultDiadefGenerator(LocalsVisitor, OptionHandler): """generate minimum diagram definition for the project : @@ -173,11 +174,12 @@ class DefaultDiadefGenerator(LocalsVisitor, OptionHandler): create a diagram definition for packages """ + mode = self.config.mode if len(node.modules) > 1: - self.pkgdiagram = PackageDiagram('packages %s' % node.name) + self.pkgdiagram = PackageDiagram('packages %s' % node.name, mode) else: self.pkgdiagram = None - self.classdiagram = ClassDiagram('classes %s' % node.name) + self.classdiagram = ClassDiagram('classes %s' % node.name, mode) def leave_project(self, node): """leave the astng.Project node @@ -202,11 +204,12 @@ class DefaultDiadefGenerator(LocalsVisitor, OptionHandler): add this class to the class diagram definition """ - if self.not_builtin(node): + if not self.show_builtin(node): return + print "node", node self.linker.visit(node) title = self.get_title(node) - self.classdiagram.add_object(title, node, self.show_attr) + self.classdiagram.add_object(title, node) class ClassDiadefGenerator(OptionHandler): @@ -226,7 +229,7 @@ class ClassDiadefGenerator(OptionHandler): all classes related to the one fecthed by=1) """ - diagram = ClassDiagram(klass) + diagram = ClassDiagram(klass, self.config.mode) if len(project.modules) > 1: module, klass = klass.rsplit('.', 1) module = project.get_module(module) @@ -247,7 +250,7 @@ class ClassDiadefGenerator(OptionHandler): # TODO : add all ancestors whatever the include_level ? include_level -= 1 for ancestor in klass_node.ancestors(): - if self.not_builtin(ancestor): + if not self.show_builtin(ancestor): continue self.extract_classes(diagram, ancestor, include_level) @@ -260,7 +263,7 @@ class ClassDiadefGenerator(OptionHandler): if isinstance(ass_node, astng.Instance): ass_node = ass_node._proxied if not isinstance(ass_node, astng.Class) \ - or self.not_builtin(ass_node): + or not self.show_builtin(ass_node): continue self.extract_classes(diagram, ass_node, include_level) @@ -269,7 +272,7 @@ class ClassDiadefGenerator(OptionHandler): """ title = self.get_title(klass_node) self.linker.visit(klass_node) - diagram.add_object(title, klass_node, self.show_attr) + diagram.add_object(title, klass_node) # diagram handler ############################################################# diff --git a/pyreverse/diagrams.py b/pyreverse/diagrams.py index 25b8959..dc84155 100644 --- a/pyreverse/diagrams.py +++ b/pyreverse/diagrams.py @@ -17,7 +17,7 @@ """ from logilab import astng -from pyreverse.utils import is_interface +from pyreverse.utils import is_interface, FilterMixIn def set_counter(value): Figure._UID_COUNT = value @@ -47,11 +47,12 @@ class DiagramEntity(Figure): self.title = title self.node = node -class ClassDiagram(Figure): +class ClassDiagram(Figure, FilterMixIn): """a class diagram objet """ TYPE = 'class' - def __init__(self, title='No name'): + def __init__(self, title, mode): + FilterMixIn.__init__(self, mode) Figure.__init__(self) self.title = title self.objects = [] @@ -72,22 +73,23 @@ class ClassDiagram(Figure): return rel raise KeyError(relation_type) - def get_attrs(self, node, show_attr): + def get_attrs(self, node): return [name for (name,v) in node.instance_attrs_type.items() - if show_attr(name)] + if self.show_attr(name)] - def get_methods(self, node, show_attr): + def get_methods(self, node): return [m for m in node.values() - if isinstance(m, astng.Function) and show_attr(m.name)] - - def add_object(self, title, node, show_attr = None): + if isinstance(m, astng.Function) and self.show_attr(m.name)] + + def get_attributs(self, obj): + obj.attrs = self.get_attrs(obj.node) + obj.methods = self.get_methods(obj.node) + + def add_object(self, title, node): """create a diagram object """ assert not self._nodes.has_key(node) ent = DiagramEntity(title, node) - if isinstance(node, astng.Class)and show_attr: - ent.methods = self.get_methods(node, show_attr) - ent.attrs = self.get_attrs(node, show_attr) self._nodes[node] = ent self.objects.append(ent) @@ -123,6 +125,7 @@ class ClassDiagram(Figure): """ for obj in self.classes(): node = obj.node + self.get_attributs(obj) # shape if is_interface(node): obj.shape = 'interface' diff --git a/pyreverse/utils.py b/pyreverse/utils.py index 1c54ac6..932dd42 100644 --- a/pyreverse/utils.py +++ b/pyreverse/utils.py @@ -90,26 +90,20 @@ VIS_MOD = {'special':_SPECIAL, 'protected': _PROTECTED, 'private': _PRIVATE, 'pu class FilterMixIn: """filter nodes according to a mode and nodes' visibility """ + def __init__(self, mode): + "init filter modes" + __mode = 0 + for nummod in mode.split('+'): + try: + __mode += MODES[nummod] + except KeyError, ex: + print >> sys.stderr, 'Unknown filter mode %s' % ex + self.__mode = __mode - def get_mode(self): - """return the integer value of a mode string - """ - try: - return self.__mode - except AttributeError: - mode = 0 - for nummod in self.config.mode.split('+'): - try: - mode += MODES[nummod] - except KeyError, ex: - print >> sys.stderr, 'Unknown filter mode %s' % ex - self.__mode = mode - return mode def show_attr(self, node): """return true if the node should be treated """ - mode = self.get_mode() visibility = get_visibility(getattr(node, 'name', node)) - return not (mode & VIS_MOD[visibility] ) + return not (__mode & VIS_MOD[visibility] ) |