Thread: [Epydoc-commits] SF.net SVN: epydoc: [1644] trunk/epydoc/src/epydoc/docwriter/html.py (Page 3)
Brought to you by:
edloper
From: <ed...@us...> - 2007-09-25 18:42:41
|
Revision: 1644 http://epydoc.svn.sourceforge.net/epydoc/?rev=1644&view=rev Author: edloper Date: 2007-09-25 11:42:40 -0700 (Tue, 25 Sep 2007) Log Message: ----------- - When drawing class tree & uml graphs for classes, check if there are any private subclasses. If so, generate two separate graphs, one including private subclasses, and the other hiding them; and display them appropriately. - Removed unused 'css' argument to render_graph() Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-25 18:33:58 UTC (rev 1643) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-25 18:42:40 UTC (rev 1644) @@ -840,15 +840,10 @@ (doc.subclasses not in (UNKNOWN,None) and len(doc.subclasses)>0)): # Display bases graphically, if requested. if 'umlclasstree' in self._graph_types: - linker = _HTMLDocstringLinker(self, doc) - graph = uml_class_tree_graph(doc, linker, doc) - out('<center>\n%s</center>\n' % self.render_graph(graph)) + self.write_class_tree_graph(out, doc, uml_class_tree_graph) + elif 'classtree' in self._graph_types: + self.write_class_tree_graph(out, doc, class_tree_graph) - elif 'classtree' in self._graph_types: - linker = _HTMLDocstringLinker(self, doc) - graph = class_tree_graph([doc], linker, doc) - out('<center>\n%s</center>\n' % self.render_graph(graph)) - # Otherwise, use ascii-art. else: # Write the base class tree. @@ -914,6 +909,32 @@ self.write_navbar(out, doc) self.write_footer(out) + def write_class_tree_graph(self, out, doc, graphmaker): + """ + Write HTML code for a class tree graph of C{doc} (a classdoc), + using C{graphmaker} to draw the actual graph. C{graphmaker} + should be L{class_tree_graph()}, or L{uml_class_tree_graph()}, + or any other function with a compatible signature. + + If the given class has any private sublcasses (including + recursive subclasses), then two graph images will be generated + -- one to display when private values are shown, and the other + to display when private values are hidden. + """ + linker = _HTMLDocstringLinker(self, doc) + private_subcls = self._private_subclasses(doc) + if private_subcls: + out('<center>\n' + ' <div class="private">%s</div>\n' + ' <div class="public" style="display:none">%s</div>\n' + '</center>\n' % + (self.render_graph(graphmaker(doc, linker, doc)), + self.render_graph(graphmaker(doc, linker, doc, + exclude=private_subcls)))) + else: + out('<center>\n%s\n</center>\n' % + self.render_graph(graphmaker(doc, linker, doc))) + #//////////////////////////////////////////////////////////// #{ 2.3. Trees pages #//////////////////////////////////////////////////////////// @@ -1450,6 +1471,9 @@ if (elts[i].className == "private") { elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); } + else if (elts[i].className == "public") { + elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none"); + } } // Update all table rows containing private objects. Note, we // use "" instead of "block" becaue IE & firefox disagree on what @@ -1592,8 +1616,7 @@ #{ 2.10. Graphs #//////////////////////////////////////////////////////////// - # [xx] use DotGraph.to_html?? - def render_graph(self, graph, css='graph-without-title'): + def render_graph(self, graph): if graph is None: return '' graph.caption = graph.title = None image_url = '%s.gif' % graph.uid @@ -1626,7 +1649,7 @@ else: uid = callgraph.uid - graph_html = self.render_graph(callgraph, css='graph-with-title') + graph_html = self.render_graph(callgraph) if graph_html == '': rv = "" else: @@ -3375,6 +3398,20 @@ return True return False + def _private_subclasses(self, class_doc): + """Return a list of all subclasses of the given class that are + private, as determined by L{_val_is_private}. Recursive + subclasses are included in this list.""" + queue = [class_doc] + private = set() + for cls in queue: + if (isinstance(cls, ClassDoc) and + cls.subclasses not in (None, UNKNOWN)): + queue.extend(cls.subclasses) + private.update([c for c in cls.subclasses if + not self._val_is_public(c)]) + return private + class _HTMLDocstringLinker(epydoc.markup.DocstringLinker): def __init__(self, htmlwriter, container): self.htmlwriter = htmlwriter This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-26 18:42:42
|
Revision: 1654 http://epydoc.svn.sourceforge.net/epydoc/?rev=1654&view=rev Author: edloper Date: 2007-09-26 11:42:41 -0700 (Wed, 26 Sep 2007) Log Message: ----------- - added target="mainFrame" to epydoc link in page footer. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-26 18:42:09 UTC (rev 1653) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-26 18:42:41 UTC (rev 1654) @@ -1769,7 +1769,8 @@ >>> #endif </td> <td align="right" class="footer"> - <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a> + <a target="mainFrame" href="http://epydoc.sourceforge.net" + >http://epydoc.sourceforge.net</a> </td> </tr> </table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-09-27 10:17:11
|
Revision: 1659 http://epydoc.svn.sourceforge.net/epydoc/?rev=1659&view=rev Author: dvarrazzo Date: 2007-09-27 03:17:07 -0700 (Thu, 27 Sep 2007) Log Message: ----------- - Fixed missing close tag. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-26 19:25:35 UTC (rev 1658) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-27 10:17:07 UTC (rev 1659) @@ -2326,7 +2326,7 @@ </td><td align="right" valign="top" >$self.pysrc_link(func_doc)$ $self.callgraph_link(callgraph)$</td> - </table> + </tr></table> $self.render_callgraph(callgraph)$ $descr$ <dl class="fields"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-01 19:47:10
|
Revision: 1709 http://epydoc.svn.sourceforge.net/epydoc/?rev=1709&view=rev Author: edloper Date: 2008-02-01 11:47:06 -0800 (Fri, 01 Feb 2008) Log Message: ----------- - Fixed docstring typo Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-01 19:32:30 UTC (rev 1708) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-01 19:47:06 UTC (rev 1709) @@ -3423,7 +3423,7 @@ def _private_subclasses(self, class_doc): """Return a list of all subclasses of the given class that are - private, as determined by L{_val_is_private}. Recursive + private, as determined by L{_val_is_public}. Recursive subclasses are included in this list.""" queue = [class_doc] private = set() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-16 02:03:15
|
Revision: 1724 http://epydoc.svn.sourceforge.net/epydoc/?rev=1724&view=rev Author: edloper Date: 2008-02-15 18:02:58 -0800 (Fri, 15 Feb 2008) Log Message: ----------- - Always write the subclass list, even if the class tree is drawn. I plan to truncate large class diagrams, so the list will be useful in those cases. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-15 01:16:54 UTC (rev 1723) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-16 02:02:58 UTC (rev 1724) @@ -869,19 +869,19 @@ out('<pre class="base-tree">\n%s</pre>\n\n' % self.base_tree(doc)) - # Write the known subclasses - if (doc.subclasses not in (UNKNOWN, None) and - len(doc.subclasses) > 0): - out('<dl><dt>Known Subclasses:</dt>\n<dd>\n ') - out(' <ul class="subclass-list">\n') - for i, subclass in enumerate(doc.subclasses): - href = self.href(subclass, context=doc) - if self._val_is_public(subclass): css = '' - else: css = ' class="private"' - if i > 0: href = ', '+href - out('<li%s>%s</li>' % (css, href)) - out(' </ul>\n') - out('</dd></dl>\n\n') + # Write the known subclasses + if (doc.subclasses not in (UNKNOWN, None) and + len(doc.subclasses) > 0): + out('<dl><dt>Known Subclasses:</dt>\n<dd>\n ') + out(' <ul class="subclass-list">\n') + for i, subclass in enumerate(doc.subclasses): + href = self.href(subclass, context=doc) + if self._val_is_public(subclass): css = '' + else: css = ' class="private"' + if i > 0: href = ', '+href + out('<li%s>%s</li>' % (css, href)) + out(' </ul>\n') + out('</dd></dl>\n\n') out('<hr />\n') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-23 20:11:04
|
Revision: 1764 http://epydoc.svn.sourceforge.net/epydoc/?rev=1764&view=rev Author: edloper Date: 2008-02-23 12:11:01 -0800 (Sat, 23 Feb 2008) Log Message: ----------- - Removed stale (unreachable) code Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-23 20:10:34 UTC (rev 1763) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-23 20:11:01 UTC (rev 1764) @@ -3497,7 +3497,6 @@ elif isinstance(identifier, APIDoc): return self.htmlwriter.url(identifier) - doc = identifier else: raise TypeError('Expected string or APIDoc') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-24 06:41:01
|
Revision: 1777 http://epydoc.svn.sourceforge.net/epydoc/?rev=1777&view=rev Author: edloper Date: 2008-02-23 22:40:56 -0800 (Sat, 23 Feb 2008) Log Message: ----------- - Simplified code for drawing the class hierarchy; and 'object' is now omitted from the class hierarchy. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-24 06:40:17 UTC (rev 1776) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-24 06:40:56 UTC (rev 1777) @@ -1000,21 +1000,22 @@ # Build a set containing all classes that we should list. # This includes everything in class_list, plus any of those # class' bases, but not undocumented subclasses. - class_set = self.class_set.copy() + class_set = set() for doc in self.class_list: - if doc.bases != UNKNOWN: - for base in doc.bases: - if base not in class_set: - if isinstance(base, ClassDoc): - class_set.update(base.mro()) - else: - # [XX] need to deal with this -- how? - pass - #class_set.add(base) - + class_set.update([base for base in doc.mro() + if isinstance(base, ClassDoc) and + base.canonical_name != DottedName('object')]) + + out('<ul class="nomargin-top">\n') for doc in sorted(class_set, key=lambda c:c.canonical_name[-1]): - if doc.bases != UNKNOWN and len(doc.bases)==0: + # If doc is a subclass of anything that's documented, then + # we don't need to list it separately; it will be listed + # under that base. + for base in doc.mro()[1:]: + if base in class_set: break + else: + # It's not a subclass of anything documented: self.write_class_tree_item(out, doc, class_set) out('</ul>\n') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |