]> granicus.if.org Git - python/commitdiff
Merged revisions 65199 via svnmerge from
authorGeorg Brandl <georg@python.org>
Wed, 23 Jul 2008 15:19:11 +0000 (15:19 +0000)
committerGeorg Brandl <georg@python.org>
Wed, 23 Jul 2008 15:19:11 +0000 (15:19 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r65199 | georg.brandl | 2008-07-23 17:17:09 +0200 (Wed, 23 Jul 2008) | 2 lines

  Move opcode handling to Python's extension.
........

Doc/tools/sphinxext/pyspecific.py

index 6ca48059fdc398e56e2d125b845a039ae9fe3077..42bb1bfceef9660eba5fa45ab0118e30cf2e95d7 100644 (file)
@@ -83,6 +83,28 @@ class PydocTopicsBuilder(Builder):
             f.close()
 
 
+# Support for documenting Opcodes
+
+import re
+from sphinx import addnodes
+
+opcode_sig_re = re.compile(r'(\w+(?:\+\d)?)\s*\((.*)\)')
+
+def parse_opcode_signature(env, sig, signode):
+    """Transform an opcode signature into RST nodes."""
+    m = opcode_sig_re.match(sig)
+    if m is None:
+        raise ValueError
+    opname, arglist = m.groups()
+    signode += addnodes.desc_name(opname, opname)
+    paramlist = addnodes.desc_parameterlist()
+    signode += paramlist
+    paramlist += addnodes.desc_parameter(arglist, arglist)
+    return opname.strip()
+
+
 def setup(app):
     app.add_role('issue', issue_role)
     app.add_builder(PydocTopicsBuilder)
+    app.add_description_unit('opcode', 'opcode', '%s (opcode)',
+                             parse_opcode_signature)