aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/_stan.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/_stan.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/_stan.py325
1 files changed, 0 insertions, 325 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/_stan.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/_stan.py
deleted file mode 100755
index 004761f8..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/_stan.py
+++ /dev/null
@@ -1,325 +0,0 @@
-# -*- test-case-name: twisted.web.test.test_stan -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-An s-expression-like syntax for expressing xml in pure python.
-
-Stan tags allow you to build XML documents using Python.
-
-Stan is a DOM, or Document Object Model, implemented using basic Python types
-and functions called "flatteners". A flattener is a function that knows how to
-turn an object of a specific type into something that is closer to an HTML
-string. Stan differs from the W3C DOM by not being as cumbersome and heavy
-weight. Since the object model is built using simple python types such as lists,
-strings, and dictionaries, the API is simpler and constructing a DOM less
-cumbersome.
-
-@var voidElements: the names of HTML 'U{void
- elements<http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#void-elements>}';
- those which can't have contents and can therefore be self-closing in the
- output.
-"""
-
-
-class slot(object):
- """
- Marker for markup insertion in a template.
-
- @type name: C{str}
- @ivar name: The name of this slot. The key which must be used in
- L{Tag.fillSlots} to fill it.
-
- @type children: C{list}
- @ivar children: The L{Tag} objects included in this L{slot}'s template.
-
- @type default: anything flattenable, or C{NoneType}
- @ivar default: The default contents of this slot, if it is left unfilled.
- If this is C{None}, an L{UnfilledSlot} will be raised, rather than
- C{None} actually being used.
-
- @type filename: C{str} or C{NoneType}
- @ivar filename: The name of the XML file from which this tag was parsed.
- If it was not parsed from an XML file, C{None}.
-
- @type lineNumber: C{int} or C{NoneType}
- @ivar lineNumber: The line number on which this tag was encountered in the
- XML file from which it was parsed. If it was not parsed from an XML
- file, C{None}.
-
- @type columnNumber: C{int} or C{NoneType}
- @ivar columnNumber: The column number at which this tag was encountered in
- the XML file from which it was parsed. If it was not parsed from an
- XML file, C{None}.
- """
-
- def __init__(self, name, default=None, filename=None, lineNumber=None,
- columnNumber=None):
- self.name = name
- self.children = []
- self.default = default
- self.filename = filename
- self.lineNumber = lineNumber
- self.columnNumber = columnNumber
-
-
- def __repr__(self):
- return "slot(%r)" % (self.name,)
-
-
-
-class Tag(object):
- """
- A L{Tag} represents an XML tags with a tag name, attributes, and children.
- A L{Tag} can be constructed using the special L{twisted.web.template.tags}
- object, or it may be constructed directly with a tag name. L{Tag}s have a
- special method, C{__call__}, which makes representing trees of XML natural
- using pure python syntax.
-
- @ivar tagName: The name of the represented element. For a tag like
- C{<div></div>}, this would be C{"div"}.
- @type tagName: C{str}
-
- @ivar attributes: The attributes of the element.
- @type attributes: C{dict} mapping C{str} to renderable objects.
-
- @ivar children: The child L{Tag}s of this C{Tag}.
- @type children: C{list} of renderable objects.
-
- @ivar render: The name of the render method to use for this L{Tag}. This
- name will be looked up at render time by the
- L{twisted.web.template.Element} doing the rendering, via
- L{twisted.web.template.Element.lookupRenderMethod}, to determine which
- method to call.
- @type render: C{str}
-
- @type filename: C{str} or C{NoneType}
- @ivar filename: The name of the XML file from which this tag was parsed.
- If it was not parsed from an XML file, C{None}.
-
- @type lineNumber: C{int} or C{NoneType}
- @ivar lineNumber: The line number on which this tag was encountered in the
- XML file from which it was parsed. If it was not parsed from an XML
- file, C{None}.
-
- @type columnNumber: C{int} or C{NoneType}
- @ivar columnNumber: The column number at which this tag was encountered in
- the XML file from which it was parsed. If it was not parsed from an
- XML file, C{None}.
-
- @type slotData: C{dict} or C{NoneType}
- @ivar slotData: The data which can fill slots. If present, a dictionary
- mapping slot names to renderable values. The values in this dict might
- be anything that can be present as the child of a L{Tag}; strings,
- lists, L{Tag}s, generators, etc.
- """
-
- slotData = None
- filename = None
- lineNumber = None
- columnNumber = None
-
- def __init__(self, tagName, attributes=None, children=None, render=None,
- filename=None, lineNumber=None, columnNumber=None):
- self.tagName = tagName
- self.render = render
- if attributes is None:
- self.attributes = {}
- else:
- self.attributes = attributes
- if children is None:
- self.children = []
- else:
- self.children = children
- if filename is not None:
- self.filename = filename
- if lineNumber is not None:
- self.lineNumber = lineNumber
- if columnNumber is not None:
- self.columnNumber = columnNumber
-
-
- def fillSlots(self, **slots):
- """
- Remember the slots provided at this position in the DOM.
-
- During the rendering of children of this node, slots with names in
- C{slots} will be rendered as their corresponding values.
-
- @return: C{self}. This enables the idiom C{return tag.fillSlots(...)} in
- renderers.
- """
- if self.slotData is None:
- self.slotData = {}
- self.slotData.update(slots)
- return self
-
-
- def __call__(self, *children, **kw):
- """
- Add children and change attributes on this tag.
-
- This is implemented using __call__ because it then allows the natural
- syntax::
-
- table(tr1, tr2, width="100%", height="50%", border="1")
-
- Children may be other tag instances, strings, functions, or any other
- object which has a registered flatten.
-
- Attributes may be 'transparent' tag instances (so that
- C{a(href=transparent(data="foo", render=myhrefrenderer))} works),
- strings, functions, or any other object which has a registered
- flattener.
-
- If the attribute is a python keyword, such as 'class', you can add an
- underscore to the name, like 'class_'.
-
- There is one special keyword argument, 'render', which will be used as
- the name of the renderer and saved as the 'render' attribute of this
- instance, rather than the DOM 'render' attribute in the attributes
- dictionary.
- """
- self.children.extend(children)
-
- for k, v in kw.iteritems():
- if k[-1] == '_':
- k = k[:-1]
-
- if k == 'render':
- self.render = v
- else:
- self.attributes[k] = v
- return self
-
-
- def _clone(self, obj, deep):
- """
- Clone an arbitrary object; used by L{Tag.clone}.
-
- @param obj: an object with a clone method, a list or tuple, or something
- which should be immutable.
-
- @param deep: whether to continue cloning child objects; i.e. the
- contents of lists, the sub-tags within a tag.
-
- @return: a clone of C{obj}.
- """
- if hasattr(obj, 'clone'):
- return obj.clone(deep)
- elif isinstance(obj, (list, tuple)):
- return [self._clone(x, deep) for x in obj]
- else:
- return obj
-
-
- def clone(self, deep=True):
- """
- Return a clone of this tag. If deep is True, clone all of this tag's
- children. Otherwise, just shallow copy the children list without copying
- the children themselves.
- """
- if deep:
- newchildren = [self._clone(x, True) for x in self.children]
- else:
- newchildren = self.children[:]
- newattrs = self.attributes.copy()
- for key in newattrs:
- newattrs[key] = self._clone(newattrs[key], True)
-
- newslotdata = None
- if self.slotData:
- newslotdata = self.slotData.copy()
- for key in newslotdata:
- newslotdata[key] = self._clone(newslotdata[key], True)
-
- newtag = Tag(
- self.tagName,
- attributes=newattrs,
- children=newchildren,
- render=self.render,
- filename=self.filename,
- lineNumber=self.lineNumber,
- columnNumber=self.columnNumber)
- newtag.slotData = newslotdata
-
- return newtag
-
-
- def clear(self):
- """
- Clear any existing children from this tag.
- """
- self.children = []
- return self
-
-
- def __repr__(self):
- rstr = ''
- if self.attributes:
- rstr += ', attributes=%r' % self.attributes
- if self.children:
- rstr += ', children=%r' % self.children
- return "Tag(%r%s)" % (self.tagName, rstr)
-
-
-
-voidElements = ('img', 'br', 'hr', 'base', 'meta', 'link', 'param', 'area',
- 'input', 'col', 'basefont', 'isindex', 'frame', 'command',
- 'embed', 'keygen', 'source', 'track', 'wbs')
-
-
-class CDATA(object):
- """
- A C{<![CDATA[]]>} block from a template. Given a separate representation in
- the DOM so that they may be round-tripped through rendering without losing
- information.
-
- @ivar data: The data between "C{<![CDATA[}" and "C{]]>}".
- @type data: C{unicode}
- """
- def __init__(self, data):
- self.data = data
-
-
- def __repr__(self):
- return 'CDATA(%r)' % (self.data,)
-
-
-
-class Comment(object):
- """
- A C{<!-- -->} comment from a template. Given a separate representation in
- the DOM so that they may be round-tripped through rendering without losing
- information.
-
- @ivar data: The data between "C{<!--}" and "C{-->}".
- @type data: C{unicode}
- """
-
- def __init__(self, data):
- self.data = data
-
-
- def __repr__(self):
- return 'Comment(%r)' % (self.data,)
-
-
-
-class CharRef(object):
- """
- A numeric character reference. Given a separate representation in the DOM
- so that non-ASCII characters may be output as pure ASCII.
-
- @ivar ordinal: The ordinal value of the unicode character to which this is
- object refers.
- @type ordinal: C{int}
-
- @since: 12.0
- """
- def __init__(self, ordinal):
- self.ordinal = ordinal
-
-
- def __repr__(self):
- return "CharRef(%d)" % (self.ordinal,)