diff options
Diffstat (limited to 'docutils/readers/python/pynodes.py')
-rw-r--r-- | docutils/readers/python/pynodes.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/docutils/readers/python/pynodes.py b/docutils/readers/python/pynodes.py new file mode 100644 index 000000000..61e21f10e --- /dev/null +++ b/docutils/readers/python/pynodes.py @@ -0,0 +1,87 @@ +#! /usr/bin/env python + +""" +:Author: David Goodger +:Contact: goodger@users.sourceforge.net +:Revision: $Revision$ +:Date: $Date$ +:Copyright: This module has been placed in the public domain. + +""" + +from docutils import nodes +from docutils.nodes import Element, TextElement, Structural, Inline, Part, \ + Text +import types + +# This is the parent class of all the other pynode classes: +class PythonStructural(Structural): pass + +# ===================== +# Structural Elements +# ===================== + +class module_section(PythonStructural, Element): pass +class class_section(PythonStructural, Element): pass +class class_base(PythonStructural, Element): pass +class method_section(PythonStructural, Element): pass +class attribute(PythonStructural, Element): pass +class function_section(PythonStructural, Element): pass +class class_attribute_section(PythonStructural, Element): pass +class class_attribute(PythonStructural, Element): pass +class expression_value(PythonStructural, Element): pass +class attribute(PythonStructural, Element): pass + +# Structural Support Elements +# --------------------------- + +class parameter_list(PythonStructural, Element): pass +class parameter_tuple(PythonStructural, Element): pass +class parameter_default(PythonStructural, TextElement): pass +class import_group(PythonStructural, TextElement): pass +class import_from(PythonStructural, TextElement): pass +class import_name(PythonStructural, TextElement): pass +class import_alias(PythonStructural, TextElement): pass +class docstring(PythonStructural, Element): pass + +# ================= +# Inline Elements +# ================= + +# These elements cannot become references until the second +# pass. Initially, we'll use "reference" or "name". + +class object_name(PythonStructural, TextElement): pass +class parameter_list(PythonStructural, TextElement): pass +class parameter(PythonStructural, TextElement): pass +class parameter_default(PythonStructural, TextElement): pass +class class_attribute(PythonStructural, TextElement): pass +class attribute_tuple(PythonStructural, TextElement): pass + +# ================= +# Unused Elements +# ================= + +# These were part of the model, and maybe should be in the future, but +# aren't now. +#class package_section(PythonStructural, Element): pass +#class module_attribute_section(PythonStructural, Element): pass +#class instance_attribute_section(PythonStructural, Element): pass +#class module_attribute(PythonStructural, TextElement): pass +#class instance_attribute(PythonStructural, TextElement): pass +#class exception_class(PythonStructural, TextElement): pass +#class warning_class(PythonStructural, TextElement): pass + + +# Collect all the classes we've written above +def install_node_class_names(): + node_class_names = [] + for name, var in globals().items(): + if (type(var) is types.ClassType + and issubclass(var, PythonStructural) \ + and name.lower() == name): + node_class_names.append(var.tagname or name) + # Register the new node names with GenericNodeVisitor and + # SpecificNodeVisitor: + nodes._add_node_class_names(node_class_names) +install_node_class_names() |