Coverage for /home/martinb/.local/share/virtualenvs/camcops/lib/python3.6/site-packages/chameleon/program.py : 58%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1try:
2 str = unicode
3except NameError:
4 long = int
6from .tokenize import iter_xml
7from .tokenize import iter_text
8from .parser import ElementParser
9from .namespaces import XML_NS
10from .namespaces import XMLNS_NS
13class ElementProgram(object):
14 DEFAULT_NAMESPACES = {
15 'xmlns': XMLNS_NS,
16 'xml': XML_NS,
17 }
19 tokenizers = {
20 'xml': iter_xml,
21 'text': iter_text,
22 }
24 restricted_namespace = True
26 def __init__(self, source, mode="xml", filename=None, tokenizer=None):
27 if tokenizer is None:
28 tokenizer = self.tokenizers[mode]
29 tokens = tokenizer(source, filename)
30 parser = ElementParser(tokens, self.DEFAULT_NAMESPACES, self.restricted_namespace)
32 self.body = []
34 for kind, args in parser:
35 node = self.visit(kind, args)
36 if node is not None:
37 self.body.append(node)
39 def visit(self, kind, args):
40 visitor = getattr(self, "visit_%s" % kind)
41 return visitor(*args)