Package web2py :: Package gluon :: Module html :: Class DIV |
[hide private]
[frames] | no frames]

# Class DIV

source code

      object --+
               |
    XmlComponent --+
                   |
                  DIV

Known Subclasses:
  A, B, BEAUTIFY, BODY, BR, CAT, CENTER, CODE, EM, EMBED, FIELDSET, FORM, H1, H2, H3, H4, H5, H6, HEAD, HR, HTML, I, IFRAME, IMG, INPUT, LABEL, LEGEND, LI, LINK, MENU, META, OBJECT, UL, OPTGROUP, OPTION, P, PRE, SCRIPT, SPAN, TABLE, STYLE, TBODY, TD, TFOOT, TH, THEAD, TITLE, TR, TT, XHTML, BUTTON, COL, COLGROUP

HTML helper, for easy generating and manipulating a DOM structure. Little or no validation is done.

Behaves like a dictionary regarding updating of attributes. Behaves like a list regarding inserting/appending components.

example:

       >>> DIV('hello', 'world', _style='color:red;').xml()
       '<div style="color:red;">helloworld</div>'

all other HTML helpers are derived from DIV.

_something="value" attributes are transparently translated into something="value" HTML attributes

Instance Methods | [hide private]
__init__(self, *components, **attributes) :param *components: any components that should be nested in this element :param **attributes: any attributes you want to give to this element | source code
update(self, **kargs) dictionary like updating of the tag attributes | source code
append(self, value) list style appending of components | source code
insert(self, i, value) list style inserting of components | source code
__getitem__(self, i) gets attribute with name 'i' or component #i. | source code
__setitem__(self, i, value) sets attribute with name 'i' or component #i. | source code
__delitem__(self, i) deletes attribute with name 'i' or component #i. | source code
__len__(self) returns the number of included components | source code
__nonzero__(self) always return True | source code
_fixup(self) Handling of provided components. | source code
_wrap_components(self, allowed_parents, wrap_parent=1, wrap_lambda=1) helper for _fixup. | source code
_postprocessing(self) Handling of attributes (normally the ones not prefixed with '_'). | source code
_traverse(self, status, hideerror=True) | source code
_validate(self) nothing to validate yet. | source code
_setnode(self, value) | source code
_xml(self) helper for xml generation. | source code
xml(self) generates the xml for this component. | source code
__str__(self) str(COMPONENT) returns equals COMPONENT.xml() | source code
flatten(self, render=1) return the text stored by the DIV object rendered by the render function the render function must take text, tagname, and attributes render=None is equivalent to render=lambda text, tag, attr: text | source code
elements(self, *args, **kargs) find all component that match the supplied attribute dictionary, or None if nothing could be found | source code
element(self, *args, **kargs) find the first component that matches the supplied attribute dictionary, or None if nothing could be found | source code
siblings(self, *args, **kargs) find all sibling components that match the supplied argument list and attribute dictionary, or None if nothing could be found | source code
sibling(self, *args, **kargs) find the first sibling component that match the supplied argument list and attribute dictionary, or None if nothing could be found | source code
Inherited from `object`: `__delattr__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__repr__`, `__setattr__`

Class Variables | [hide private]
| tag = ``'``div``'``
| regex_tag = `re.compile(r'^`[`\w-:`]``+`')`
| regex_id = `re.compile(r'#`(``[`\w-`]``+``)`')`
| regex_class = `re.compile(r'\.`(``[`\w-`]``+``)`')`
| regex_attr = `re.compile(r'\[`(``[`\w-:`]``+``)`=`(`.`*?``)`\]')`

Properties | [hide private]
Inherited from `object`: `__class__`

Method Details | [hide private]

### __init__(self, *components, **attributes) (Constructor) | source code
:param *components: any components that should be nested in this element :param **attributes: any attributes you want to give to this element :raises SyntaxError: when a stand alone tag receives components Overrides: object.__init__

### append(self, value) | source code
list style appending of components
    >>> a=DIV()
    >>> a.append(SPAN('x'))
    >>> print a
    <div><span>x</span></div>

### insert(self, i, value) | source code
list style inserting of components
    >>> a=DIV()
    >>> a.insert(0,SPAN('x'))
    >>> print a
    <div><span>x</span></div>

