django-piston / piston / handlers_doc.py

from piston.doc import generate_doc
from piston.handler import handler_tracker
import re

def generate_piston_documentation(app, docname, source):
    e = re.compile(r"^\.\. piston_handlers:: ([\w\.]+)$")
    old_source = source[0].split("\n")
    new_source = old_source[:]
    for line_nr, line in enumerate(old_source):
        m = e.match(line)
        if m:
            module = m.groups()[0]
            try:
                __import__(module)
            except ImportError:
                pass
            else:
                new_lines = []
                for handler in handler_tracker:
                    doc = generate_doc(handler)
                    new_lines.append(doc.name)
                    new_lines.append("-" * len(doc.name))
                    new_lines.append('::\n')
                    new_lines.append('\t' + doc.get_resource_uri_template() + '\n')
                    new_lines.append('Accepted methods:')
                    for method in doc.allowed_methods:
                        new_lines.append('\t* ' + method)
                    new_lines.append('')
                    if doc.doc:
                        new_lines.append(doc.doc)
                new_source[line_nr:line_nr+1] = new_lines

    source[0] = "\n".join(new_source)
    return source

def setup(app):
    app.connect('source-read', generate_piston_documentation)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.