
bKc           @   s   d  Z  i  Z d d  Z d S(   so  A collection of modules for building different kinds of tree from
HTML documents.

To create a treebuilder for a new type of tree, you need to do
implement several things:

1) A set of classes for various types of elements: Document, Doctype,
Comment, Element. These must implement the interface of
_base.treebuilders.Node (although comment nodes have a different
signature for their constructor, see treebuilders.simpletree.Comment)
Textual content may also be implemented as another node type, or not, as
your tree implementation requires.

2) A treebuilder object (called TreeBuilder by convention) that
inherits from treebuilders._base.TreeBuilder. This has 4 required attributes:
documentClass - the class to use for the bottommost node of a document
elementClass - the class to use for HTML Elements
commentClass - the class to use for comments
doctypeClass - the class to use for doctypes
It also has one required method:
getDocument - Returns the root node of the complete document tree

3) If you wish to run the unit tests, you must also create a
testSerializer method on your treebuilder which accepts a node and
returns a string containing Node and its children serialized according
to the format used in the unittests

The supplied simpletree module provides a python-only implementation
of a full treebuilder and is a useful reference for the semantics of
the various methods.
c   
      K   s  |  j    }  |  t k r|  d k rh d d l } | d k rU d d l m } | } n  | j | |  j S|  d k r d d l } | j t |  <q|  d k r d d l	 } | j t |  <q|  d k r d d l
 } | j t |  <q|  d k r| d k ry d d l j j } Wnn t k
 r~y d d l j j } Wqt k
 rzy d d l } Wq{t k
 rvd d l j } q{XqXn X| } n  d d l }	 |	 j | |  j St d	 |    n  t j |   S(
   s  Get a TreeBuilder class for various types of tree with built-in support
    
    treeType - the name of the tree type required (case-insensitive). Supported
               values are "simpletree", "dom", "etree" and "beautifulsoup"
               
               "simpletree" - a built-in DOM-ish tree type with support for some
                              more pythonic idioms.
                "dom" - A generic builder for DOM implementations, defaulting to
                        a xml.dom.minidom based implementation for the sake of
                        backwards compatibility (as releases up until 0.10 had a
                        builder called "dom" that was a minidom implemenation).
                "etree" - A generic builder for tree implementations exposing an
                          elementtree-like interface (known to work with
                          ElementTree, cElementTree and lxml.etree).
                "beautifulsoup" - Beautiful soup (if installed)
               
    implementation - (Currently applies to the "etree" and "dom" tree types). A
                      module implementing the tree type e.g.
                      xml.etree.ElementTree or lxml.etree.t   domiN(   t   minidomt
   simpletreet   beautifulsoupt   lxmlt   etrees   Unrecognised treebuilder "%s" (   t   lowert   treeBuilderCacheR    t   Nonet   xml.domR   t   getDomModulet   TreeBuilderR   t   soupt
   etree_lxmlt   xml.etree.cElementTreeR   t   cElementTreet   ImportErrort   xml.etree.ElementTreet   ElementTreet   elementtree.ElementTreet   getETreeModulet
   ValueErrort   get(
   t   treeTypet   implementationt   kwargsR    R   R   R   R   t   ETR   (    (    s]   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/__init__.pyt   getTreeBuilder#   sD    		N(   t   __doc__R   R   R   (    (    (    s]   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/__init__.pyt   <module>   s   