# Source code for lxml.html.builder

    # --------------------------------------------------------------------
    # The ElementTree toolkit is
    # Copyright (c) 1999-2004 by Fredrik Lundh
    # --------------------------------------------------------------------

    """
    A set of HTML generator tags for building HTML documents.

    Usage::

        >>> from lxml.html.builder import *
        >>> html = HTML(
        ...            HEAD( TITLE("Hello World") ),
        ...            BODY( CLASS("main"),
        ...                  H1("Hello World !")
        ...            )
        ...        )

        >>> import lxml.etree
        >>> print lxml.etree.tostring(html, pretty_print=True)
        <html>
          <head>
            <title>Hello World</title>
          </head>
          <body class="main">
            <h1>Hello World !</h1>
          </body>
        </html>

    """

    from lxml.builder import ElementMaker
    from lxml.html import html_parser

    E = ElementMaker(makeelement=html_parser.makeelement)

    # elements
    A = E.a  #: anchor
    ABBR = E.abbr  #: abbreviated form (e.g., WWW, HTTP, etc.)
    ACRONYM = E.acronym  #:
    ADDRESS = E.address  #: information on author
    APPLET = E.applet  #: Java applet (DEPRECATED)
    AREA = E.area  #: client-side image map area
    ARTICLE = E.article  #: self-contained article
    ASIDE = E.aside  #: indirectly-related content
    AUDIO = E.audio  #: embedded audio file
    B = E.b  #: bold text style
    BASE = E.base  #: document base URI
    BASEFONT = E.basefont  #: base font size (DEPRECATED)
    BDI = E.bdi  #: isolate bidirectional text
    BDO = E.bdo  #: I18N BiDi over-ride
    BIG = E.big  #: large text style
    BLOCKQUOTE = E.blockquote  #: long quotation
    BODY = E.body  #: document body
    BR = E.br  #: forced line break
    BUTTON = E.button  #: push button
    CANVAS = E.canvas  #: scriptable graphics container
    CAPTION = E.caption  #: table caption
    CENTER = E.center  #: shorthand for DIV align=center (DEPRECATED)
    CITE = E.cite  #: citation
    CODE = E.code  #: computer code fragment
    COL = E.col  #: table column
    COLGROUP = E.colgroup  #: table column group
    DATA = E.data  #: machine-readable translation
    DATALIST = E.datalist  #: list of options for an input
    DD = E.dd  #: definition description
    DEL = getattr(E, 'del')  #: deleted text
    DETAILS = E.details  #: expandable section
    DFN = E.dfn  #: instance definition
    DIALOG = E.dialog  #: dialog box
    DIR = E.dir  #: directory list (DEPRECATED)
    DIV = E.div  #: generic language/style container
    DL = E.dl  #: definition list
    DT = E.dt  #: definition term
    EM = E.em  #: emphasis
    EMBED = E.embed  #: embedded external content
    FIELDSET = E.fieldset  #: form control group
    FIGCAPTION = E.figcaption  #: figure caption
    FIGURE = E.figure  #: self-contained, possibly-captioned content
    FONT = E.font  #: local change to font (DEPRECATED)
    FOOTER = E.footer  #: footer for nearest ancestor
    FORM = E.form  #: interactive form
    FRAME = E.frame  #: subwindow
    FRAMESET = E.frameset  #: window subdivision
    H1 = E.h1  #: heading
    H2 = E.h2  #: heading
    H3 = E.h3  #: heading
    H4 = E.h4  #: heading
    H5 = E.h5  #: heading
    H6 = E.h6  #: heading
    HEAD = E.head  #: document head
    HEADER = E.header  #: heading content
    HGROUP = E.hgroup  #: heading group
    HR = E.hr  #: horizontal rule
    HTML = E.html  #: document root element
    I = E.i  #: italic text style
    IFRAME = E.iframe  #: inline subwindow
    IMG = E.img  #: Embedded image
    INPUT = E.input  #: form control
    INS = E.ins  #: inserted text
    ISINDEX = E.isindex  #: single line prompt (DEPRECATED)
    KBD = E.kbd  #: text to be entered by the user
    LABEL = E.label  #: form field label text
    LEGEND = E.legend  #: fieldset legend
    LI = E.li  #: list item
    LINK = E.link  #: a media-independent link
    MAIN = E.main  #: main content
    MAP = E.map  #: client-side image map
    MARK = E.mark  #: marked/highlighted text
    MARQUEE = E.marquee  #: scrolling text
    MENU = E.menu  #: menu list (DEPRECATED)
    META = E.meta  #: generic metainformation
    METER = E.meter  #: numerical value display
    NAV = E.nav  #: navigation section
    NOBR = E.nobr  #: prevent wrapping
    NOFRAMES = E.noframes  #: alternate content container for non frame-based rendering
    NOSCRIPT = E.noscript  #: alternate content container for non script-based rendering
    OBJECT = E.object  #: generic embedded object
    OL = E.ol  #: ordered list
    OPTGROUP = E.optgroup  #: option group
    OPTION = E.option  #: selectable choice
    OUTPUT = E.output  #: result of a calculation
    P = E.p  #: paragraph
    PARAM = E.param  #: named property value
    PICTURE = E.picture  #: picture with multiple sources
    PORTAL = E.portal  #: embedded preview
    PRE = E.pre  #: preformatted text
    PROGRESS = E.progress  #: progress bar
    Q = E.q  #: short inline quotation
    RB = E.rb  #: ruby base text
    RP = E.rp  #: ruby parentheses
    RT = E.rt  #: ruby text component
    RTC = E.rtc  #: ruby semantic annotation
    RUBY = E.ruby  #: ruby annotations
    S = E.s  #: strike-through text style (DEPRECATED)
    SAMP = E.samp  #: sample program output, scripts, etc.
    SCRIPT = E.script  #: script statements
    SEARCH = E.search  #: set of form controls for a search
    SECTION = E.section  #: generic standalone section
    SELECT = E.select  #: option selector
    SLOT = E.slot  #: placeholder for JS use
    SMALL = E.small  #: small text style
    SOURCE = E.source  #: source for picture/audio/video element
    SPAN = E.span  #: generic language/style container
    STRIKE = E.strike  #: strike-through text (DEPRECATED)
    STRONG = E.strong  #: strong emphasis
    STYLE = E.style  #: style info
    SUB = E.sub  #: subscript
    SUMMARY = E.summary  #: summary for <details>
    SUP = E.sup  #: superscript
    TABLE = E.table  #:
    TBODY = E.tbody  #: table body
    TD = E.td  #: table data cell
    TEMPLATE = E.template  #: fragment for JS use
    TEXTAREA = E.textarea  #: multi-line text field
    TFOOT = E.tfoot  #: table footer
    TH = E.th  #: table header cell
    THEAD = E.thead  #: table header
    TIME = E.time  #: date/time
    TITLE = E.title  #: document title
    TR = E.tr  #: table row
    TRACK = E.track  #: audio/video track
    TT = E.tt  #: teletype or monospaced text style
    U = E.u  #: underlined text style (DEPRECATED)
    UL = E.ul  #: unordered list
    VAR = E.var  #: instance of a variable or program argument
    VIDEO = E.video  #: embedded video file
    WBR = E.wbr  #: word break

    # attributes (only reserved words are included here)
    ATTR = dict

    def CLASS(v): return {'class': v}

    def FOR(v): return {'for': v}