summaryrefslogtreecommitdiff
path: root/pyreverse
diff options
context:
space:
mode:
authorEmile Anclin <emile.anclin@logilab.fr>2008-08-18 17:21:05 +0200
committerEmile Anclin <emile.anclin@logilab.fr>2008-08-18 17:21:05 +0200
commit298eca7a8cc8b8d9457e51241e8e687dcc36a19f (patch)
treef031065fcd2018580040987a221ead663a114339 /pyreverse
parentc6e544de3a4033c77652f7ee78ad25c953d5510d (diff)
downloadpylint-298eca7a8cc8b8d9457e51241e8e687dcc36a19f.tar.gz
filter doubled class names
Diffstat (limited to 'pyreverse')
-rw-r--r--pyreverse/diagrams.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/pyreverse/diagrams.py b/pyreverse/diagrams.py
index 422b300..1f7e653 100644
--- a/pyreverse/diagrams.py
+++ b/pyreverse/diagrams.py
@@ -79,12 +79,9 @@ class ClassDiagram(Figure, FilterMixIn):
for node_name, ass_nodes in node.instance_attrs_type.items():
if not self.show_attr(node_name):
continue
- for ass_node in ass_nodes:
- if isinstance(ass_node, astng.Instance):
- ass_node = ass_node._proxied
- if isinstance(ass_node, astng.Class) \
- and hasattr(ass_node, "name") and not self.has_node(ass_node):
- node_name = "%s : %s" % (node_name, ass_node.name)
+ names = self.class_names(ass_nodes)
+ if names:
+ node_name = "%s : %s" % (node_name, ", ".join(names))
attrs.append(node_name)
return attrs
@@ -101,6 +98,18 @@ class ClassDiagram(Figure, FilterMixIn):
self._nodes[node] = ent
self.objects.append(ent)
+ def class_names(self, nodes):
+ """return class names if needed in diagram"""
+ names = []
+ for ass_node in nodes:
+ if isinstance(ass_node, astng.Instance):
+ ass_node = ass_node._proxied
+ if isinstance(ass_node, astng.Class) \
+ and hasattr(ass_node, "name") and not self.has_node(ass_node):
+ if ass_node.name not in names:
+ names.append(ass_node.name)
+ return names
+
def nodes(self):
"""return the list of underlying nodes
"""