This is markup.py - a Python module that attempts to
make it easier to generate HTML/XML from a Python program
in an intuitive, lightweight, customizable and pythonic way.
The code is in the public domain.
Version: 1.9 as of 1 October 2012.
Documentation and further info is at http://markup.sourceforge.net/
Please send bug reports, feature requests, enhancement
ideas or questions to nogradi at gmail dot com.
Installation: drop markup.py somewhere into your Python path.
-
markup.cgiprint(inline='', unbuff=True, line_end='\r\n')[source]
Print to the stdout.
Set unbuff=True to flush the buffer after every write.
It prints the inline you send it, followed by the line_end. By default this
is ``
`` - which is the standard specified by the RFC for http headers.
-
class markup.element(tag, case='lower', parent=None)[source]
This class handles the addition of a new element.
-
__init__(tag, case='lower', parent=None)[source]
-
__call__(*args, **kwargs)[source]
-
render(tag, single, between, kwargs)[source]
Append the actual tags to content.
-
close()[source]
Append a closing tag unless element has only opening tag.
-
open(**kwargs)[source]
Append an opening tag.
-
class markup.page(mode='strict_html', case='lower', onetags=None, twotags=None, separator='n', class_=None)[source]
This is our main class representing a document. Elements are added
as attributes of an instance of this class.
Stuff that effects the whole document.
*‘strict_html’ for HTML 4.01 (default)
*‘html’ alias for ‘strict_html’
*‘loose_html’ to allow some deprecated elements
*‘xml’ to allow arbitrary elements
*‘lower’ element names will be printed in lower case (default)
*‘upper’ they will be printed in upper case
*‘given’ element names will be printed as they are given
Parameters: |
- onetags – list or tuple of valid elements with opening tags only
- twotags – list or tuple of valid elements with both opening and closing tags
these two keyword arguments may be used to select
the set of valid elements in ‘xml’ mode
invalid elements will raise appropriate exceptions
- separator – string to place between added elements, defaults to newline
- class – a class that will be added to every element if defined
|
-
__init__(mode='strict_html', case='lower', onetags=None, twotags=None, separator='n', class_=None)[source]
Stuff that effects the whole document.
*‘strict_html’ for HTML 4.01 (default)
*‘html’ alias for ‘strict_html’
*‘loose_html’ to allow some deprecated elements
*‘xml’ to allow arbitrary elements
*‘lower’ element names will be printed in lower case (default)
*‘upper’ they will be printed in upper case
*‘given’ element names will be printed as they are given
Parameters: |
- onetags – list or tuple of valid elements with opening tags only
- twotags – list or tuple of valid elements with both opening and closing tags
these two keyword arguments may be used to select
the set of valid elements in ‘xml’ mode
invalid elements will raise appropriate exceptions
- separator – string to place between added elements, defaults to newline
- class – a class that will be added to every element if defined
|
-
__getattr__(attr)[source]
-
__str__()[source]
-
__call__(escape=False)[source]
Return the document as a string.
- escape – False print normally
- True replace < and > by < and >
- the default escape sequences in most browsers
-
add(text)[source]
This is an alias to addcontent.
Add some text to the bottom of the document
Add some text to the top of the document
-
addcontent(text)[source]
Add some text to the main part of the document
-
init(lang='en', css=None, metainfo=None, title=None, header=None, footer=None, charset=None, encoding=None, doctype=None, bodyattrs=None, script=None, base=None)[source]
This method is used for complete documents with appropriate
doctype, encoding, title, etc information. For an /XML snippet
omit this method.
- lang – language, usually a two character string, will appear
- as <html lang=’en’> in html mode (ignored in xml mode)
- css – Cascading Style Sheet filename as a string or a list of
- strings for multiple css files (ignored in xml mode)
- metainfo – a dictionary in the form { ‘name’:’content’ } to be inserted
- into meta element(s) as <meta name=’name’ content=’content’>
(ignored in xml mode)
base – set the <base href=”...”> tag in <head>
- bodyattrs –a dictionary in the form { ‘key’:’value’, ... } which will be added
- as attributes of the <body> element as <body key=’value’ ... >
(ignored in xml mode)
- script – dictionary containing src:type pairs, <script type=’text/type’ src=src></script>
- or a list of [ ‘src1’, ‘src2’, ... ] in which case ‘javascript’ is assumed for all
- title – the title of the document as a string to be inserted into
- a title element as <title>my title</title> (ignored in xml mode)
- header – some text to be inserted right after the <body> element
- (ignored in xml mode)
- footer – some text to be inserted right before the </body> element
- (ignored in xml mode)
- charset – a string defining the character set, will be inserted into a
- <meta http-equiv=’Content-Type’ content=’text/html; charset=myset’>
element (ignored in xml mode)
- encoding – a string defining the encoding, will be put into to first line of
- the document as <?xml version=‘1.0’ encoding=’myencoding’ ?> in
xml mode (ignored in html mode)
- doctype – the document type string, defaults to
- <!DOCTYPE HTML PUBLIC ‘-//W3C//DTD HTML 4.01 Transitional//EN’>
in html mode (ignored in xml mode)
-
css(filelist)[source]
This convenience function is only useful for html.
It adds css stylesheet(s) to the document via the <link> element.
-
metainfo(mydict)[source]
This convenience function is only useful for html.
It adds meta information via the <meta> element, the argument is
a dictionary of the form { ‘name’:’content’ }.
-
scripts(mydict)[source]
Only useful in html, mydict is dictionary of src:type pairs or a list
of script sources [ ‘src1’, ‘src2’, ... ] in which case ‘javascript’ is assumed for type.
Will be rendered as <script type=’text/type’ src=src></script>
-
markup.escape(text, newline=False)[source]
Escape special html characters.
-
markup.unescape(text)[source]
Inverse of escape.
-
class markup.dummy[source]
A dummy class for attaching attributes.
-
class markup.russell[source]
A dummy class that contains anything.
-
__contains__(item)[source]
-
exception markup.MarkupError[source]
Bases: exceptions.Exception
All our exceptions subclass this.
-
__str__()[source]
-
__weakref__
list of weak references to the object (if defined)
-
exception markup.ClosingError(tag)[source]
Bases: markup.MarkupError
-
__init__(tag)[source]
-
exception markup.OpeningError(tag)[source]
Bases: markup.MarkupError
-
__init__(tag)[source]
-
exception markup.ArgumentError(tag)[source]
Bases: markup.MarkupError
-
__init__(tag)[source]
-
exception markup.InvalidElementError(tag, mode)[source]
Bases: markup.MarkupError
-
__init__(tag, mode)[source]
-
exception markup.DeprecationError(tag)[source]
Bases: markup.MarkupError
-
__init__(tag)[source]
-
exception markup.ModeError(mode)[source]
Bases: markup.MarkupError
-
__init__(mode)[source]
-
exception markup.CustomizationError[source]
Bases: markup.MarkupError
-
__init__()[source]