A decorator that is used to define that the decorated block function
    will be at the root of the block template hierarchy.  In the usual case
    this will be the HTML skeleton of the document, unless the template is used
    to serve partial HTML rendering for Ajax.

    The :func:`root_block` decorator accepts the following arguments:

    :param template_name: The name of the block template hierarchy which is
                          passed to the :func:`render_template` document
                          rendering function.  Different templates are useful
                          for rendering documents with differing layouts
                          (e.g. admin back-end vs. site front-end), or for
                          partial HTML rendering for Ajax.

def root_block(template_name=DEFAULT_TEMPLATE_NAME):
    """A decorator that is used to define that the decorated block function
    will be at the root of the block template hierarchy.  In the usual case
    this will be the HTML skeleton of the document, unless the template is used
    to serve partial HTML rendering for Ajax.

    The :func:`root_block` decorator accepts the following arguments:

    :param template_name: The name of the block template hierarchy which is
                          passed to the :func:`render_template` document
                          rendering function.  Different templates are useful
                          for rendering documents with differing layouts
                          (e.g. admin back-end vs. site front-end), or for
                          partial HTML rendering for Ajax.
    """
    def decorator(block_func):
        block = RootBlock(block_func, template_name)
        return block_func
    return decorator