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.