James Robinson | 646469d | 2014-10-03 15:33:28 -0700 | [diff] [blame] | 1 | #! /usr/bin/env python |
| 2 | |
| 3 | # -------------------------------------------------------------------- |
| 4 | |
| 5 | import re |
| 6 | from epydoc import docstringparser as dsp |
| 7 | |
| 8 | CYTHON_SIGNATURE_RE = re.compile( |
| 9 | # Class name (for builtin methods) |
| 10 | r'^\s*((?P<class>\w+)\.)?' + |
| 11 | # The function name |
| 12 | r'(?P<func>\w+)' + |
| 13 | # The parameters |
| 14 | r'\(((?P<self>(?:self|cls|mcs)),?)?(?P<params>.*)\)' + |
| 15 | # The return value (optional) |
| 16 | r'(\s*(->)\s*(?P<return>\w+(?:\s*\w+)))?' + |
| 17 | # The end marker |
| 18 | r'\s*(?:\n|$)') |
| 19 | |
| 20 | parse_signature = dsp.parse_function_signature |
| 21 | |
| 22 | def parse_function_signature(func_doc, doc_source, |
| 23 | docformat, parse_errors): |
| 24 | PYTHON_SIGNATURE_RE = dsp._SIGNATURE_RE |
| 25 | assert PYTHON_SIGNATURE_RE is not CYTHON_SIGNATURE_RE |
| 26 | try: |
| 27 | dsp._SIGNATURE_RE = CYTHON_SIGNATURE_RE |
| 28 | found = parse_signature(func_doc, doc_source, |
| 29 | docformat, parse_errors) |
| 30 | dsp._SIGNATURE_RE = PYTHON_SIGNATURE_RE |
| 31 | if not found: |
| 32 | found = parse_signature(func_doc, doc_source, |
| 33 | docformat, parse_errors) |
| 34 | return found |
| 35 | finally: |
| 36 | dsp._SIGNATURE_RE = PYTHON_SIGNATURE_RE |
| 37 | |
| 38 | dsp.parse_function_signature = parse_function_signature |
| 39 | |
| 40 | # -------------------------------------------------------------------- |
| 41 | |
| 42 | from epydoc.cli import cli |
| 43 | cli() |
| 44 | |
| 45 | # -------------------------------------------------------------------- |