| 91 | |
| 92 | |
| 93 | class Template: |
| 94 | |
| 95 | default_namespace = { |
| 96 | 'start_braces': '{{', |
| 97 | 'end_braces': '}}', |
| 98 | 'looper': looper, |
| 99 | } |
| 100 | |
| 101 | default_encoding = 'utf8' |
| 102 | default_inherit = None |
| 103 | |
| 104 | def __init__(self, content, name=None, namespace=None, stacklevel=None, |
| 105 | get_template=None, default_inherit=None, line_offset=0, |
| 106 | delimiters=None): |
| 107 | self.content = content |
| 108 | |
| 109 | # set delimiters |
| 110 | if delimiters is None: |
| 111 | delimiters = (self.default_namespace['start_braces'], |
| 112 | self.default_namespace['end_braces']) |
| 113 | else: |
| 114 | assert len(delimiters) == 2 and all( |
| 115 | [isinstance(delimiter, basestring_) |
| 116 | for delimiter in delimiters]) |
| 117 | self.default_namespace = self.__class__.default_namespace.copy() |
| 118 | self.default_namespace['start_braces'] = delimiters[0] |
| 119 | self.default_namespace['end_braces'] = delimiters[1] |
| 120 | self.delimiters = delimiters |
| 121 | |
| 122 | self._unicode = is_unicode(content) |
| 123 | if name is None and stacklevel is not None: |
| 124 | try: |
| 125 | caller = sys._getframe(stacklevel) |
| 126 | except ValueError: |
| 127 | pass |
| 128 | else: |
| 129 | globals = caller.f_globals |
| 130 | lineno = caller.f_lineno |
| 131 | if '__file__' in globals: |
| 132 | name = globals['__file__'] |
| 133 | if name.endswith('.pyc') or name.endswith('.pyo'): |
| 134 | name = name[:-1] |
| 135 | elif '__name__' in globals: |
| 136 | name = globals['__name__'] |
| 137 | else: |
| 138 | name = '<string>' |
| 139 | if lineno: |
| 140 | name += ':%s' % lineno |
| 141 | self.name = name |
| 142 | self._parsed = parse( |
| 143 | content, name=name, line_offset=line_offset, |
| 144 | delimiters=self.delimiters) |
| 145 | if namespace is None: |
| 146 | namespace = {} |
| 147 | self.namespace = namespace |
| 148 | self.get_template = get_template |
| 149 | if default_inherit is not None: |
| 150 | self.default_inherit = default_inherit |
no outgoing calls
no test coverage detected