11b37a2a7SPierre Jolivet#!/usr/bin/env python3 25808f684SSatish Balay 35808f684SSatish Balay# -------------------------------------------------------------------- 45808f684SSatish Balay 55808f684SSatish Balay 65808f684SSatish Balay# -------------------------------------------------------------------- 75808f684SSatish Balay 85808f684SSatish Balaytry: 95808f684SSatish Balay from docutils.nodes import NodeVisitor 10*6f336411SStefano Zampini 115808f684SSatish Balay NodeVisitor.unknown_visit = lambda self, node: None 125808f684SSatish Balay NodeVisitor.unknown_departure = lambda self, node: None 135808f684SSatish Balayexcept ImportError: 145808f684SSatish Balay pass 155808f684SSatish Balay 165808f684SSatish Balaytry: # epydoc 3.0.1 + docutils 0.6 175808f684SSatish Balay from docutils.nodes import Text 185808f684SSatish Balay from UserString import UserString 19*6f336411SStefano Zampini 205808f684SSatish Balay if not isinstance(Text, UserString): 21*6f336411SStefano Zampini 225808f684SSatish Balay def Text_get_data(s): 235808f684SSatish Balay try: 245808f684SSatish Balay return s._data 255808f684SSatish Balay except AttributeError: 265808f684SSatish Balay return s.astext() 27*6f336411SStefano Zampini 285808f684SSatish Balay def Text_set_data(s, d): 295808f684SSatish Balay s.astext = lambda: d 305808f684SSatish Balay s._data = d 31*6f336411SStefano Zampini 325808f684SSatish Balay Text.data = property(Text_get_data, Text_set_data) 335808f684SSatish Balayexcept ImportError: 345808f684SSatish Balay pass 355808f684SSatish Balay 365808f684SSatish Balay# -------------------------------------------------------------------- 375808f684SSatish Balay 385808f684SSatish Balayfrom epydoc.docwriter import dotgraph 39*6f336411SStefano Zampinifrom epydoc import docstringparser as dsp 405808f684SSatish Balay 415808f684SSatish Balayimport re 42*6f336411SStefano Zampiniimport sys 43*6f336411SStefano Zampiniimport os 44*6f336411SStefano Zampiniimport epydoc.cli 45*6f336411SStefano Zampini 46*6f336411SStefano Zampinidotgraph._DOT_VERSION_RE = re.compile(r'dot (?:- Graphviz )version ([\d\.]+)') 475808f684SSatish Balay 485808f684SSatish Balaytry: 495808f684SSatish Balay dotgraph.DotGraph.DEFAULT_HTML_IMAGE_FORMAT = 'png' 505808f684SSatish Balay 515808f684SSatish Balayexcept AttributeError: 525808f684SSatish Balay DotGraph_to_html = dotgraph.DotGraph.to_html 535808f684SSatish Balay DotGraph_run_dot = dotgraph.DotGraph._run_dot 545808f684SSatish Balay 555808f684SSatish Balay def to_html(self, image_file, image_url, center=True): 565808f684SSatish Balay if image_file[-4:] == '.gif': 575808f684SSatish Balay image_file = image_file[:-4] + '.png' 585808f684SSatish Balay if image_url[-4:] == '.gif': 595808f684SSatish Balay image_url = image_url[:-4] + '.png' 605808f684SSatish Balay return DotGraph_to_html(self, image_file, image_url) 615808f684SSatish Balay 625808f684SSatish Balay def _run_dot(self, *options): 635808f684SSatish Balay if '-Tgif' in options: 645808f684SSatish Balay opts = list(options) 655808f684SSatish Balay for i, o in enumerate(opts): 66*6f336411SStefano Zampini if o == '-Tgif': 67*6f336411SStefano Zampini opts[i] = '-Tpng' 685808f684SSatish Balay options = type(options)(opts) 695808f684SSatish Balay return DotGraph_run_dot(self, *options) 705808f684SSatish Balay 715808f684SSatish Balay dotgraph.DotGraph.to_html = to_html 725808f684SSatish Balay dotgraph.DotGraph._run_dot = _run_dot 735808f684SSatish Balay 745808f684SSatish Balay# -------------------------------------------------------------------- 755808f684SSatish Balay 765808f684SSatish Balay 775808f684SSatish Balay_SIGNATURE_RE = re.compile( 785808f684SSatish Balay # Class name (for builtin methods) 79*6f336411SStefano Zampini r'^\s*((?P<class>\w+)\.)?' 80*6f336411SStefano Zampini + 815808f684SSatish Balay # The function name 82*6f336411SStefano Zampini r'(?P<func>\w+)' 83*6f336411SStefano Zampini + 845808f684SSatish Balay # The parameters 85*6f336411SStefano Zampini r'\(((?P<self>(?:self|cls|mcs)),?)?(?P<params>.*)\)' 86*6f336411SStefano Zampini + 875808f684SSatish Balay # The return value (optional) 88*6f336411SStefano Zampini r'(\s*(->)\s*(?P<return>\S.*?))?' 89*6f336411SStefano Zampini + 905808f684SSatish Balay # The end marker 91*6f336411SStefano Zampini r'\s*(\n|\s+(--|<=+>)\s+|$|\.\s+|\.\n)' 92*6f336411SStefano Zampini) 935808f684SSatish Balay 94*6f336411SStefano Zampini 955808f684SSatish Balaydsp._SIGNATURE_RE = _SIGNATURE_RE 965808f684SSatish Balay 975808f684SSatish Balay# -------------------------------------------------------------------- 985808f684SSatish Balay 995808f684SSatish Balay 1005808f684SSatish Balaydef epydocify(): 1015808f684SSatish Balay dirname = os.path.dirname(__file__) 1025808f684SSatish Balay config = os.path.join(dirname, 'epydoc.cfg') 1035808f684SSatish Balay sys.argv.append('--config=' + config) 1045808f684SSatish Balay epydoc.cli.cli() 1055808f684SSatish Balay 106*6f336411SStefano Zampini 1075808f684SSatish Balayif __name__ == '__main__': 1085808f684SSatish Balay epydocify() 1095808f684SSatish Balay 1105808f684SSatish Balay# -------------------------------------------------------------------- 111