### __getitem__(self, i) (Indexing operator) | source code
    gets attribute with name 'i' or component #i.
    If attribute 'i' is not found returns None

    :param i: index
       if i is a string: the name of the attribute
       otherwise references to number of the component

### __setitem__(self, i, value) (Index assignment operator) | source code
    sets attribute with name 'i' or component #i.

    :param i: index
       if i is a string: the name of the attribute
       otherwise references to number of the component
    :param value: the new value

### __delitem__(self, i) (Index deletion operator) | source code
    deletes attribute with name 'i' or component #i.

    :param i: index
       if i is a string: the name of the attribute
       otherwise references to number of the component

### _fixup(self) | source code
Handling of provided components. Nothing to fixup yet. May be overridden by subclasses, eg for wrapping some components in another component or blocking them.

### _wrap_components(self, allowed_parents, wrap_parent=1, wrap_lambda=1) | source code
    helper for _fixup. Checks if a component is in allowed_parents,
    otherwise wraps it in wrap_parent

    :param allowed_parents: (tuple) classes that the component should be an
        instance of
    :param wrap_parent: the class to wrap the component in, if needed
    :param wrap_lambda: lambda to use for wrapping, if needed

### _postprocessing(self) | source code
Handling of attributes (normally the ones not prefixed with '_'). Nothing to postprocess yet. May be overridden by subclasses

### _validate(self) | source code
nothing to validate yet. May be overridden by subclasses

### _xml(self) | source code
    helper for xml generation. Returns separately:
    - the component attributes
    - the generated xml of the inner components

    Component attributes start with an underscore ('_') and
    do not have a False or None value. The underscore is removed.
    A value of True is replaced with the attribute name.

    :returns: tuple: (attributes, components)

### xml(self) | source code
generates the xml for this component. Overrides: XmlComponent.xml

### __str__(self) (Informal representation operator) | source code
str(COMPONENT) returns equals COMPONENT.xml() Overrides: object.__str__

### flatten(self, render=1) | source code
return the text stored by the DIV object rendered by the render function the render function must take text, tagname, and attributes render=None is equivalent to render=lambda text, tag, attr: text
    >>> markdown = lambda text,tag=None,attributes={}:                         {None: re.sub('\s+',' ',text),                          'h1':'#'+text+'\n\n',                          'p':text+'\n'}.get(tag,text)
    >>> a=TAG('<h1>Header</h1><p>this is a     test</p>')
    >>> a.flatten(markdown)
    '#Header\n\nthis is a test\n'

### elements(self, *args, **kargs) | source code
find all component that match the supplied attribute dictionary, or None if nothing could be found All components of the components are searched.
    >>> a = DIV(DIV(SPAN('x'),3,DIV(SPAN('y'))))
    >>> for c in a.elements('span',first_only=True): c[0]='z'
    >>> print a
    <div><div><span>z</span>3<div><span>y</span></div></div></div>
    >>> for c in a.elements('span'): c[0]='z'
    >>> print a
    <div><div><span>z</span>3<div><span>z</span></div></div></div>
It also supports a syntax compatible with jQuery
    >>> a=TAG('<div><span><a id="1-1" u:v=$>hello</a></span><p class="this is a test">world</p></div>')
    >>> for e in a.elements('div a#1-1, p.is'): print e.flatten()
    hello
    world
    >>> for e in a.elements('#1-1'): print e.flatten()
    hello
    >>> a.elements('a[u:v=$]')[0].xml()
    '<a id="1-1" u:v="$">hello</a>'
    >>> a=FORM( INPUT(_type='text'), SELECT(range(1)), TEXTAREA() )
    >>> for c in a.elements('input, select, textarea'): c['_disabled'] = 'disabled'
    >>> a.xml()
    '<form action="" enctype="multipart/form-data" method="post"><input disabled="disabled" type="text" /><select disabled="disabled"><option value="0">0</option></select><textarea cols="40" disabled="disabled" rows="10"></textarea></form>'

### element(self, *args, **kargs) | source code
find the first component that matches the supplied attribute dictionary, or None if nothing could be found Also the components of the components are searched.