Function | attributeEscapingDoneOutside |
No summary |
Function | escapedCDATA |
Escape CDATA for inclusion in a document. |
Function | escapedComment |
Escape a comment for inclusion in a document. |
Function | escapeForContent |
Escape some character or UTF-8 byte data for inclusion in an HTML or XML document, by replacing metacharacters (&<>) with their entity equivalents (&<>). |
Function | writeWithAttributeEscaping |
Decorate a write callable so that all output written is properly quoted for inclusion within an XML attribute value. |
Function | _flattenElement |
Make root slightly more flat by yielding all its immediate contents as strings, deferreds or generators that are recursive calls to itself. |
Function | _flattenTree |
Make root into an iterable of bytes and Deferred by doing a depth first traversal of the tree. |
Function | _getSlotValue |
Find the value of the named slot in the given stack of slot data. |
Function | _writeFlattenedData |
Take strings from an iterator and pass them to a writer function. |
attributeEscapingDoneOutside
actually passes the data through unchanged, because writeWithAttributeEscaping
handles the quoting of the text within attributes outside the generator returned by _flattenElement
; this is used as the dataEscaper argument to that _flattenElement
call so that that generator does not redundantly escape its text output.Parameters | |
data:bytes or unicode | The string to escape. |
Returns | |
bytes | The string, unchanged, except for encoding. |
Escape some character or UTF-8 byte data for inclusion in an HTML or XML document, by replacing metacharacters (&<>) with their entity equivalents (&<>).
This is used as an input to _flattenElement
's dataEscaper parameter.
Parameters | |
data:bytes or unicode | The string to escape. |
Returns | |
bytes | The quoted form of data. If data is unicode, return a utf-8 encoded string. |
Decorate a write callable so that all output written is properly quoted for inclusion within an XML attribute value.
If a Tag
x is flattened within the context of the contents of another Tag
y, the metacharacters (<>&") delimiting x should be passed through unchanged, but the textual content of x should still be quoted, as usual. For example: <y><x>&</x></y>. That is the default behavior of _flattenElement
when escapeForContent
is passed as the dataEscaper.
However, when a Tag
x is flattened within the context of an attribute of another Tag
y, then the metacharacters delimiting x should be quoted so that it can be parsed from the attribute's value. In the DOM itself, this is not a valid thing to do, but given that renderers and slots may be freely moved around in a twisted.web.template
template, it is a condition which may arise in a document and must be handled in a way which produces valid output. So, for example, you should be able to get <y attr="<x />" />. This should also be true for other XML/HTML meta-constructs such as comments and CDATA, so if you were to serialize a comment
in an attribute you should get <y attr="<-- comment -->" />. Therefore in order to capture these meta-characters, flattening is done with write callable that is wrapped with writeWithAttributeEscaping
.
The final case, and hopefully the much more common one as compared to serializing Tag
and arbitrary IRenderable
objects within an attribute, is to serialize a simple string, and those should be passed through for writeWithAttributeEscaping
to quote without applying a second, redundant level of quoting.
Parameters | |
write | A callable which will be invoked with the escaped bytes . |
Returns | |
A callable that writes data with escaping. |
Parameters | |
request | A request object which will be passed to IRenderable.render . |
root | An object to be made flatter. This may be of type unicode, str , slot , Tag , tuple , list , types.GeneratorType , Deferred , or an object that implements IRenderable . |
write | A callable which will be invoked with each bytes produced by flattening root. |
slotData | A list of dict mapping str slot names to data with which those slots will be replaced. |
renderFactory | If not None , an object that provides IRenderable . |
dataEscaper | A 1-argument callable which takes bytes or unicode and returns bytes , quoted as appropriate for the rendering context. This is really only one of two values: attributeEscapingDoneOutside or escapeForContent , depending on whether the rendering context is within an attribute or not. See the explanation in writeWithAttributeEscaping . |
Returns | |
An iterator which yields bytes , Deferred , and more iterators of the same type. | An iterator that eventually yields bytes that should be written to the output. However it may also yield other iterators or Deferred s; if it yields another iterator, the caller will iterate it; if it yields a Deferred , the result of that Deferred will either be bytes , in which case it's written, or another generator, in which case it is iterated. See _flattenTree for the trampoline that consumes said values. |
bytes
and Deferred
by doing a depth first traversal of the tree.Parameters | |
request | A request object which will be passed to IRenderable.render . |
root | An object to be made flatter. This may be of type unicode, bytes , slot , Tag , tuple , list , types.GeneratorType , Deferred , or something providing IRenderable . |
write | A callable which will be invoked with each bytes produced by flattening root. |
Returns | |
An iterator which yields objects of type bytes and Deferred . A Deferred is only yielded when one is encountered in the process of flattening root. The returned iterator must not be iterated again until the Deferred is called back. |
Parameters | |
state | An iterator of str and Deferred . str instances will be passed to write. Deferred instances will be waited on before resuming iteration of state. |
write | A callable which will be invoked with each str produced by iterating state. |
result | A Deferred which will be called back when state has been completely flattened into write or which will be errbacked if an exception in a generator passed to state or an errback from a Deferred from state occurs. |
Returns | |
None |