Source code for kajiki.xml_template

-import collections
+import abc
+import collections
 import html
 import io
 import re
@@ -40,23 +41,23 @@ 

Source code for kajiki.xml_template

 from xml.dom import minidom as dom
 from xml.sax import SAXParseException
 
-from . import ir, template
-from .doctype import DocumentTypeDeclaration, extract_dtd
-from .html_utils import HTML_CDATA_TAGS, HTML_OPTIONAL_END_TAGS, HTML_REQUIRED_END_TAGS
-from .markup_template import QDIRECTIVES, QDIRECTIVES_DICT
+from kajiki import ir, template
+from kajiki.doctype import DocumentTypeDeclaration, extract_dtd
+from kajiki.html_utils import HTML_CDATA_TAGS, HTML_OPTIONAL_END_TAGS, HTML_REQUIRED_END_TAGS
+from kajiki.markup_template import QDIRECTIVES, QDIRECTIVES_DICT
 
 impl = dom.getDOMImplementation(" ")
 
 
-def XMLTemplate(
+def XMLTemplate(  # noqa: N802
     source=None,
     filename=None,
     mode=None,
-    is_fragment=False,
+    is_fragment=False,  # noqa: FBT002
     encoding="utf-8",
     autoblocks=None,
-    cdata_scripts=True,
-    strip_text=False,
+    cdata_scripts=True,  # noqa: FBT002
+    strip_text=False,  # noqa: FBT002
     base_globals=None,
 ):
     """Given XML source code of a Kajiki Templates parses and returns
@@ -92,8 +93,7 @@ 

Source code for kajiki.xml_template

         autoblocks=autoblocks,
         cdata_scripts=cdata_scripts,
     ).compile()
-    t = template.from_ir(ir_, base_globals=base_globals)
-    return t
+    return template.from_ir(ir_, base_globals=base_globals)
 
 
 def annotate(gen):
@@ -119,9 +119,9 @@ 

Source code for kajiki.xml_template

         filename,
         doc,
         mode=None,
-        is_fragment=False,
+        is_fragment=False,  # noqa: FBT002
         autoblocks=None,
-        cdata_scripts=True,
+        cdata_scripts=True,  # noqa: FBT002
     ):
         self.filename = filename
         self.doc = doc
@@ -136,7 +136,7 @@ 

Source code for kajiki.xml_template

         self.is_child = False
         # The rendering mode is either specified in the *mode* argument,
         # or inferred from the DTD:
-        self._dtd = DocumentTypeDeclaration.matching(self.doc._dtd)
+        self._dtd = DocumentTypeDeclaration.matching(self.doc._dtd)  # noqa: SLF001
         if mode:
             self.mode = mode
         elif self._dtd:
@@ -167,19 +167,18 @@ 

Source code for kajiki.xml_template

             registries of the compiler ``compile`` should
             never be called twice or might lead to unexpected results.
         """
-        templateNodes = [
+        templateNodes = [  # noqa: N806
             n for n in self.doc.childNodes if not isinstance(n, dom.Comment)
         ]
         if len(templateNodes) != 1:
-            raise XMLTemplateCompileError(
-                "expected a single root node in document", self.doc, self.filename, 0
-            )
+            msg = "expected a single root node in document"
+            raise XMLTemplateCompileError(msg, self.doc, self.filename, 0)
 
         body = list(self._compile_node(templateNodes[0]))
         # Never emit doctypes on fragments
         if not self.is_fragment and not self.is_child:
-            if self.doc._dtd:
-                dtd = self.doc._dtd
+            if self.doc._dtd:  # noqa: SLF001
+                dtd = self.doc._dtd  # noqa: SLF001
             elif self.mode == "html5":
                 dtd = "<!DOCTYPE html>"
             else:
@@ -214,10 +213,8 @@ 

Source code for kajiki.xml_template

         if node.hasAttribute("py:autoblock"):
             guard = node.getAttribute("py:autoblock").lower()
             if guard not in ("false", "true"):
-                raise ValueError(
-                    "py:autoblock is evaluated at compile time "
-                    "and only accepts True/False constants"
-                )
+                msg = "py:autoblock is evaluated at compile time " "and only accepts True/False constants"
+                raise ValueError(msg)
             if guard == "false":
                 # We throw away the attribute so it doesn't remain in rendered nodes.
                 node.removeAttribute("py:autoblock")
@@ -236,22 +233,19 @@ 

Source code for kajiki.xml_template

         """
         if isinstance(node, dom.Comment):
             return self._compile_comment(node)
-        elif isinstance(node, dom.Text):
+        if isinstance(node, dom.Text):
             return self._compile_text(node)
-        elif isinstance(node, dom.ProcessingInstruction):
+        if isinstance(node, dom.ProcessingInstruction):
             return self._compile_pi(node)
-        elif self._is_autoblock(node):
+        if self._is_autoblock(node):
             # Set the name of the block equal to the tag itself.
             node.setAttribute("name", node.tagName)
             return self._compile_block(node)
-        elif node.tagName.startswith("py:"):
+        if node.tagName.startswith("py:"):
             # Handle directives
-            compiler = getattr(
-                self, "_compile_%s" % node.tagName.split(":")[-1], self._compile_xml
-            )
+            compiler = getattr(self, "_compile_{}".format(node.tagName.split(":")[-1]), self._compile_xml)
             return compiler(node)
-        else:
-            return self._compile_xml(node)
+        return self._compile_xml(node)
 
     @annotate
     def _compile_xml(self, node):
@@ -274,12 +268,12 @@ 

Source code for kajiki.xml_template

         content = attrs = guard = None
         if node.hasAttribute("py:strip"):
             guard = node.getAttribute("py:strip")
-            if guard == "":  # py:strip="" means yes, do strip the tag
+            if guard == "":  # py:strip="" means yes, do strip the tag  # noqa: SIM108
                 guard = "False"
             else:
-                guard = "not (%s)" % guard
+                guard = f"not ({guard})"
             node.removeAttribute("py:strip")
-        yield ir.TextNode("<%s" % node.tagName, guard)
+        yield ir.TextNode(f"<{node.tagName}", guard)
         for k, v in sorted(node.attributes.items()):
             tc = _TextCompiler(
                 self.filename,
@@ -289,7 +283,7 @@ 

Source code for kajiki.xml_template

                 in_html_attr=True,
                 compiler_instance=self,
             )
-            v = list(tc)
+            v = list(tc)  # noqa: PLW2901
             if k == "py:content":
                 content = node.getAttribute("py:content")
                 continue
@@ -302,7 +296,7 @@ 

Source code for kajiki.xml_template

         if content:
             yield ir.TextNode(">", guard)
             yield ir.ExprNode(content)
-            yield ir.TextNode("</%s>" % node.tagName, guard)
+            yield ir.TextNode(f"</{node.tagName}>", guard)
         elif node.childNodes:
             yield ir.TextNode(">", guard)
             if self.cdata_scripts and node.tagName in HTML_CDATA_TAGS:
@@ -314,11 +308,9 @@ 

Source code for kajiki.xml_template

                     # CDATA for scripts and styles are automatically managed.
                     if getattr(child, "_cdata", False):
                         continue
-                    assert isinstance(child, dom.Text)
+                    assert isinstance(child, dom.Text)  # noqa: S101
                     for x in self._compile_text(child):
-                        if (
-                            child.escaped
-                        ):  # If user declared CDATA no escaping happened.
+                        if child.escaped:  # If user declared CDATA no escaping happened.
                             x.text = html.unescape(x.text)
                         yield x
                 if self.mode == "xml":  # Finish escaping
@@ -331,18 +323,15 @@ 

Source code for kajiki.xml_template

                         continue
                     for x in self._compile_node(cn):
                         yield x
-            if not (
-                self.mode.startswith("html")
-                and node.tagName in HTML_OPTIONAL_END_TAGS
-            ):
-                yield ir.TextNode("</%s>" % node.tagName, guard)
+            if not (self.mode.startswith("html") and node.tagName in HTML_OPTIONAL_END_TAGS):
+                yield ir.TextNode(f"</{node.tagName}>", guard)
         elif node.tagName in HTML_REQUIRED_END_TAGS:
-            yield ir.TextNode("></%s>" % node.tagName, guard)
+            yield ir.TextNode(f"></{node.tagName}>", guard)
         elif self.mode.startswith("html"):
             if node.tagName in HTML_OPTIONAL_END_TAGS:
                 yield ir.TextNode(">", guard)
             else:
-                yield ir.TextNode("></%s>" % node.tagName, guard)
+                yield ir.TextNode(f"></{node.tagName}>", guard)
         else:
             yield ir.TextNode("/>", guard)
 
@@ -381,8 +370,7 @@ 

Source code for kajiki.xml_template

         self.is_child = True
         href = node.getAttribute("href")
         yield ir.ExtendNode(href)
-        for x in self._compile_nop(node):
-            yield x
+        yield from self._compile_nop(node)
 
     @annotate
     def _compile_include(self, node):
@@ -405,7 +393,7 @@ 

Source code for kajiki.xml_template

         self.functions[decl] = body
         if self.is_child:
             parent_block = "parent." + fname
-            body.insert(0, ir.PythonNode(ir.TextNode("parent_block=%s" % parent_block)))
+            body.insert(0, ir.PythonNode(ir.TextNode(f"parent_block={parent_block}")))
         else:
             yield ir.ExprNode(decl)
 
@@ -431,11 +419,7 @@ 

Source code for kajiki.xml_template

             defn = "$caller(" + node.childNodes[0].getAttribute("args") + ")"
         else:
             defn = "$caller()"
-        yield ir.CallNode(
-            defn,
-            node.getAttribute("function").replace("%caller", "$caller"),
-            *self._compile_nop(node)
-        )
+        yield ir.CallNode(defn, node.getAttribute("function").replace("%caller", "$caller"), *self._compile_nop(node))
 
     @annotate
     def _compile_text(self, node):
@@ -445,17 +429,14 @@ 

Source code for kajiki.xml_template

             # script and style should always be untranslatable.
             kwargs["node_type"] = ir.TextNode
 
-        tc = _TextCompiler(
-            self.filename, node.data, node.lineno, compiler_instance=self, **kwargs
-        )
-        for x in tc:
-            yield x
+        tc = _TextCompiler(self.filename, node.data, node.lineno, compiler_instance=self, **kwargs)
+        yield from tc
 
     @annotate
     def _compile_comment(self, node):
         """Convert comments to their intermediate representation."""
         if not node.data.startswith("!"):
-            yield ir.TextNode("<!-- %s -->" % node.data)
+            yield ir.TextNode(f"<!-- {node.data} -->")
 
     @annotate
     def _compile_for(self, node):
@@ -477,9 +458,9 @@ 

Source code for kajiki.xml_template

             if isinstance(n, ir.TextNode) and not n.text.strip():
                 continue
             elif not isinstance(n, (ir.CaseNode, ir.ElseNode)):
+                msg = "py:switch directive can only contain py:case and py:else nodes " "and cannot be placed on a tag."
                 raise XMLTemplateCompileError(
-                    "py:switch directive can only contain py:case and py:else nodes "
-                    "and cannot be placed on a tag.",
+                    msg,
                     doc=self.doc,
                     filename=self.filename,
                     linen=node.lineno,
@@ -506,9 +487,12 @@ 

Source code for kajiki.xml_template

             and not node.parentNode.hasAttribute("py:switch")
             and getattr(node.previousSibling, "tagName", "") != "py:if"
         ):
-            raise XMLTemplateCompileError(
+            msg = (
                 "py:else directive must be inside a py:switch or directly after py:if "
-                "without text or spaces in between",
+                "without text or spaces in between"
+            )
+            raise XMLTemplateCompileError(
+                msg,
                 doc=self.doc,
                 filename=self.filename,
                 linen=node.lineno,
@@ -519,8 +503,7 @@ 

Source code for kajiki.xml_template

     @annotate
     def _compile_nop(self, node):
         for c in node.childNodes:
-            for x in self._compile_node(c):
-                yield x
+ yield from self._compile_node(c)
@@ -547,7 +530,7 @@

Source code for kajiki.xml_template

         source,
         lineno,
         node_type=make_text_node,
-        in_html_attr=False,
+        in_html_attr=False,  # noqa: FBT002
         compiler_instance=None,
     ):
         self.filename = filename
@@ -624,40 +607,38 @@ 

Source code for kajiki.xml_template

         except SyntaxError as se:
             end = sum(
                 [self.pos, se.offset]
-                + [
-                    len(line) + 1
-                    for idx, line in enumerate(py_expr().splitlines())
-                    if idx < se.lineno - 1
-                ]
+                + [len(line) + 1 for idx, line in enumerate(py_expr().splitlines()) if idx < se.lineno - 1]
             )
             if py_expr(end)[-1] != "}":
                 # for example unclosed strings
+                msg = f"Kajiki can't compile the python expression `{py_expr()[:-1]}`"
                 raise XMLTemplateCompileError(
-                    "Kajiki can't compile the python expression `%s`" % py_expr()[:-1],
+                    msg,
                     doc=self.doc,
                     filename=self.filename,
                     linen=self.lineno,
-                )
-            else:
-                # if the expression ends in a } then it may be valid
-                try:
-                    compile(py_expr(end - 1), "check_validity", "eval")
-                except SyntaxError:
-                    # for example + operators with a single operand
-                    raise XMLTemplateCompileError(
-                        "Kajiki detected an invalid python expression `%s`"
-                        % py_expr()[:-1],
-                        doc=self.doc,
-                        filename=self.filename,
-                        linen=self.lineno,
-                    )
+                ) from None
+
+            # if the expression ends in a } then it may be valid
+            try:
+                compile(py_expr(end - 1), "check_validity", "eval")
+            except SyntaxError:
+                # for example + operators with a single operand
+                msg = f"Kajiki detected an invalid python expression `{py_expr()[:-1]}`"
+                raise XMLTemplateCompileError(
+                    msg,
+                    doc=self.doc,
+                    filename=self.filename,
+                    linen=self.lineno,
+                ) from None
 
             py_text = py_expr(end - 1)
             self.pos = end
             return self.expr(py_text)
         else:
+            msg = "Braced expression not terminated"
             raise XMLTemplateCompileError(
-                "Braced expression not terminated",
+                msg,
                 doc=self.doc,
                 filename=self.filename,
                 linen=self.lineno,
@@ -691,12 +672,13 @@ 

Source code for kajiki.xml_template

         """
         sax.ContentHandler.__init__(self)
         if not isinstance(source, str):
-            raise TypeError("The template source must be a unicode string.")
+            msg = "The template source must be a unicode string."
+            raise TypeError(msg)
         self._els = []
         self._doc = dom.Document()
         self._filename = filename
         # Store the original DTD in the document for the compiler to use later
-        self._doc._dtd, position, source = extract_dtd(source)
+        self._doc._dtd, position, source = extract_dtd(source)  # noqa: SLF001
         # Use our own DTD just for XML parsing
         self._source = source[:position] + self.DTD + source[position:]
         self._cdata_stack = []
@@ -705,50 +687,41 @@ 

Source code for kajiki.xml_template

 [docs]
     def parse(self):
         """Parse an XML/HTML document to its DOM representation."""
-        self._parser = parser = sax.make_parser()
+        self._parser = parser = sax.make_parser()  # noqa: S317
         parser.setFeature(sax.handler.feature_external_pes, False)
         parser.setFeature(sax.handler.feature_external_ges, False)
         parser.setFeature(sax.handler.feature_namespaces, False)
         parser.setProperty(sax.handler.property_lexical_handler, self)
         parser.setContentHandler(self)
         source = sax.xmlreader.InputSource()
-        # Sweet XMLReader.parse() documentation says:
-        # "As a limitation, the current implementation only accepts byte
-        # streams; processing of character streams is for further study."
-        # So if source is unicode, we pre-encode it:
-        # TODO Is this dance really necessary? Can't I just call a function?
-        byts = self._source.encode("utf-8")
-        source.setEncoding("utf-8")
-        source.setByteStream(io.BytesIO(byts))
+        source.setCharacterStream(io.StringIO(self._source))
         source.setSystemId(self._filename)
 
         try:
             parser.parse(source)
         except SAXParseException as e:
-            exc = XMLTemplateParseError(
+            raise XMLTemplateParseError(
                 e.getMessage(),
                 self._source,
                 self._filename,
                 e.getLineNumber(),
                 e.getColumnNumber(),
-            )
-            exc.__cause__ = None
-            raise exc
+            ) from None
 
-        self._doc._source = self._source
+        self._doc._source = self._source  # noqa: SLF001
         return self._doc
# ContentHandler implementation
[docs] - def startDocument(self): + def startDocument(self): # noqa: N802 self._els.append(self._doc)
[docs] - def startElement(self, name, attrs): + def startElement(self, name, attrs): # noqa: N802 el = self._doc.createElement(name) el.lineno = self._parser.getLineNumber() for k, v in attrs.items(): @@ -759,9 +732,9 @@

Source code for kajiki.xml_template

 
 
[docs] - def endElement(self, name): + def endElement(self, name): # noqa: N802 popped = self._els.pop() - assert name == popped.tagName
+ assert name == popped.tagName # noqa: S101
@@ -778,7 +751,7 @@

Source code for kajiki.xml_template

 
 
[docs] - def processingInstruction(self, target, data): + def processingInstruction(self, target, data): # noqa: N802 node = self._doc.createProcessingInstruction(target, data) node.lineno = self._parser.getLineNumber() self._els[-1].appendChild(node)
@@ -786,7 +759,7 @@

Source code for kajiki.xml_template

 
 
[docs] - def skippedEntity(self, name): + def skippedEntity(self, name): # noqa: N802 # Deals with an HTML entity such as &nbsp; (XML itself defines # very few entities.) @@ -806,26 +779,30 @@

Source code for kajiki.xml_template

 
 
[docs] - def startElementNS(self, name, qname, attrs): # pragma no cover - raise NotImplementedError("startElementNS")
+ @abc.abstractmethod + def startElementNS(self, name, qname, attrs): # noqa: N802 + pass
[docs] - def endElementNS(self, name, qname): # pragma no cover - raise NotImplementedError("startElementNS")
+ @abc.abstractmethod + def endElementNS(self, name, qname): # noqa: N802 + pass
[docs] - def startPrefixMapping(self, prefix, uri): # pragma no cover - raise NotImplementedError("startPrefixMapping")
+ @abc.abstractmethod + def startPrefixMapping(self, prefix, uri): # noqa: N802 + pass
[docs] - def endPrefixMapping(self, prefix): # pragma no cover - raise NotImplementedError("endPrefixMapping")
+ @abc.abstractmethod + def endPrefixMapping(self, prefix): # noqa: N802 + pass
# LexicalHandler implementation @@ -834,24 +811,24 @@

Source code for kajiki.xml_template

         node.lineno = self._parser.getLineNumber()
         self._els[-1].appendChild(node)
 
-    def startCDATA(self):
+    def startCDATA(self):  # noqa: N802
         node = self._doc.createTextNode("<![CDATA[")
-        node._cdata = True
+        node._cdata = True  # noqa: SLF001
         node.lineno = self._parser.getLineNumber()
         self._els[-1].appendChild(node)
         self._cdata_stack.append(self._els[-1])
 
-    def endCDATA(self):
+    def endCDATA(self):  # noqa: N802
         node = self._doc.createTextNode("]]>")
-        node._cdata = True
+        node._cdata = True  # noqa: SLF001
         node.lineno = self._parser.getLineNumber()
         self._els[-1].appendChild(node)
         self._cdata_stack.pop()
 
-    def startDTD(self, name, pubid, sysid):
+    def startDTD(self, name, pubid, sysid):  # noqa: N802
         self._doc.doctype = impl.createDocumentType(name, pubid, sysid)
 
-    def endDTD(self):
+    def endDTD(self):  # noqa: N802
         pass
@@ -871,7 +848,7 @@

Source code for kajiki.xml_template

     The Transformer mutates the original document.
     """
 
-    def __init__(self, doc, strip_text=True):
+    def __init__(self, doc, strip_text=True):  # noqa: FBT002
         self._transformed = False
         self.doc = doc
         self._strip_text = strip_text
@@ -967,9 +944,7 @@ 

Source code for kajiki.xml_template

                         empty_text_len = len(child.data) - len(rstripped_data)
                         empty_text = child.data[-empty_text_len:]
                         end_node = child.ownerDocument.createTextNode(empty_text)
-                        end_node.lineno = child.lineno + child.data[
-                            :-empty_text_len
-                        ].count("\n")
+                        end_node.lineno = child.lineno + child.data[:-empty_text_len].count("\n")
                         end_node.escaped = child.escaped
                         tree.replaceChild(newChild=end_node, oldChild=child)
                         tree.insertBefore(newChild=child, refChild=end_node)
@@ -987,9 +962,7 @@ 

Source code for kajiki.xml_template

                     # Move lineno forward the amount of lines we are
                     # going to strip.
                     lstripped_data = child.data.lstrip()
-                    child.lineno += child.data[
-                        : len(child.data) - len(lstripped_data)
-                    ].count("\n")
+                    child.lineno += child.data[: len(child.data) - len(lstripped_data)].count("\n")
                     child.data = child.data.strip()
             else:
                 cls._strip_text_nodes(child)
@@ -1021,9 +994,7 @@ 

Source code for kajiki.xml_template

         if not isinstance(getattr(tree, "tagName", None), str):
             return tree
         if tree.tagName in QDIRECTIVES_DICT:
-            tree.setAttribute(
-                tree.tagName, tree.getAttribute(QDIRECTIVES_DICT[tree.tagName])
-            )
+            tree.setAttribute(tree.tagName, tree.getAttribute(QDIRECTIVES_DICT[tree.tagName]))
             tree.tagName = "py:nop"
         if tree.tagName != "py:nop" and tree.hasAttribute("py:extends"):
             value = tree.getAttribute("py:extends")
diff --git a/runtime.html b/runtime.html
index 942dd42..b9ee850 100644
--- a/runtime.html
+++ b/runtime.html
@@ -81,13 +81,14 @@
 
class Example:
     @kajiki.expose
     def __main__():
-        yield 'Hi'
+        yield "Hi"
+
 
 t = kajiki.Template(Example)
 output = t().render()
 
 print(output)
-'Hi'
+"Hi"
 
@@ -187,7 +188,7 @@
-endElementNS(name, qname)[source]
+abstract endElementNS(name, qname)[source]

Signals the end of an element in namespace mode.

The name parameter contains the name of the element type, just as with the startElementNS event.

@@ -195,7 +196,7 @@
-endPrefixMapping(prefix)[source]
+abstract endPrefixMapping(prefix)[source]

End the scope of a prefix-URI mapping.

See startPrefixMapping for details. This event will always occur after the corresponding endElement event, but the order @@ -255,7 +256,7 @@

-startElementNS(name, qname, attrs)[source]
+abstract startElementNS(name, qname, attrs)[source]

Signals the start of an element in namespace mode.

The name parameter contains the name of the element type as a (uri, localname) tuple, the qname parameter the raw XML 1.0 @@ -268,7 +269,7 @@

-startPrefixMapping(prefix, uri)[source]
+abstract startPrefixMapping(prefix, uri)[source]

Begin the scope of a prefix-URI Namespace mapping.

The information from this event is not necessary for normal Namespace processing: the SAX XML reader will automatically diff --git a/searchindex.js b/searchindex.js index ecc3a9d..611ea55 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"%call": [[7, "call"]], "%def": [[7, "def"]], "%for": [[7, "for"]], "%if, %else": [[7, "if-else"]], "%import": [[7, "import"]], "%include": [[7, "include"]], "%switch, %case, %else": [[7, "switch-case-else"]], "0.3 (2010-10-10)": [[0, "id28"]], "0.3.1 (2010-11-24)": [[0, "id27"]], "0.3.2 (2010-11-26)": [[0, "id26"]], "0.3.4 (2011-06-01)": [[0, "id25"]], "0.3.5 (2012-05-07)": [[0, "id24"]], "0.4.0 (2013-07-29)": [[0, "id23"]], "0.4.2 (2013-08-01)": [[0, "id22"]], "0.4.3 (2013-08-12)": [[0, "id21"]], "0.4.4 (2013-09-07)": [[0, "id20"]], "0.5.0 (2015-07-25)": [[0, "id19"]], "0.5.1 (2015-07-26)": [[0, "id18"]], "0.5.2 (2015-10-13)": [[0, "id17"]], "0.5.3 (2016-01-25)": [[0, "id16"]], "0.5.4 (2016-06-04)": [[0, "id15"]], "0.5.5 (2016-06-08)": [[0, "id14"]], "0.6.0 (2016-11-27)": [[0, "id13"]], "0.6.1 (2016-11-28)": [[0, "id12"]], "0.6.3 (2017-05-25)": [[0, "id11"]], "0.7.0 (2017-06-27)": [[0, "id10"]], "0.7.1 (2017-09-11)": [[0, "id9"]], "0.7.2 (2018-04-16)": [[0, "id8"]], "0.8.0 (2019-06-03)": [[0, "id7"]], "0.8.1 (2019-10-20)": [[0, "id6"]], "0.8.2 (2019-11-26)": [[0, "id5"]], "0.8.3 (2021-06-18)": [[0, "id4"]], "0.9.0 (2021-11-29)": [[0, "id3"]], "0.9.1 (2022-04-20)": [[0, "id2"]], "0.9.2 (2022-11-24)": [[0, "id1"]], "Basic Expressions": [[5, "basic-expressions"], [7, "basic-expressions"], [8, "basic-expressions"]], "Basics": [[2, "basics"]], "Built-in Functions and Variables": [[6, "built-in-functions-and-variables"]], "Built-in functions": [[8, "built-in-functions"]], "CHANGES": [[0, null]], "Code Blocks": [[6, "code-blocks"]], "Command Line Interface": [[1, null]], "Content Generation": [[8, "content-generation"]], "Control Flow": [[5, "control-flow"], [7, "control-flow"], [8, "control-flow"]], "Documentation contents": [[3, "documentation-contents"]], "Escaping": [[6, "escaping"]], "Example": [[3, "example"]], "Example Migration": [[4, "example-migration"]], "Extending the Load Path": [[1, "extending-the-load-path"]], "Extraction": [[2, "extraction"]], "Functions and Imports": [[5, "functions-and-imports"]], "Includes": [[5, "includes"]], "Indices and tables": [[3, "indices-and-tables"]], "Inheritance": [[5, "inheritance"]], "Inheritance (%extends, %block)": [[7, "inheritance-extends-block"]], "Inheritance (py:extends, py:block)": [[8, "inheritance-py-extends-py-block"]], "Internationalization": [[2, null]], "Kajiki Runtime": [[5, null]], "Kajiki Templating Basics": [[6, null]], "Kajiki Text Templates": [[7, null]], "Kajiki XML Templates": [[8, null]], "Kajiki provides fast well-formed XML templates": [[3, "kajiki-provides-fast-well-formed-xml-templates"]], "Kajiki: Fast Templates for Python": [[3, null]], "Links": [[3, "links"]], "Migrating from Genshi": [[4, null]], "Output Modes": [[8, "output-modes"]], "Python API": [[6, "python-api"]], "Python Blocks": [[5, "python-blocks"]], "Setting Template Variables": [[1, "setting-template-variables"]], "Specifying Mode": [[1, "specifying-mode"]], "Summary of Directives": [[8, "summary-of-directives"]], "Synopsis": [[6, "synopsis"]], "Template Directives": [[6, "template-directives"]], "Template Expressions and Code Blocks": [[6, "template-expressions-and-code-blocks"]], "Tips on writing your templates": [[8, "tips-on-writing-your-templates"]], "Usage": [[1, "usage"]], "defined(name)": [[8, "defined-name"]], "literal(text)": [[8, "literal-text"]], "py:attrs": [[8, "py-attrs"]], "py:call": [[8, "py-call"]], "py:content": [[8, "py-content"]], "py:def": [[8, "py-def"]], "py:for": [[8, "py-for"]], "py:if, py:else": [[8, "py-if-py-else"]], "py:import": [[8, "py-import"]], "py:include": [[8, "py-include"]], "py:replace": [[8, "py-replace"]], "py:strip": [[8, "py-strip"]], "py:switch, py:case, py:else": [[8, "py-switch-py-case-py-else"]], "py:with": [[8, "py-with"]], "value_of(name, default=None)": [[8, "value-of-name-default-none"]]}, "docnames": ["changes", "cli", "i18n", "index", "migrating_from_genshi", "runtime", "templating-basics", "text-templates", "xml-templates"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["changes.rst", "cli.rst", "i18n.rst", "index.rst", "migrating_from_genshi.rst", "runtime.rst", "templating-basics.rst", "text-templates.rst", "xml-templates.rst"], "indexentries": {"_compiler (class in kajiki.xml_template)": [[5, "kajiki.xml_template._Compiler", false]], "_domtransformer (class in kajiki.xml_template)": [[5, "kajiki.xml_template._DomTransformer", false]], "_parser (class in kajiki.xml_template)": [[5, "kajiki.xml_template._Parser", false]], "_template (class in kajiki.template)": [[5, "kajiki.template._Template", false]], "built-in function": [[6, "literal", false]], "characters() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.characters", false]], "child (built-in variable)": [[6, "child", false]], "compile() (kajiki.xml_template._compiler method)": [[5, "kajiki.xml_template._Compiler.compile", false]], "defined() (kajiki.template._template method)": [[5, "kajiki.template._Template.defined", false]], "endelement() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.endElement", false]], "endelementns() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.endElementNS", false]], "endprefixmapping() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.endPrefixMapping", false]], "kajiki": [[5, "module-kajiki", false]], "literal()": [[6, "literal", false]], "local (built-in variable)": [[6, "local", false]], "module": [[5, "module-kajiki", false]], "parent (built-in variable)": [[6, "parent", false]], "parse() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.parse", false]], "processinginstruction() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.processingInstruction", false]], "render() (kajiki.template._template method)": [[5, "kajiki.template._Template.render", false]], "self (built-in variable)": [[6, "self", false]], "skippedentity() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.skippedEntity", false]], "startdocument() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startDocument", false]], "startelement() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startElement", false]], "startelementns() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startElementNS", false]], "startprefixmapping() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startPrefixMapping", false]], "template() (kajiki.template method)": [[5, "kajiki.template.Template", false]], "templatenode (class in kajiki.ir)": [[5, "kajiki.ir.TemplateNode", false]], "transform() (kajiki.xml_template._domtransformer method)": [[5, "kajiki.xml_template._DomTransformer.transform", false]], "xmltemplate() (kajiki.xml_template method)": [[5, "kajiki.xml_template.XMLTemplate", false]]}, "objects": {"": [[6, 0, 1, "", "child"], [5, 1, 0, "-", "kajiki"], [6, 4, 1, "", "literal"], [6, 0, 1, "", "local"], [6, 0, 1, "", "parent"], [6, 0, 1, "", "self"]], "kajiki.ir": [[5, 2, 1, "", "TemplateNode"]], "kajiki.template": [[5, 3, 1, "", "Template"], [5, 2, 1, "", "_Template"]], "kajiki.template._Template": [[5, 3, 1, "", "defined"], [5, 3, 1, "", "render"]], "kajiki.xml_template": [[5, 3, 1, "", "XMLTemplate"], [5, 2, 1, "", "_Compiler"], [5, 2, 1, "", "_DomTransformer"], [5, 2, 1, "", "_Parser"]], "kajiki.xml_template._Compiler": [[5, 3, 1, "", "compile"]], "kajiki.xml_template._DomTransformer": [[5, 3, 1, "", "transform"]], "kajiki.xml_template._Parser": [[5, 3, 1, "", "characters"], [5, 3, 1, "", "endElement"], [5, 3, 1, "", "endElementNS"], [5, 3, 1, "", "endPrefixMapping"], [5, 3, 1, "", "parse"], [5, 3, 1, "", "processingInstruction"], [5, 3, 1, "", "skippedEntity"], [5, 3, 1, "", "startDocument"], [5, 3, 1, "", "startElement"], [5, 3, 1, "", "startElementNS"], [5, 3, 1, "", "startPrefixMapping"]]}, "objnames": {"0": ["py", "data", "Python data"], "1": ["py", "module", "Python module"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:data", "1": "py:module", "2": "py:class", "3": "py:method", "4": "py:function"}, "terms": {"": [3, 4, 5, 6, 7, 8], "0": [3, 4, 5, 6, 7, 8], "00": [7, 8], "01": 3, "03": 3, "04": 3, "05": 3, "06": 3, "07": 3, "08": 3, "09": 3, "1": [3, 4, 5, 7, 8], "10": [3, 5], "11": 3, "12": 3, "13": 3, "16": 3, "18": 3, "1999": 4, "2": [3, 4, 5, 7, 8], "20": 3, "2001": 4, "2007": 4, "2010": 3, "2011": 3, "2012": 3, "2013": 3, "2015": 3, "2016": 3, "2017": 3, "2018": 3, "2019": 3, "2021": 3, "2022": 3, "24": 3, "25": 3, "26": 3, "27": 3, "28": 3, "29": 3, "3": [3, 5, 7, 8], "4": [3, 5, 7, 8], "5": [3, 5, 7, 8], "6": 3, "7": 3, "8": [3, 4, 5], "9": 3, "9223372036854775807": 6, "A": [5, 6], "And": [1, 3, 5, 7, 8], "As": [0, 5, 6, 8], "But": [3, 4, 8], "By": [1, 3, 5, 7, 8], "For": [1, 2, 4, 5, 6, 7, 8], "If": [1, 2, 5, 6, 7, 8], "In": [0, 2, 4, 5, 6, 7, 8], "It": [5, 7, 8], "One": [1, 8], "The": [0, 3, 4, 5, 6, 7, 8], "Then": [4, 7, 8], "There": [0, 5], "These": 6, "To": [1, 2, 5, 6], "With": [7, 8], "_": 2, "__call__": 5, "__kj__": 5, "__main__": 5, "_compil": [3, 5], "_domtransform": [3, 5], "_fpt": 5, "_fpt_block_bodi": 5, "_fpt_lambda": 5, "_parser": [3, 5], "_templat": [3, 5], "abl": 1, "about": [1, 4], "abov": [1, 4, 5, 6, 8], "accept": 0, "access": [6, 7, 8], "accomplish": 6, "accord": 0, "achiev": 5, "action": [0, 5], "activ": 4, "actual": [0, 2, 5, 6], "ad": [0, 1], "add": [0, 1, 2, 4], "addit": [4, 7, 8], "addsitedir": 1, "admin": 4, "advantag": 6, "affect": [5, 7, 8], "after": [4, 5], "albatross": 8, "alia": 8, "alias": 2, "all": [0, 2, 4, 5, 6, 8], "allow": [0, 5, 8], "along": 6, "alow0": 5, "alpha": 0, "alphabet": 0, "also": [0, 1, 2, 3, 4, 5, 6, 7, 8], "alter": 5, "altern": [5, 7, 8], "although": 8, "alwai": [0, 5, 7, 8], "amount": 5, "an": [0, 2, 3, 4, 5, 6, 7, 8], "ani": [2, 4, 5, 6, 7, 8], "anoth": [5, 7, 8], "anymor": 0, "anyth": 0, "apart": 0, "api": 3, "app": 4, "appear": [7, 8], "appl": 6, "appli": 5, "applic": [4, 5], "approach": 2, "ar": [0, 1, 3, 4, 5, 6, 7, 8], "architectur": 4, "area": 6, "arg": [7, 8], "argument": 6, "aspect": 6, "assign": 8, "assum": [1, 5, 7, 8], "attach": 8, "attack": 8, "attr": [0, 4, 5], "attribut": [0, 3, 4, 5, 6, 8], "auth": 4, "auth_stack_en": 4, "authent": 4, "auto": 1, "autoblock": [0, 5], "autoescap": 0, "automat": [0, 1, 2, 5], "avail": [5, 6, 7, 8], "avoid": 8, "awar": 6, "awesom": 3, "b": 6, "babel": [0, 2], "backslash": [5, 7], "banana": 6, "bar": [7, 8], "barrier": 0, "base": [0, 1, 3, 4, 5, 6, 7, 8], "base_glob": [0, 5], "basic": 3, "baz": [7, 8], "beauti": 3, "becaus": [3, 5, 8], "becom": [3, 4, 6], "befor": [0, 2, 5, 7, 8], "begin": [4, 5, 7, 8], "behavior": 4, "being": [0, 1, 4, 6, 7, 8], "below": [5, 7, 8], "best": [0, 3], "between": 0, "bit": 7, "blaze": 3, "block": [0, 3, 4], "bodi": [3, 4, 5, 6, 7, 8], "body_head": 4, "body_text": 4, "bodyfoot": 4, "bool": 0, "bootstrap": 4, "both": [6, 7, 8], "br": 8, "brace": [0, 6], "branch": [7, 8], "break": [0, 7], "breviti": 2, "bug": 0, "bugfix": 0, "build": 4, "built": [0, 3], "c": 6, "cach": 6, "call": [0, 1, 2, 4, 5, 6], "caller": [5, 7, 8], "can": [0, 1, 3, 4, 5, 6, 7, 8], "cannot": 5, "capabl": 8, "capit": 6, "care": 8, "case": [0, 2, 4, 5, 6], "cdata": [0, 8], "cdata_script": [0, 5], "certain": 8, "chain": [7, 8], "chameleon": 3, "chang": [3, 6], "charact": [5, 7, 8], "charset": 4, "check": [0, 5, 8], "checkbox": 8, "child": [4, 5, 6, 7, 8], "children": 8, "choos": 4, "chunk": 5, "ci": 0, "circumst": [7, 8], "clarif": 0, "class": [0, 4, 5, 6, 8], "clearingdiv": 4, "close": 0, "closer": 5, "code": [0, 3, 4, 5, 7, 8], "codebas": 0, "collect": 0, "collector": 0, "com": 4, "combin": 3, "come": [3, 5], "command": [0, 3], "comment": [0, 8], "commonli": 0, "compat": 0, "compet": 3, "compil": [3, 5, 6], "complex": 8, "concept": [5, 7, 8], "condit": 8, "consecut": 5, "consequenti": 0, "consid": [0, 1, 5, 7, 8], "consist": [4, 5], "construct": 4, "constructor": 6, "consult": 2, "contact": [1, 4], "contain": [2, 5, 6, 8], "content": [0, 4, 5, 6, 7], "context": [0, 4, 5, 6, 7, 8], "contigu": 5, "continu": 0, "contributor": 0, "control": [3, 4, 6], "control_flow": 5, "control_flow_w": 5, "control_flow_ws_short": 5, "conveni": 5, "convert": 5, "core": 0, "correct": 0, "correctli": 0, "correspond": 5, "could": [1, 7, 8], "coupl": 4, "cours": 5, "crash": 0, "creat": [0, 2, 4, 5], "cross": 8, "css": 4, "curli": 6, "current": [6, 7, 8], "currentpag": 4, "custom": [6, 8], "data": [4, 5, 8], "databas": 4, "dear": [5, 6, 7, 8], "decid": 4, "declar": [0, 5], "def": [0, 4, 5, 6], "default": [1, 4, 5, 7], "default_valu": 4, "defer": 0, "defin": [0, 4, 5, 6, 7], "del": 5, "delimit": 7, "depend": [0, 5, 6, 7, 8], "deposit": 4, "deriv": 4, "describ": [6, 7, 8], "design": [3, 4], "detail": [2, 5], "detect": [0, 1, 6, 8], "determin": 8, "develop": [3, 4], "dict": [3, 6, 7, 8], "didn": 5, "difficult": 4, "digit": 6, "direct": [3, 4, 5, 7], "directli": 6, "directori": [0, 1], "disabl": 0, "disappear": 4, "discard": 0, "displai": 8, "distribut": 4, "div": [4, 6, 8], "do": [0, 1, 5, 7], "doc": 5, "doctyp": [0, 4, 5, 8], "document": [0, 2, 4, 5, 6, 7, 8], "doe": [2, 8], "doesn": 6, "dollar": 6, "dom": 5, "don": [5, 7, 8], "done": 6, "dot": 6, "doubl": [6, 7, 8], "doubt": 5, "drop": 0, "dtd": [0, 1, 4, 5], "dtdhandler": 5, "dynam": 8, "e": [1, 4, 5, 8], "each": [0, 1, 5, 7, 8], "easier": [0, 4], "easili": 3, "easy_instal": 0, "edgewal": 4, "effect": 8, "either": [6, 7, 8], "element": [0, 5, 8], "elif": 5, "els": [0, 4, 5, 6], "elsewher": [6, 7, 8], "em": [6, 8], "email": [1, 6], "embed": [6, 7, 8], "emit": [0, 8], "empti": [0, 4, 5, 8], "en": 4, "enabl": [2, 6], "enclos": [6, 7, 8], "encod": 5, "encourag": 0, "end": [0, 4, 5, 6, 7], "endel": 5, "endelementn": 5, "endprefixmap": 5, "engin": [3, 6, 7, 8], "ensur": [0, 3], "entir": 8, "entiti": [0, 5, 8], "entri": 0, "environ": 4, "equiv": 4, "equival": 5, "error": 0, "escap": [0, 4, 5, 8], "etc": 5, "evalu": [6, 7, 8], "even": [0, 1, 5, 7, 8], "event": 5, "ever": [7, 8], "everyth": 6, "exactli": 5, "examin": 5, "exampl": [1, 5, 6, 7, 8], "excel": 2, "except": [5, 8], "execut": 5, "exist": [4, 7, 8], "expand": [5, 7, 8], "expans": [6, 7, 8], "expect": 5, "experiment": 0, "explan": 8, "explicit": [5, 7, 8], "expos": [0, 5], "express": [0, 3], "extend": [3, 4, 5, 6], "extens": [1, 4], "extent": 8, "extern": [5, 8], "extra": 4, "extract": [0, 3], "extract_python": 0, "extractor": 0, "fact": 0, "fail": 8, "fals": [0, 4, 5, 7, 8], "favorit": 6, "featur": [0, 3, 5, 7, 8], "few": 4, "file": [1, 2, 4, 5, 7, 8], "file_or_packag": 1, "fileload": [0, 7, 8], "filenam": [1, 5], "final": [3, 5, 6], "find": 2, "first": [4, 5, 6, 7, 8], "fix": 0, "flag": 1, "flash": 4, "flash_obj": 4, "flow": [3, 6], "follow": [1, 2, 4, 5, 6, 7, 8], "fond": 4, "foo": [6, 7, 8], "footer": [4, 7, 8], "forc": 6, "forget": [5, 7, 8], "form": [5, 6, 7, 8], "format": [0, 6], "formed": 6, "forum": 3, "found": [2, 5], "fragment": 8, "framework": [0, 2], "fridai": [5, 7, 8], "from": [0, 1, 2, 3, 5, 8], "from_": [7, 8], "fruit": 6, "frut": 6, "full": [6, 7, 8], "function": [0, 2, 3, 4, 7], "further": 2, "g": [4, 5], "gener": [0, 3, 4, 5, 6, 7], "genshi": [0, 3, 8], "get": 6, "gettext": [0, 2, 5], "getting_start": 4, "getting_started_step": 4, "giant": 4, "gift": [5, 7, 8], "git": 3, "github": [0, 3], "give": [0, 6, 7, 8], "given": [1, 5, 8], "global": [0, 5, 6, 8], "goal": 6, "goe": [2, 4], "good": [5, 7, 8], "googl": 4, "greet": [5, 7, 8], "group": 4, "guarante": [5, 8], "h": 6, "h1": [3, 4, 6, 8], "h2": [4, 8], "h3": [4, 8], "h6": 8, "ha": [0, 5, 8], "had": 5, "hand": 6, "have": [4, 5, 6, 7, 8], "head": [3, 4, 6, 8], "head_cont": 4, "header": [4, 7, 8], "hello": [2, 5, 6, 7, 8], "hello_arithmet": 5, "hello_nam": 5, "help": 7, "helper": 4, "here": [4, 5, 6, 8], "hg": 3, "hi": 5, "hierarchi": [6, 7, 8], "high": 5, "high4": 5, "hold": 5, "how": [7, 8], "howev": [2, 5, 8], "href": [1, 4, 8], "html": [0, 1, 2, 3, 4, 5, 6, 8], "html5": [1, 5], "http": [4, 5], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8], "i18n": [0, 2], "id": [4, 7, 8], "idea": 3, "ident": 4, "identifi": [5, 7, 8], "ie": 0, "ignor": [0, 3, 5], "illeg": 8, "illustr": [5, 7, 8], "import": [0, 2, 3, 4, 6], "import_": [5, 6, 7, 8], "import_test": 5, "improv": 0, "includ": [0, 1, 2, 3, 4, 6], "include_exampl": 5, "inclus": 8, "indent": 5, "index": [1, 3, 4], "index_kajiki": 4, "indic": 4, "indirectli": 6, "infer": 1, "inform": [5, 6, 7, 8], "infrastructur": 2, "inherit": [3, 6], "initi": 5, "input": [0, 3, 8], "ins": 8, "insert": [0, 5, 7, 8], "insid": [0, 5, 8], "inspect": 8, "instanc": [2, 4, 5, 6, 7, 8], "instanti": 6, "instead": [0, 1, 3, 8], "instruct": [5, 6], "integr": [0, 1, 2], "intend": 4, "interfac": [0, 3, 5], "intermedi": 5, "internation": 3, "introduct": 4, "invok": 5, "ir": 5, "is_frag": [5, 8], "ismap": 0, "isn": 5, "issu": 3, "item": [6, 7, 8], "iter": [5, 6, 7, 8], "its": [0, 5, 6, 7, 8], "itself": [0, 5, 7, 8], "javascript": 4, "jinja": 3, "jinja2": 4, "join": 6, "jqueri": 0, "just": [0, 5, 7, 8], "kajiki": [0, 1, 2, 4], "kajki": 6, "keep": [0, 5], "kei": 1, "kiwi": 6, "know": 8, "knowledg": 6, "lambda": [7, 8], "languag": [5, 6, 7, 8], "last": [0, 5, 6, 7, 8], "layout": 4, "lead": [0, 5], "least": 5, "let": [5, 7, 8], "letter": 6, "level": [2, 4, 5, 6, 7, 8], "li": [3, 4, 6, 8], "lib": [7, 8], "librari": 0, "licens": 3, "life": 4, "like": [1, 3, 5, 6], "likewis": [4, 7, 8], "line": [0, 3, 5, 6, 7], "link": 4, "list": 8, "liter": [4, 5, 6, 7], "lnotab": 0, "loader": [0, 1, 6, 7, 8], "local": [2, 5, 6, 7, 8], "localiz": 2, "localnam": 5, "locat": [2, 5], "login": 4, "loginlogout": 4, "logout": 4, "logout_handl": 4, "long": 5, "longer": 0, "look": [0, 6], "lot": 2, "low": 5, "low0": 5, "low1": 5, "lower": 0, "lurk": 4, "m": 1, "made": 6, "mai": [1, 4, 5, 6, 8], "main": [1, 5, 6], "main_cont": 4, "mainmenu": 4, "make": [0, 4, 5, 7, 8], "makefil": 1, "mako": 3, "malici": 8, "manag": 7, "mani": 8, "map": 5, "mark": [4, 5, 7, 8], "markup": [0, 4, 5, 6, 7, 8], "master": 4, "match": [3, 4, 7, 8], "maxint": 6, "maxsiz": 6, "me": [5, 7, 8], "mean": 8, "media": 4, "mental": 5, "mention": 0, "messag": [0, 2], "meta": 4, "method": [4, 5, 6, 7, 8], "mid": [5, 7, 8], "mid2": 5, "mid3": 5, "might": [2, 5, 7, 8], "migrat": [0, 3], "mimic": 4, "minifi": 0, "misfeatur": 3, "mit": 3, "ml": 6, "mockload": [7, 8], "mod_pi": 5, "mode": [0, 3, 5, 6], "model": [4, 5], "modifi": 4, "modul": [0, 2, 3, 4, 5, 6], "module_py_block": 5, "monei": [5, 7, 8], "more": [3, 5, 6, 7, 8], "most": [3, 6, 7, 8], "move": 0, "multilin": 0, "multipl": [0, 1, 7, 8], "must": [0, 2, 5, 6, 7, 8], "mutat": 5, "my": [4, 5, 6], "my_funct": [7, 8], "n": [5, 7, 8], "name": [0, 1, 4, 5, 6, 7], "name_of_the_variable_containing_the_html": 8, "nameerror": [6, 8], "namespac": [5, 6], "nbsp": 8, "nearli": 4, "necessari": [5, 8], "necessarili": 7, "need": [0, 1, 5, 6, 7, 8], "neither": 7, "nest": 5, "never": [5, 7], "nevermor": [5, 7, 8], "new": 5, "newli": 5, "newlin": [5, 7], "next": 5, "nine": 0, "node": [0, 5], "nohref": 0, "nois": 2, "non": [0, 5, 6], "none": [0, 5], "normal": [5, 6, 7, 8], "note": [4, 5, 7, 8], "noth": 5, "notic": [4, 7, 8], "notif": 5, "notifi": 2, "now": [0, 1, 4, 7, 8], "o": [5, 6], "object": 5, "obtain": 6, "occur": 5, "odd": [5, 7, 8], "off": 0, "offer": 8, "ol": 4, "omit": [0, 6, 8], "onc": [4, 5], "one": [1, 3, 4, 5, 6, 7, 8], "onli": [0, 4, 5, 6, 7, 8], "onto": 8, "open": 8, "option": [0, 1, 8], "orang": 6, "order": [0, 2, 4, 5, 6, 8], "org": [4, 5], "orient": 5, "origin": 5, "other": [0, 2, 3, 5, 6], "otherwis": [4, 5], "our": 4, "out": [0, 3], "output": [0, 1, 3, 4, 5, 6, 7], "output_fil": 1, "outsid": 2, "over": [5, 6], "overrid": [1, 4, 7, 8], "overridden": [4, 7, 8], "ow": [5, 7, 8], "own": [7, 8], "p": [0, 1, 2, 4, 6, 8], "packag": [0, 1, 5, 6], "package1": [7, 8], "package2": [7, 8], "packageload": [6, 7, 8], "page": [1, 3, 4, 8], "pair": 8, "paragraph": 0, "param": 8, "paramet": [5, 7, 8], "parent": [4, 5, 6, 7, 8], "parent_block": [4, 5, 7, 8], "pars": [0, 5, 6, 7, 8], "parser": 5, "part": [4, 5], "particular": [4, 5], "pass": [1, 5, 7, 8], "path": [0, 6, 7, 8], "pattern": 6, "pear": 6, "pep8": 0, "percent": 6, "perform": [0, 3, 4, 7, 8], "perhap": [7, 8], "period": [5, 7, 8], "persist": 5, "pick": [5, 7, 8], "pip": 0, "place": [2, 4, 7, 8], "placehold": 2, "plain": 6, "pleas": [2, 6, 7, 8], "plugin": 0, "pop_switch": 5, "possibl": 8, "possibli": 6, "pot": 2, "practic": 0, "precis": [7, 8], "prefer": 4, "prefix": [5, 6, 7, 8], "present": 4, "preserv": [0, 8], "prevent": 5, "previous": 3, "price": [7, 8], "print": [3, 5, 6, 7, 8], "probabl": [4, 5], "process": [1, 2, 5, 6], "processinginstruct": 5, "processor": 5, "produc": 6, "program": 4, "project": [2, 3, 4], "proper": 6, "properli": [0, 5], "properti": 5, "provid": [0, 2, 4, 5, 6, 7, 8], "public": 4, "pull": 5, "purpos": 8, "push_switch": 5, "py": [0, 1, 2, 3, 4, 5, 6], "py_text": 5, "pypi": 0, "pyramid": 0, "pytest": 0, "python": [0, 2, 7, 8], "python2": 0, "qname": 5, "quickstart": 4, "quit": 4, "quot": [5, 7, 8], "quoth": [5, 7, 8], "rang": [3, 5, 7, 8], "rapid": 4, "raven": [5, 7, 8], "raw": 5, "re": [5, 6], "read": 4, "reader": 5, "readi": 3, "readonli": 0, "reason": 0, "receiv": 5, "recent": 6, "recogn": [4, 8], "recognis": 0, "recommend": 4, "refer": 6, "region": 4, "registri": 5, "regress": 0, "reimplement": 8, "rel": [4, 5], "releas": 0, "rememb": 8, "remov": [0, 4, 5, 7, 8], "renam": 4, "render": [1, 3, 4, 5, 6, 7, 8], "repeatedli": [7, 8], "repetit": 3, "replac": [0, 2, 3, 4, 5, 6, 7], "report": [0, 5], "repositori": 3, "repres": 5, "represent": 5, "request": 4, "requir": [0, 2, 6, 8], "result": [1, 5], "return": [4, 5, 8], "reus": 5, "rewrit": 4, "rick": [5, 6, 7, 8], "root": [0, 5], "routin": 2, "rule": 6, "run": [1, 2, 5, 6], "runner": 0, "runtim": 3, "safe": [5, 8], "same": [0, 5, 6, 7, 8], "save": [7, 8], "sax": 5, "scope": [5, 6], "screen": 4, "script": [0, 1, 2, 8], "search": 3, "second": 6, "section": [0, 5, 7, 8], "see": [0, 5, 7, 8], "seen": 5, "select": [0, 4, 8], "self": [5, 6, 7, 8], "semant": [4, 5, 7, 8], "semicolon": 0, "sentenc": 0, "separ": [0, 5, 8], "seri": 0, "serial": 8, "setdocumentloc": 5, "sever": [0, 5, 6, 7, 8], "shell": 1, "shorthand": [5, 8], "should": [1, 2, 4, 5, 6, 8], "shoulder": 4, "shown": 5, "showstopp": 0, "sidebar": 4, "sidebar_top": 4, "sign": [5, 6, 7, 8], "signal": 5, "similar": [2, 6, 8], "similarli": 4, "simpl": [1, 4, 6], "simple_funct": 5, "simple_py_block": 5, "simpli": [3, 5, 6, 7, 8], "sinc": [1, 2, 4, 8], "sincer": [5, 7, 8], "singl": [0, 5, 6], "site": [1, 8], "skip": 5, "skippedent": 5, "slightli": [4, 5], "slot": 4, "slow": 3, "snippet": 8, "so": [0, 3, 4, 5, 6, 8], "softwar": 1, "solut": 2, "some": [0, 4, 5, 6, 7, 8], "some_str": 4, "some_vari": 4, "someth": [5, 6, 7, 8], "sometim": [5, 7, 8], "soon": [0, 3], "sourc": [2, 4, 5, 6], "sourceforg": [0, 3], "space": 0, "span": [4, 8], "speaker": [5, 7, 8], "special": [5, 7, 8], "specifi": [0, 4, 5, 8], "speed": 3, "split": 5, "spuriou": 0, "squash": [0, 5], "stack": 5, "stage": 8, "stai": 3, "stand": 4, "standalon": 8, "standard": [1, 5, 8], "start": [5, 6, 7, 8], "startdocu": 5, "startel": 5, "startelementn": 5, "startprefixmap": 5, "statement": 0, "static": 4, "step": [4, 5], "stip": 0, "stori": 5, "stream": 6, "string": [0, 2, 4, 5, 6, 8], "strip": [0, 4, 5], "strip_text": [0, 5], "structur": 1, "stuff": [0, 8], "style": [0, 3, 4, 8], "stylesheet": 4, "subclass": [5, 6], "subsequ": 0, "subset": 5, "substitut": [7, 8], "succinctli": 5, "suffic": 4, "summari": 3, "suppli": 5, "support": [0, 1, 2, 4, 5, 6, 7, 8], "suppos": [1, 4, 7, 8], "surround": 0, "switch": [0, 5], "swtich": 0, "sy": [5, 6], "synonym": 8, "synopsi": 3, "syntax": [0, 3, 4, 5, 6, 7, 8], "system": 4, "sz": 8, "t": [4, 5, 6, 7, 8], "tag": [0, 2, 3, 4, 5, 6, 7, 8], "tagnam": 8, "take": [1, 8], "taken": 5, "target": 5, "teh": 3, "templat": [0, 2, 4, 5], "templateload": [7, 8], "templatenod": [3, 5], "temporarili": 8, "termin": 7, "test": [0, 1, 4, 6, 7, 8], "testabl": 0, "text": [0, 1, 2, 3, 4, 5, 6], "texttempl": [6, 7], "tg": 4, "than": 8, "thank": [4, 5, 7, 8], "thei": [5, 6, 7, 8], "them": [0, 6], "themselv": 7, "thi": [0, 1, 2, 4, 5, 6, 7, 8], "thing": 5, "those": [4, 5], "though": 4, "three": 8, "through": [0, 5, 6], "time": [1, 6, 7, 8], "tip": 3, "titl": [3, 4, 6], "too": 8, "toolkit": 4, "top": [2, 4], "tpl_text": 8, "tr": 4, "traceback": 6, "track": 5, "tracker": 3, "trail": [0, 5], "transform": 5, "transit": 4, "translat": [0, 2, 5], "translatabletextnod": 0, "travi": 0, "treat": 0, "tree": 5, "tri": 8, "tricki": 7, "true": [0, 4, 5, 7, 8], "truish": 8, "truth": 8, "truthi": [7, 8], "tune": 3, "tupl": 5, "turbogear": [0, 4], "turn": [0, 5], "twice": 5, "two": [0, 4, 6, 8], "txt": [1, 5, 7, 8], "type": [4, 5, 8], "typic": 2, "typo": 0, "u": [7, 8], "ul": [3, 4, 6, 8], "under": [0, 3], "underscor": 6, "understood": 3, "undesir": 8, "unexpect": [0, 5], "unit": 0, "unless": [0, 1], "unus": 0, "up": [0, 1, 5, 7, 8], "updat": 0, "upgrad": 0, "uri": 5, "url": 4, "us": [0, 1, 2, 3, 4, 5, 6, 7, 8], "usabl": 8, "usag": 3, "use_j": 4, "user": [0, 6, 8], "usual": [2, 4, 5], "utf": [4, 5], "v": 1, "valid": 5, "valu": [0, 1, 5, 6, 7, 8], "value_of": [0, 4], "var": [1, 4, 8], "variabl": [0, 5, 7, 8], "variou": [7, 8], "verbatim": [5, 7, 8], "verbos": 5, "version": [0, 4], "via": [1, 5, 6, 7, 8], "view": [4, 5], "w3": 4, "w3c": 4, "wa": [0, 5, 7, 8], "wai": 4, "want": [0, 1, 5, 7, 8], "we": [4, 5, 7, 8], "web": [0, 3, 4, 8], "welcom": 4, "well": [0, 2, 5, 6, 7, 8], "were": 0, "what": 5, "when": [0, 1, 4, 5, 6, 7, 8], "whenev": 6, "where": [1, 4, 5, 6, 7], "wherea": [7, 8], "wherebi": [5, 7, 8], "whether": [6, 8], "which": [3, 4, 5, 6, 8], "whitespac": [5, 7], "whole": [0, 5], "whose": 8, "wide": [3, 5], "wire": 1, "wish": [1, 5, 7, 8], "within": 5, "without": [0, 7, 8], "won": 4, "work": [0, 3, 5], "world": [2, 5, 6, 7, 8], "would": [2, 5, 6, 7, 8], "wrap": [2, 6], "write": [0, 2, 3, 7], "written": 1, "wrongli": 0, "wsgi": 4, "www": 4, "x": [0, 3, 6, 8], "xhtml": 4, "xhtml1": 4, "xi": 4, "xinclud": 4, "xml": [0, 1, 2, 4, 5, 6, 7], "xml_templat": [3, 5], "xmln": 4, "xmltemplat": [0, 3, 5, 6, 8], "yield": [4, 5], "you": [0, 1, 2, 4, 5, 6, 7, 8], "your": [1, 2, 3, 4, 5]}, "titles": ["CHANGES", "Command Line Interface", "Internationalization", "Kajiki: Fast Templates for Python", "Migrating from Genshi", "Kajiki Runtime", "Kajiki Templating Basics", "Kajiki Text Templates", "Kajiki XML Templates"], "titleterms": {"0": 0, "01": 0, "03": 0, "04": 0, "05": 0, "06": 0, "07": 0, "08": 0, "09": 0, "1": 0, "10": 0, "11": 0, "12": 0, "13": 0, "16": 0, "18": 0, "2": 0, "20": 0, "2010": 0, "2011": 0, "2012": 0, "2013": 0, "2015": 0, "2016": 0, "2017": 0, "2018": 0, "2019": 0, "2021": 0, "2022": 0, "24": 0, "25": 0, "26": 0, "27": 0, "28": 0, "29": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "api": 6, "attr": 8, "basic": [2, 5, 6, 7, 8], "block": [5, 6, 7, 8], "built": [6, 8], "call": [7, 8], "case": [7, 8], "chang": 0, "code": 6, "command": 1, "content": [3, 8], "control": [5, 7, 8], "def": [7, 8], "default": 8, "defin": 8, "direct": [6, 8], "document": 3, "els": [7, 8], "escap": 6, "exampl": [3, 4], "express": [5, 6, 7, 8], "extend": [1, 7, 8], "extract": 2, "fast": 3, "flow": [5, 7, 8], "form": 3, "from": 4, "function": [5, 6, 8], "gener": 8, "genshi": 4, "import": [5, 7, 8], "includ": [5, 7, 8], "indic": 3, "inherit": [5, 7, 8], "interfac": 1, "internation": 2, "kajiki": [3, 5, 6, 7, 8], "line": 1, "link": 3, "liter": 8, "load": 1, "migrat": 4, "mode": [1, 8], "name": 8, "none": 8, "output": 8, "path": 1, "provid": 3, "py": 8, "python": [3, 5, 6], "replac": 8, "runtim": 5, "set": 1, "specifi": 1, "strip": 8, "summari": 8, "switch": [7, 8], "synopsi": 6, "tabl": 3, "templat": [1, 3, 6, 7, 8], "text": [7, 8], "tip": 8, "usag": 1, "value_of": 8, "variabl": [1, 6], "well": 3, "write": 8, "xml": [3, 8], "your": 8}}) \ No newline at end of file +Search.setIndex({"alltitles": {"%call": [[7, "call"]], "%def": [[7, "def"]], "%for": [[7, "for"]], "%if, %else": [[7, "if-else"]], "%import": [[7, "import"]], "%include": [[7, "include"]], "%switch, %case, %else": [[7, "switch-case-else"]], "0.3 (2010-10-10)": [[0, "id28"]], "0.3.1 (2010-11-24)": [[0, "id27"]], "0.3.2 (2010-11-26)": [[0, "id26"]], "0.3.4 (2011-06-01)": [[0, "id25"]], "0.3.5 (2012-05-07)": [[0, "id24"]], "0.4.0 (2013-07-29)": [[0, "id23"]], "0.4.2 (2013-08-01)": [[0, "id22"]], "0.4.3 (2013-08-12)": [[0, "id21"]], "0.4.4 (2013-09-07)": [[0, "id20"]], "0.5.0 (2015-07-25)": [[0, "id19"]], "0.5.1 (2015-07-26)": [[0, "id18"]], "0.5.2 (2015-10-13)": [[0, "id17"]], "0.5.3 (2016-01-25)": [[0, "id16"]], "0.5.4 (2016-06-04)": [[0, "id15"]], "0.5.5 (2016-06-08)": [[0, "id14"]], "0.6.0 (2016-11-27)": [[0, "id13"]], "0.6.1 (2016-11-28)": [[0, "id12"]], "0.6.3 (2017-05-25)": [[0, "id11"]], "0.7.0 (2017-06-27)": [[0, "id10"]], "0.7.1 (2017-09-11)": [[0, "id9"]], "0.7.2 (2018-04-16)": [[0, "id8"]], "0.8.0 (2019-06-03)": [[0, "id7"]], "0.8.1 (2019-10-20)": [[0, "id6"]], "0.8.2 (2019-11-26)": [[0, "id5"]], "0.8.3 (2021-06-18)": [[0, "id4"]], "0.9.0 (2021-11-29)": [[0, "id3"]], "0.9.1 (2022-04-20)": [[0, "id2"]], "0.9.2 (2022-11-24)": [[0, "id1"]], "Basic Expressions": [[5, "basic-expressions"], [7, "basic-expressions"], [8, "basic-expressions"]], "Basics": [[2, "basics"]], "Built-in Functions and Variables": [[6, "built-in-functions-and-variables"]], "Built-in functions": [[8, "built-in-functions"]], "CHANGES": [[0, null]], "Code Blocks": [[6, "code-blocks"]], "Command Line Interface": [[1, null]], "Content Generation": [[8, "content-generation"]], "Control Flow": [[5, "control-flow"], [7, "control-flow"], [8, "control-flow"]], "Documentation contents": [[3, "documentation-contents"]], "Escaping": [[6, "escaping"]], "Example": [[3, "example"]], "Example Migration": [[4, "example-migration"]], "Extending the Load Path": [[1, "extending-the-load-path"]], "Extraction": [[2, "extraction"]], "Functions and Imports": [[5, "functions-and-imports"]], "Includes": [[5, "includes"]], "Indices and tables": [[3, "indices-and-tables"]], "Inheritance": [[5, "inheritance"]], "Inheritance (%extends, %block)": [[7, "inheritance-extends-block"]], "Inheritance (py:extends, py:block)": [[8, "inheritance-py-extends-py-block"]], "Internationalization": [[2, null]], "Kajiki Runtime": [[5, null]], "Kajiki Templating Basics": [[6, null]], "Kajiki Text Templates": [[7, null]], "Kajiki XML Templates": [[8, null]], "Kajiki provides fast well-formed XML templates": [[3, "kajiki-provides-fast-well-formed-xml-templates"]], "Kajiki: Fast Templates for Python": [[3, null]], "Links": [[3, "links"]], "Migrating from Genshi": [[4, null]], "Output Modes": [[8, "output-modes"]], "Python API": [[6, "python-api"]], "Python Blocks": [[5, "python-blocks"]], "Setting Template Variables": [[1, "setting-template-variables"]], "Specifying Mode": [[1, "specifying-mode"]], "Summary of Directives": [[8, "summary-of-directives"]], "Synopsis": [[6, "synopsis"]], "Template Directives": [[6, "template-directives"]], "Template Expressions and Code Blocks": [[6, "template-expressions-and-code-blocks"]], "Tips on writing your templates": [[8, "tips-on-writing-your-templates"]], "Usage": [[1, "usage"]], "defined(name)": [[8, "defined-name"]], "literal(text)": [[8, "literal-text"]], "py:attrs": [[8, "py-attrs"]], "py:call": [[8, "py-call"]], "py:content": [[8, "py-content"]], "py:def": [[8, "py-def"]], "py:for": [[8, "py-for"]], "py:if, py:else": [[8, "py-if-py-else"]], "py:import": [[8, "py-import"]], "py:include": [[8, "py-include"]], "py:replace": [[8, "py-replace"]], "py:strip": [[8, "py-strip"]], "py:switch, py:case, py:else": [[8, "py-switch-py-case-py-else"]], "py:with": [[8, "py-with"]], "value_of(name, default=None)": [[8, "value-of-name-default-none"]]}, "docnames": ["changes", "cli", "i18n", "index", "migrating_from_genshi", "runtime", "templating-basics", "text-templates", "xml-templates"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["changes.rst", "cli.rst", "i18n.rst", "index.rst", "migrating_from_genshi.rst", "runtime.rst", "templating-basics.rst", "text-templates.rst", "xml-templates.rst"], "indexentries": {"_compiler (class in kajiki.xml_template)": [[5, "kajiki.xml_template._Compiler", false]], "_domtransformer (class in kajiki.xml_template)": [[5, "kajiki.xml_template._DomTransformer", false]], "_parser (class in kajiki.xml_template)": [[5, "kajiki.xml_template._Parser", false]], "_template (class in kajiki.template)": [[5, "kajiki.template._Template", false]], "built-in function": [[6, "literal", false]], "characters() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.characters", false]], "child (built-in variable)": [[6, "child", false]], "compile() (kajiki.xml_template._compiler method)": [[5, "kajiki.xml_template._Compiler.compile", false]], "defined() (kajiki.template._template method)": [[5, "kajiki.template._Template.defined", false]], "endelement() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.endElement", false]], "endelementns() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.endElementNS", false]], "endprefixmapping() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.endPrefixMapping", false]], "kajiki": [[5, "module-kajiki", false]], "literal()": [[6, "literal", false]], "local (built-in variable)": [[6, "local", false]], "module": [[5, "module-kajiki", false]], "parent (built-in variable)": [[6, "parent", false]], "parse() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.parse", false]], "processinginstruction() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.processingInstruction", false]], "render() (kajiki.template._template method)": [[5, "kajiki.template._Template.render", false]], "self (built-in variable)": [[6, "self", false]], "skippedentity() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.skippedEntity", false]], "startdocument() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startDocument", false]], "startelement() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startElement", false]], "startelementns() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startElementNS", false]], "startprefixmapping() (kajiki.xml_template._parser method)": [[5, "kajiki.xml_template._Parser.startPrefixMapping", false]], "template() (kajiki.template method)": [[5, "kajiki.template.Template", false]], "templatenode (class in kajiki.ir)": [[5, "kajiki.ir.TemplateNode", false]], "transform() (kajiki.xml_template._domtransformer method)": [[5, "kajiki.xml_template._DomTransformer.transform", false]], "xmltemplate() (kajiki.xml_template method)": [[5, "kajiki.xml_template.XMLTemplate", false]]}, "objects": {"": [[6, 0, 1, "", "child"], [5, 1, 0, "-", "kajiki"], [6, 4, 1, "", "literal"], [6, 0, 1, "", "local"], [6, 0, 1, "", "parent"], [6, 0, 1, "", "self"]], "kajiki.ir": [[5, 2, 1, "", "TemplateNode"]], "kajiki.template": [[5, 3, 1, "", "Template"], [5, 2, 1, "", "_Template"]], "kajiki.template._Template": [[5, 3, 1, "", "defined"], [5, 3, 1, "", "render"]], "kajiki.xml_template": [[5, 3, 1, "", "XMLTemplate"], [5, 2, 1, "", "_Compiler"], [5, 2, 1, "", "_DomTransformer"], [5, 2, 1, "", "_Parser"]], "kajiki.xml_template._Compiler": [[5, 3, 1, "", "compile"]], "kajiki.xml_template._DomTransformer": [[5, 3, 1, "", "transform"]], "kajiki.xml_template._Parser": [[5, 3, 1, "", "characters"], [5, 3, 1, "", "endElement"], [5, 3, 1, "", "endElementNS"], [5, 3, 1, "", "endPrefixMapping"], [5, 3, 1, "", "parse"], [5, 3, 1, "", "processingInstruction"], [5, 3, 1, "", "skippedEntity"], [5, 3, 1, "", "startDocument"], [5, 3, 1, "", "startElement"], [5, 3, 1, "", "startElementNS"], [5, 3, 1, "", "startPrefixMapping"]]}, "objnames": {"0": ["py", "data", "Python data"], "1": ["py", "module", "Python module"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:data", "1": "py:module", "2": "py:class", "3": "py:method", "4": "py:function"}, "terms": {"": [3, 4, 5, 6, 7, 8], "0": [3, 4, 5, 6, 7, 8], "00": [7, 8], "01": 3, "03": 3, "04": 3, "05": 3, "06": 3, "07": 3, "08": 3, "09": 3, "1": [3, 4, 5, 7, 8], "10": [3, 5], "11": 3, "12": 3, "13": 3, "16": 3, "18": 3, "1999": 4, "2": [3, 4, 5, 7, 8], "20": 3, "2001": 4, "2007": 4, "2010": 3, "2011": 3, "2012": 3, "2013": 3, "2015": 3, "2016": 3, "2017": 3, "2018": 3, "2019": 3, "2021": 3, "2022": 3, "24": 3, "25": 3, "26": 3, "27": 3, "28": 3, "29": 3, "3": [3, 5, 7, 8], "4": [3, 5, 7, 8], "5": [3, 5, 7, 8], "6": 3, "7": 3, "8": [3, 4, 5], "9": 3, "9223372036854775807": 6, "A": [5, 6], "And": [1, 3, 5, 7, 8], "As": [0, 5, 6, 8], "But": [3, 4, 8], "By": [1, 3, 5, 7, 8], "For": [1, 2, 4, 5, 6, 7, 8], "If": [1, 2, 5, 6, 7, 8], "In": [0, 2, 4, 5, 6, 7, 8], "It": [5, 7, 8], "One": [1, 8], "The": [0, 3, 4, 5, 6, 7, 8], "Then": [4, 7, 8], "There": [0, 5], "These": 6, "To": [1, 2, 5, 6], "With": [7, 8], "_": 2, "__call__": 5, "__kj__": 5, "__main__": 5, "_compil": [3, 5], "_domtransform": [3, 5], "_fpt": 5, "_fpt_block_bodi": 5, "_fpt_lambda": 5, "_parser": [3, 5], "_templat": [3, 5], "abl": 1, "about": [1, 4], "abov": [1, 4, 5, 6, 8], "abstract": 5, "accept": 0, "access": [6, 7, 8], "accomplish": 6, "accord": 0, "achiev": 5, "action": [0, 5], "activ": 4, "actual": [0, 2, 5, 6], "ad": [0, 1], "add": [0, 1, 2, 4], "addit": [4, 7, 8], "addsitedir": 1, "admin": 4, "advantag": 6, "affect": [5, 7, 8], "after": [4, 5], "albatross": 8, "alia": 8, "alias": 2, "all": [0, 2, 4, 5, 6, 8], "allow": [0, 5, 8], "along": 6, "alow0": 5, "alpha": 0, "alphabet": 0, "also": [0, 1, 2, 3, 4, 5, 6, 7, 8], "alter": 5, "altern": [5, 7, 8], "although": 8, "alwai": [0, 5, 7, 8], "amount": 5, "an": [0, 2, 3, 4, 5, 6, 7, 8], "ani": [2, 4, 5, 6, 7, 8], "anoth": [5, 7, 8], "anymor": 0, "anyth": 0, "apart": 0, "api": 3, "app": 4, "appear": [7, 8], "appl": 6, "appli": 5, "applic": [4, 5], "approach": 2, "ar": [0, 1, 3, 4, 5, 6, 7, 8], "architectur": 4, "area": 6, "arg": [7, 8], "argument": 6, "aspect": 6, "assign": 8, "assum": [1, 5, 7, 8], "attach": 8, "attack": 8, "attr": [0, 4, 5], "attribut": [0, 3, 4, 5, 6, 8], "auth": 4, "auth_stack_en": 4, "authent": 4, "auto": 1, "autoblock": [0, 5], "autoescap": 0, "automat": [0, 1, 2, 5], "avail": [5, 6, 7, 8], "avoid": 8, "awar": 6, "awesom": 3, "b": 6, "babel": [0, 2], "backslash": [5, 7], "banana": 6, "bar": [7, 8], "barrier": 0, "base": [0, 1, 3, 4, 5, 6, 7, 8], "base_glob": [0, 5], "basic": 3, "baz": [7, 8], "beauti": 3, "becaus": [3, 5, 8], "becom": [3, 4, 6], "befor": [0, 2, 5, 7, 8], "begin": [4, 5, 7, 8], "behavior": 4, "being": [0, 1, 4, 6, 7, 8], "below": [5, 7, 8], "best": [0, 3], "between": 0, "bit": 7, "blaze": 3, "block": [0, 3, 4], "bodi": [3, 4, 5, 6, 7, 8], "body_head": 4, "body_text": 4, "bodyfoot": 4, "bool": 0, "bootstrap": 4, "both": [6, 7, 8], "br": 8, "brace": [0, 6], "branch": [7, 8], "break": [0, 7], "breviti": 2, "bug": 0, "bugfix": 0, "build": 4, "built": [0, 3], "c": 6, "cach": 6, "call": [0, 1, 2, 4, 5, 6], "caller": [5, 7, 8], "can": [0, 1, 3, 4, 5, 6, 7, 8], "cannot": 5, "capabl": 8, "capit": 6, "care": 8, "case": [0, 2, 4, 5, 6], "cdata": [0, 8], "cdata_script": [0, 5], "certain": 8, "chain": [7, 8], "chameleon": 3, "chang": [3, 6], "charact": [5, 7, 8], "charset": 4, "check": [0, 5, 8], "checkbox": 8, "child": [4, 5, 6, 7, 8], "children": 8, "choos": 4, "chunk": 5, "ci": 0, "circumst": [7, 8], "clarif": 0, "class": [0, 4, 5, 6, 8], "clearingdiv": 4, "close": 0, "closer": 5, "code": [0, 3, 4, 5, 7, 8], "codebas": 0, "collect": 0, "collector": 0, "com": 4, "combin": 3, "come": [3, 5], "command": [0, 3], "comment": [0, 8], "commonli": 0, "compat": 0, "compet": 3, "compil": [3, 5, 6], "complex": 8, "concept": [5, 7, 8], "condit": 8, "consecut": 5, "consequenti": 0, "consid": [0, 1, 5, 7, 8], "consist": [4, 5], "construct": 4, "constructor": 6, "consult": 2, "contact": [1, 4], "contain": [2, 5, 6, 8], "content": [0, 4, 5, 6, 7], "context": [0, 4, 5, 6, 7, 8], "contigu": 5, "continu": 0, "contributor": 0, "control": [3, 4, 6], "control_flow": 5, "control_flow_w": 5, "control_flow_ws_short": 5, "conveni": 5, "convert": 5, "core": 0, "correct": 0, "correctli": 0, "correspond": 5, "could": [1, 7, 8], "coupl": 4, "cours": 5, "crash": 0, "creat": [0, 2, 4, 5], "cross": 8, "css": 4, "curli": 6, "current": [6, 7, 8], "currentpag": 4, "custom": [6, 8], "data": [4, 5, 8], "databas": 4, "dear": [5, 6, 7, 8], "decid": 4, "declar": [0, 5], "def": [0, 4, 5, 6], "default": [1, 4, 5, 7], "default_valu": 4, "defer": 0, "defin": [0, 4, 5, 6, 7], "del": 5, "delimit": 7, "depend": [0, 5, 6, 7, 8], "deposit": 4, "deriv": 4, "describ": [6, 7, 8], "design": [3, 4], "detail": [2, 5], "detect": [0, 1, 6, 8], "determin": 8, "develop": [3, 4], "dict": [3, 6, 7, 8], "didn": 5, "difficult": 4, "digit": 6, "direct": [3, 4, 5, 7], "directli": 6, "directori": [0, 1], "disabl": 0, "disappear": 4, "discard": 0, "displai": 8, "distribut": 4, "div": [4, 6, 8], "do": [0, 1, 5, 7], "doc": 5, "doctyp": [0, 4, 5, 8], "document": [0, 2, 4, 5, 6, 7, 8], "doe": [2, 8], "doesn": 6, "dollar": 6, "dom": 5, "don": [5, 7, 8], "done": 6, "dot": 6, "doubl": [6, 7, 8], "doubt": 5, "drop": 0, "dtd": [0, 1, 4, 5], "dtdhandler": 5, "dynam": 8, "e": [1, 4, 5, 8], "each": [0, 1, 5, 7, 8], "easier": [0, 4], "easili": 3, "easy_instal": 0, "edgewal": 4, "effect": 8, "either": [6, 7, 8], "element": [0, 5, 8], "elif": 5, "els": [0, 4, 5, 6], "elsewher": [6, 7, 8], "em": [6, 8], "email": [1, 6], "embed": [6, 7, 8], "emit": [0, 8], "empti": [0, 4, 5, 8], "en": 4, "enabl": [2, 6], "enclos": [6, 7, 8], "encod": 5, "encourag": 0, "end": [0, 4, 5, 6, 7], "endel": 5, "endelementn": 5, "endprefixmap": 5, "engin": [3, 6, 7, 8], "ensur": [0, 3], "entir": 8, "entiti": [0, 5, 8], "entri": 0, "environ": 4, "equiv": 4, "equival": 5, "error": 0, "escap": [0, 4, 5, 8], "etc": 5, "evalu": [6, 7, 8], "even": [0, 1, 5, 7, 8], "event": 5, "ever": [7, 8], "everyth": 6, "exactli": 5, "examin": 5, "exampl": [1, 5, 6, 7, 8], "excel": 2, "except": [5, 8], "execut": 5, "exist": [4, 7, 8], "expand": [5, 7, 8], "expans": [6, 7, 8], "expect": 5, "experiment": 0, "explan": 8, "explicit": [5, 7, 8], "expos": [0, 5], "express": [0, 3], "extend": [3, 4, 5, 6], "extens": [1, 4], "extent": 8, "extern": [5, 8], "extra": 4, "extract": [0, 3], "extract_python": 0, "extractor": 0, "fact": 0, "fail": 8, "fals": [0, 4, 5, 7, 8], "favorit": 6, "featur": [0, 3, 5, 7, 8], "few": 4, "file": [1, 2, 4, 5, 7, 8], "file_or_packag": 1, "fileload": [0, 7, 8], "filenam": [1, 5], "final": [3, 5, 6], "find": 2, "first": [4, 5, 6, 7, 8], "fix": 0, "flag": 1, "flash": 4, "flash_obj": 4, "flow": [3, 6], "follow": [1, 2, 4, 5, 6, 7, 8], "fond": 4, "foo": [6, 7, 8], "footer": [4, 7, 8], "forc": 6, "forget": [5, 7, 8], "form": [5, 6, 7, 8], "format": [0, 6], "formed": 6, "forum": 3, "found": [2, 5], "fragment": 8, "framework": [0, 2], "fridai": [5, 7, 8], "from": [0, 1, 2, 3, 5, 8], "from_": [7, 8], "fruit": 6, "frut": 6, "full": [6, 7, 8], "function": [0, 2, 3, 4, 7], "further": 2, "g": [4, 5], "gener": [0, 3, 4, 5, 6, 7], "genshi": [0, 3, 8], "get": 6, "gettext": [0, 2, 5], "getting_start": 4, "getting_started_step": 4, "giant": 4, "gift": [5, 7, 8], "git": 3, "github": [0, 3], "give": [0, 6, 7, 8], "given": [1, 5, 8], "global": [0, 5, 6, 8], "goal": 6, "goe": [2, 4], "good": [5, 7, 8], "googl": 4, "greet": [5, 7, 8], "group": 4, "guarante": [5, 8], "h": 6, "h1": [3, 4, 6, 8], "h2": [4, 8], "h3": [4, 8], "h6": 8, "ha": [0, 5, 8], "had": 5, "hand": 6, "have": [4, 5, 6, 7, 8], "head": [3, 4, 6, 8], "head_cont": 4, "header": [4, 7, 8], "hello": [2, 5, 6, 7, 8], "hello_arithmet": 5, "hello_nam": 5, "help": 7, "helper": 4, "here": [4, 5, 6, 8], "hg": 3, "hi": 5, "hierarchi": [6, 7, 8], "high": 5, "high4": 5, "hold": 5, "how": [7, 8], "howev": [2, 5, 8], "href": [1, 4, 8], "html": [0, 1, 2, 3, 4, 5, 6, 8], "html5": [1, 5], "http": [4, 5], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8], "i18n": [0, 2], "id": [4, 7, 8], "idea": 3, "ident": 4, "identifi": [5, 7, 8], "ie": 0, "ignor": [0, 3, 5], "illeg": 8, "illustr": [5, 7, 8], "import": [0, 2, 3, 4, 6], "import_": [5, 6, 7, 8], "import_test": 5, "improv": 0, "includ": [0, 1, 2, 3, 4, 6], "include_exampl": 5, "inclus": 8, "indent": 5, "index": [1, 3, 4], "index_kajiki": 4, "indic": 4, "indirectli": 6, "infer": 1, "inform": [5, 6, 7, 8], "infrastructur": 2, "inherit": [3, 6], "initi": 5, "input": [0, 3, 8], "ins": 8, "insert": [0, 5, 7, 8], "insid": [0, 5, 8], "inspect": 8, "instanc": [2, 4, 5, 6, 7, 8], "instanti": 6, "instead": [0, 1, 3, 8], "instruct": [5, 6], "integr": [0, 1, 2], "intend": 4, "interfac": [0, 3, 5], "intermedi": 5, "internation": 3, "introduct": 4, "invok": 5, "ir": 5, "is_frag": [5, 8], "ismap": 0, "isn": 5, "issu": 3, "item": [6, 7, 8], "iter": [5, 6, 7, 8], "its": [0, 5, 6, 7, 8], "itself": [0, 5, 7, 8], "javascript": 4, "jinja": 3, "jinja2": 4, "join": 6, "jqueri": 0, "just": [0, 5, 7, 8], "kajiki": [0, 1, 2, 4], "kajki": 6, "keep": [0, 5], "kei": 1, "kiwi": 6, "know": 8, "knowledg": 6, "lambda": [7, 8], "languag": [5, 6, 7, 8], "last": [0, 5, 6, 7, 8], "layout": 4, "lead": [0, 5], "least": 5, "let": [5, 7, 8], "letter": 6, "level": [2, 4, 5, 6, 7, 8], "li": [3, 4, 6, 8], "lib": [7, 8], "librari": 0, "licens": 3, "life": 4, "like": [1, 3, 5, 6], "likewis": [4, 7, 8], "line": [0, 3, 5, 6, 7], "link": 4, "list": 8, "liter": [4, 5, 6, 7], "lnotab": 0, "loader": [0, 1, 6, 7, 8], "local": [2, 5, 6, 7, 8], "localiz": 2, "localnam": 5, "locat": [2, 5], "login": 4, "loginlogout": 4, "logout": 4, "logout_handl": 4, "long": 5, "longer": 0, "look": [0, 6], "lot": 2, "low": 5, "low0": 5, "low1": 5, "lower": 0, "lurk": 4, "m": 1, "made": 6, "mai": [1, 4, 5, 6, 8], "main": [1, 5, 6], "main_cont": 4, "mainmenu": 4, "make": [0, 4, 5, 7, 8], "makefil": 1, "mako": 3, "malici": 8, "manag": 7, "mani": 8, "map": 5, "mark": [4, 5, 7, 8], "markup": [0, 4, 5, 6, 7, 8], "master": 4, "match": [3, 4, 7, 8], "maxint": 6, "maxsiz": 6, "me": [5, 7, 8], "mean": 8, "media": 4, "mental": 5, "mention": 0, "messag": [0, 2], "meta": 4, "method": [4, 5, 6, 7, 8], "mid": [5, 7, 8], "mid2": 5, "mid3": 5, "might": [2, 5, 7, 8], "migrat": [0, 3], "mimic": 4, "minifi": 0, "misfeatur": 3, "mit": 3, "ml": 6, "mockload": [7, 8], "mod_pi": 5, "mode": [0, 3, 5, 6], "model": [4, 5], "modifi": 4, "modul": [0, 2, 3, 4, 5, 6], "module_py_block": 5, "monei": [5, 7, 8], "more": [3, 5, 6, 7, 8], "most": [3, 6, 7, 8], "move": 0, "multilin": 0, "multipl": [0, 1, 7, 8], "must": [0, 2, 5, 6, 7, 8], "mutat": 5, "my": [4, 5, 6], "my_funct": [7, 8], "n": [5, 7, 8], "name": [0, 1, 4, 5, 6, 7], "name_of_the_variable_containing_the_html": 8, "nameerror": [6, 8], "namespac": [5, 6], "nbsp": 8, "nearli": 4, "necessari": [5, 8], "necessarili": 7, "need": [0, 1, 5, 6, 7, 8], "neither": 7, "nest": 5, "never": [5, 7], "nevermor": [5, 7, 8], "new": 5, "newli": 5, "newlin": [5, 7], "next": 5, "nine": 0, "node": [0, 5], "nohref": 0, "nois": 2, "non": [0, 5, 6], "none": [0, 5], "normal": [5, 6, 7, 8], "note": [4, 5, 7, 8], "noth": 5, "notic": [4, 7, 8], "notif": 5, "notifi": 2, "now": [0, 1, 4, 7, 8], "o": [5, 6], "object": 5, "obtain": 6, "occur": 5, "odd": [5, 7, 8], "off": 0, "offer": 8, "ol": 4, "omit": [0, 6, 8], "onc": [4, 5], "one": [1, 3, 4, 5, 6, 7, 8], "onli": [0, 4, 5, 6, 7, 8], "onto": 8, "open": 8, "option": [0, 1, 8], "orang": 6, "order": [0, 2, 4, 5, 6, 8], "org": [4, 5], "orient": 5, "origin": 5, "other": [0, 2, 3, 5, 6], "otherwis": [4, 5], "our": 4, "out": [0, 3], "output": [0, 1, 3, 4, 5, 6, 7], "output_fil": 1, "outsid": 2, "over": [5, 6], "overrid": [1, 4, 7, 8], "overridden": [4, 7, 8], "ow": [5, 7, 8], "own": [7, 8], "p": [0, 1, 2, 4, 6, 8], "packag": [0, 1, 5, 6], "package1": [7, 8], "package2": [7, 8], "packageload": [6, 7, 8], "page": [1, 3, 4, 8], "pair": 8, "paragraph": 0, "param": 8, "paramet": [5, 7, 8], "parent": [4, 5, 6, 7, 8], "parent_block": [4, 5, 7, 8], "pars": [0, 5, 6, 7, 8], "parser": 5, "part": [4, 5], "particular": [4, 5], "pass": [1, 5, 7, 8], "path": [0, 6, 7, 8], "pattern": 6, "pear": 6, "pep8": 0, "percent": 6, "perform": [0, 3, 4, 7, 8], "perhap": [7, 8], "period": [5, 7, 8], "persist": 5, "pick": [5, 7, 8], "pip": 0, "place": [2, 4, 7, 8], "placehold": 2, "plain": 6, "pleas": [2, 6, 7, 8], "plugin": 0, "pop_switch": 5, "possibl": 8, "possibli": 6, "pot": 2, "practic": 0, "precis": [7, 8], "prefer": 4, "prefix": [5, 6, 7, 8], "present": 4, "preserv": [0, 8], "prevent": 5, "previous": 3, "price": [7, 8], "print": [3, 5, 6, 7, 8], "probabl": [4, 5], "process": [1, 2, 5, 6], "processinginstruct": 5, "processor": 5, "produc": 6, "program": 4, "project": [2, 3, 4], "proper": 6, "properli": [0, 5], "properti": 5, "provid": [0, 2, 4, 5, 6, 7, 8], "public": 4, "pull": 5, "purpos": 8, "push_switch": 5, "py": [0, 1, 2, 3, 4, 5, 6], "py_text": 5, "pypi": 0, "pyramid": 0, "pytest": 0, "python": [0, 2, 7, 8], "python2": 0, "qname": 5, "quickstart": 4, "quit": 4, "quot": [5, 7, 8], "quoth": [5, 7, 8], "rang": [3, 5, 7, 8], "rapid": 4, "raven": [5, 7, 8], "raw": 5, "re": [5, 6], "read": 4, "reader": 5, "readi": 3, "readonli": 0, "reason": 0, "receiv": 5, "recent": 6, "recogn": [4, 8], "recognis": 0, "recommend": 4, "refer": 6, "region": 4, "registri": 5, "regress": 0, "reimplement": 8, "rel": [4, 5], "releas": 0, "rememb": 8, "remov": [0, 4, 5, 7, 8], "renam": 4, "render": [1, 3, 4, 5, 6, 7, 8], "repeatedli": [7, 8], "repetit": 3, "replac": [0, 2, 3, 4, 5, 6, 7], "report": [0, 5], "repositori": 3, "repres": 5, "represent": 5, "request": 4, "requir": [0, 2, 6, 8], "result": [1, 5], "return": [4, 5, 8], "reus": 5, "rewrit": 4, "rick": [5, 6, 7, 8], "root": [0, 5], "routin": 2, "rule": 6, "run": [1, 2, 5, 6], "runner": 0, "runtim": 3, "safe": [5, 8], "same": [0, 5, 6, 7, 8], "save": [7, 8], "sax": 5, "scope": [5, 6], "screen": 4, "script": [0, 1, 2, 8], "search": 3, "second": 6, "section": [0, 5, 7, 8], "see": [0, 5, 7, 8], "seen": 5, "select": [0, 4, 8], "self": [5, 6, 7, 8], "semant": [4, 5, 7, 8], "semicolon": 0, "sentenc": 0, "separ": [0, 5, 8], "seri": 0, "serial": 8, "setdocumentloc": 5, "sever": [0, 5, 6, 7, 8], "shell": 1, "shorthand": [5, 8], "should": [1, 2, 4, 5, 6, 8], "shoulder": 4, "shown": 5, "showstopp": 0, "sidebar": 4, "sidebar_top": 4, "sign": [5, 6, 7, 8], "signal": 5, "similar": [2, 6, 8], "similarli": 4, "simpl": [1, 4, 6], "simple_funct": 5, "simple_py_block": 5, "simpli": [3, 5, 6, 7, 8], "sinc": [1, 2, 4, 8], "sincer": [5, 7, 8], "singl": [0, 5, 6], "site": [1, 8], "skip": 5, "skippedent": 5, "slightli": [4, 5], "slot": 4, "slow": 3, "snippet": 8, "so": [0, 3, 4, 5, 6, 8], "softwar": 1, "solut": 2, "some": [0, 4, 5, 6, 7, 8], "some_str": 4, "some_vari": 4, "someth": [5, 6, 7, 8], "sometim": [5, 7, 8], "soon": [0, 3], "sourc": [2, 4, 5, 6], "sourceforg": [0, 3], "space": 0, "span": [4, 8], "speaker": [5, 7, 8], "special": [5, 7, 8], "specifi": [0, 4, 5, 8], "speed": 3, "split": 5, "spuriou": 0, "squash": [0, 5], "stack": 5, "stage": 8, "stai": 3, "stand": 4, "standalon": 8, "standard": [1, 5, 8], "start": [5, 6, 7, 8], "startdocu": 5, "startel": 5, "startelementn": 5, "startprefixmap": 5, "statement": 0, "static": 4, "step": [4, 5], "stip": 0, "stori": 5, "stream": 6, "string": [0, 2, 4, 5, 6, 8], "strip": [0, 4, 5], "strip_text": [0, 5], "structur": 1, "stuff": [0, 8], "style": [0, 3, 4, 8], "stylesheet": 4, "subclass": [5, 6], "subsequ": 0, "subset": 5, "substitut": [7, 8], "succinctli": 5, "suffic": 4, "summari": 3, "suppli": 5, "support": [0, 1, 2, 4, 5, 6, 7, 8], "suppos": [1, 4, 7, 8], "surround": 0, "switch": [0, 5], "swtich": 0, "sy": [5, 6], "synonym": 8, "synopsi": 3, "syntax": [0, 3, 4, 5, 6, 7, 8], "system": 4, "sz": 8, "t": [4, 5, 6, 7, 8], "tag": [0, 2, 3, 4, 5, 6, 7, 8], "tagnam": 8, "take": [1, 8], "taken": 5, "target": 5, "teh": 3, "templat": [0, 2, 4, 5], "templateload": [7, 8], "templatenod": [3, 5], "temporarili": 8, "termin": 7, "test": [0, 1, 4, 6, 7, 8], "testabl": 0, "text": [0, 1, 2, 3, 4, 5, 6], "texttempl": [6, 7], "tg": 4, "than": 8, "thank": [4, 5, 7, 8], "thei": [5, 6, 7, 8], "them": [0, 6], "themselv": 7, "thi": [0, 1, 2, 4, 5, 6, 7, 8], "thing": 5, "those": [4, 5], "though": 4, "three": 8, "through": [0, 5, 6], "time": [1, 6, 7, 8], "tip": 3, "titl": [3, 4, 6], "too": 8, "toolkit": 4, "top": [2, 4], "tpl_text": 8, "tr": 4, "traceback": 6, "track": 5, "tracker": 3, "trail": [0, 5], "transform": 5, "transit": 4, "translat": [0, 2, 5], "translatabletextnod": 0, "travi": 0, "treat": 0, "tree": 5, "tri": 8, "tricki": 7, "true": [0, 4, 5, 7, 8], "truish": 8, "truth": 8, "truthi": [7, 8], "tune": 3, "tupl": 5, "turbogear": [0, 4], "turn": [0, 5], "twice": 5, "two": [0, 4, 6, 8], "txt": [1, 5, 7, 8], "type": [4, 5, 8], "typic": 2, "typo": 0, "u": [7, 8], "ul": [3, 4, 6, 8], "under": [0, 3], "underscor": 6, "understood": 3, "undesir": 8, "unexpect": [0, 5], "unit": 0, "unless": [0, 1], "unus": 0, "up": [0, 1, 5, 7, 8], "updat": 0, "upgrad": 0, "uri": 5, "url": 4, "us": [0, 1, 2, 3, 4, 5, 6, 7, 8], "usabl": 8, "usag": 3, "use_j": 4, "user": [0, 6, 8], "usual": [2, 4, 5], "utf": [4, 5], "v": 1, "valid": 5, "valu": [0, 1, 5, 6, 7, 8], "value_of": [0, 4], "var": [1, 4, 8], "variabl": [0, 5, 7, 8], "variou": [7, 8], "verbatim": [5, 7, 8], "verbos": 5, "version": [0, 4], "via": [1, 5, 6, 7, 8], "view": [4, 5], "w3": 4, "w3c": 4, "wa": [0, 5, 7, 8], "wai": 4, "want": [0, 1, 5, 7, 8], "we": [4, 5, 7, 8], "web": [0, 3, 4, 8], "welcom": 4, "well": [0, 2, 5, 6, 7, 8], "were": 0, "what": 5, "when": [0, 1, 4, 5, 6, 7, 8], "whenev": 6, "where": [1, 4, 5, 6, 7], "wherea": [7, 8], "wherebi": [5, 7, 8], "whether": [6, 8], "which": [3, 4, 5, 6, 8], "whitespac": [5, 7], "whole": [0, 5], "whose": 8, "wide": [3, 5], "wire": 1, "wish": [1, 5, 7, 8], "within": 5, "without": [0, 7, 8], "won": 4, "work": [0, 3, 5], "world": [2, 5, 6, 7, 8], "would": [2, 5, 6, 7, 8], "wrap": [2, 6], "write": [0, 2, 3, 7], "written": 1, "wrongli": 0, "wsgi": 4, "www": 4, "x": [0, 3, 6, 8], "xhtml": 4, "xhtml1": 4, "xi": 4, "xinclud": 4, "xml": [0, 1, 2, 4, 5, 6, 7], "xml_templat": [3, 5], "xmln": 4, "xmltemplat": [0, 3, 5, 6, 8], "yield": [4, 5], "you": [0, 1, 2, 4, 5, 6, 7, 8], "your": [1, 2, 3, 4, 5]}, "titles": ["CHANGES", "Command Line Interface", "Internationalization", "Kajiki: Fast Templates for Python", "Migrating from Genshi", "Kajiki Runtime", "Kajiki Templating Basics", "Kajiki Text Templates", "Kajiki XML Templates"], "titleterms": {"0": 0, "01": 0, "03": 0, "04": 0, "05": 0, "06": 0, "07": 0, "08": 0, "09": 0, "1": 0, "10": 0, "11": 0, "12": 0, "13": 0, "16": 0, "18": 0, "2": 0, "20": 0, "2010": 0, "2011": 0, "2012": 0, "2013": 0, "2015": 0, "2016": 0, "2017": 0, "2018": 0, "2019": 0, "2021": 0, "2022": 0, "24": 0, "25": 0, "26": 0, "27": 0, "28": 0, "29": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "api": 6, "attr": 8, "basic": [2, 5, 6, 7, 8], "block": [5, 6, 7, 8], "built": [6, 8], "call": [7, 8], "case": [7, 8], "chang": 0, "code": 6, "command": 1, "content": [3, 8], "control": [5, 7, 8], "def": [7, 8], "default": 8, "defin": 8, "direct": [6, 8], "document": 3, "els": [7, 8], "escap": 6, "exampl": [3, 4], "express": [5, 6, 7, 8], "extend": [1, 7, 8], "extract": 2, "fast": 3, "flow": [5, 7, 8], "form": 3, "from": 4, "function": [5, 6, 8], "gener": 8, "genshi": 4, "import": [5, 7, 8], "includ": [5, 7, 8], "indic": 3, "inherit": [5, 7, 8], "interfac": 1, "internation": 2, "kajiki": [3, 5, 6, 7, 8], "line": 1, "link": 3, "liter": 8, "load": 1, "migrat": 4, "mode": [1, 8], "name": 8, "none": 8, "output": 8, "path": 1, "provid": 3, "py": 8, "python": [3, 5, 6], "replac": 8, "runtim": 5, "set": 1, "specifi": 1, "strip": 8, "summari": 8, "switch": [7, 8], "synopsi": 6, "tabl": 3, "templat": [1, 3, 6, 7, 8], "text": [7, 8], "tip": 8, "usag": 1, "value_of": 8, "variabl": [1, 6], "well": 3, "write": 8, "xml": [3, 8], "your": 8}}) \ No newline at end of file