diff options
author | Jeff Hammel <jhammel@mozilla.com> | 2013-12-16 20:00:47 -0800 |
---|---|---|
committer | Jeff Hammel <jhammel@mozilla.com> | 2013-12-16 20:00:47 -0800 |
commit | 7e1791104399fae510230fc120cd0e18bc66d4bc (patch) | |
tree | d72bc48b5f5605db57529ea1034710fb229f5e11 | |
parent | 80da35b68de4f8fed0cf6585aafbc3d017ae42e0 (diff) | |
download | tempita-7e1791104399fae510230fc120cd0e18bc66d4bc.tar.gz |
https://bitbucket.org/ianb/tempita/issue/7/misspelling-of-delimiters-in
-rw-r--r-- | docs/index.txt | 6 | ||||
-rw-r--r-- | tempita/__init__.py | 54 | ||||
-rw-r--r-- | tests/test_template.txt | 6 |
3 files changed, 33 insertions, 33 deletions
diff --git a/docs/index.txt b/docs/index.txt index 5564e71..a44ae57 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -149,13 +149,13 @@ If you want to have ``{{`` or ``}}`` in your template, you must use the built-in variables like ``{{start_braces}}`` and ``{{end_braces}}``. There's no escape character. -You may also specify the delimeters as an argument to the Template +You may also specify the delimiters as an argument to the Template __init__ method: - >>> tempita.Template(content='Hello ${name}', delimeters=('${', '}')).substitute(name='world') + >>> tempita.Template(content='Hello ${name}', delimiters=('${', '}')).substitute(name='world') 'Hello world' -The delimeters argument must be of length two and both items must be strings. +The delimiters argument must be of length two and both items must be strings. None, as a special case, is substituted as the empty string. diff --git a/tempita/__init__.py b/tempita/__init__.py index 0511b9a..91407b3 100644 --- a/tempita/__init__.py +++ b/tempita/__init__.py @@ -93,20 +93,20 @@ class Template(object): def __init__(self, content, name=None, namespace=None, stacklevel=None, get_template=None, default_inherit=None, line_offset=0, - delimeters=None): + delimiters=None): self.content = content - # set delimeters - if delimeters is None: - delimeters = (self.default_namespace['start_braces'], + # set delimiters + if delimiters is None: + delimiters = (self.default_namespace['start_braces'], self.default_namespace['end_braces']) else: - assert len(delimeters) == 2 and all([isinstance(delimeter, basestring) - for delimeter in delimeters]) + assert len(delimiters) == 2 and all([isinstance(delimeter, basestring) + for delimeter in delimiters]) self.default_namespace = self.__class__.default_namespace.copy() - self.default_namespace['start_braces'] = delimeters[0] - self.default_namespace['end_braces'] = delimeters[1] - self.delimeters = delimeters + self.default_namespace['start_braces'] = delimiters[0] + self.default_namespace['end_braces'] = delimiters[1] + self.delimiters = delimiters self._unicode = is_unicode(content) if name is None and stacklevel is not None: @@ -128,7 +128,7 @@ class Template(object): if lineno: name += ':%s' % lineno self.name = name - self._parsed = parse(content, name=name, line_offset=line_offset, delimeters=self.delimeters) + self._parsed = parse(content, name=name, line_offset=line_offset, delimiters=self.delimiters) if namespace is None: namespace = {} self.namespace = namespace @@ -371,9 +371,9 @@ class Template(object): return msg -def sub(content, delimeters=None, **kw): +def sub(content, delimiters=None, **kw): name = kw.get('__name') - tmpl = Template(content, name=name, delimeters=delimeters) + tmpl = Template(content, name=name, delimiters=delimiters) return tmpl.substitute(kw) @@ -631,7 +631,7 @@ del _Empty ############################################################ -def lex(s, name=None, trim_whitespace=True, line_offset=0, delimeters=None): +def lex(s, name=None, trim_whitespace=True, line_offset=0, delimiters=None): """ Lex a string into chunks: @@ -653,27 +653,27 @@ def lex(s, name=None, trim_whitespace=True, line_offset=0, delimeters=None): TemplateError: {{ inside expression at line 1 column 10 """ - if delimeters is None: - delimeters = ( Template.default_namespace['start_braces'], + if delimiters is None: + delimiters = ( Template.default_namespace['start_braces'], Template.default_namespace['end_braces'] ) in_expr = False chunks = [] last = 0 last_pos = (1, 1) - token_re = re.compile(r'%s|%s' % (re.escape(delimeters[0]), - re.escape(delimeters[1]))) + token_re = re.compile(r'%s|%s' % (re.escape(delimiters[0]), + re.escape(delimiters[1]))) for match in token_re.finditer(s): expr = match.group(0) pos = find_position(s, match.end(), line_offset) - if expr == delimeters[0] and in_expr: - raise TemplateError('%s inside expression' % delimeters[0], + if expr == delimiters[0] and in_expr: + raise TemplateError('%s inside expression' % delimiters[0], position=pos, name=name) - elif expr == delimeters[1] and not in_expr: - raise TemplateError('%s outside expression' % delimeters[1], + elif expr == delimiters[1] and not in_expr: + raise TemplateError('%s outside expression' % delimiters[1], position=pos, name=name) - if expr == delimeters[0]: + if expr == delimiters[0]: part = s[last:match.start()] if part: chunks.append(part) @@ -684,7 +684,7 @@ def lex(s, name=None, trim_whitespace=True, line_offset=0, delimeters=None): last = match.end() last_pos = pos if in_expr: - raise TemplateError('No %s to finish last expression' % delimeters[1], + raise TemplateError('No %s to finish last expression' % delimiters[1], name=name, position=last_pos) part = s[last:] if part: @@ -764,7 +764,7 @@ def find_position(string, index, line_offset): return (len(leading) + line_offset, len(leading[-1]) + 1) -def parse(s, name=None, line_offset=0, delimeters=None): +def parse(s, name=None, line_offset=0, delimiters=None): r""" Parses a string into a kind of AST @@ -814,10 +814,10 @@ def parse(s, name=None, line_offset=0, delimeters=None): ... TemplateError: Multi-line py blocks must start with a newline at line 1 column 3 """ - if delimeters is None: - delimeters = ( Template.default_namespace['start_braces'], + if delimiters is None: + delimiters = ( Template.default_namespace['start_braces'], Template.default_namespace['end_braces'] ) - tokens = lex(s, name=name, line_offset=line_offset, delimeters=delimeters) + tokens = lex(s, name=name, line_offset=line_offset, delimiters=delimiters) result = [] while tokens: next_chunk, tokens = parse_expr(tokens, name) diff --git a/tests/test_template.txt b/tests/test_template.txt index 232bd8e..447367b 100644 --- a/tests/test_template.txt +++ b/tests/test_template.txt @@ -14,11 +14,11 @@ example:: ... TypeError: cannot concatenate 'str' and 'int' objects at line 1 column 6 -You can also specifiy delimeters:: +You can also specifiy delimiters:: - >>> sub('Hi ${name}', name='Ian', delimeters=('${', '}')) + >>> sub('Hi ${name}', name='Ian', delimiters=('${', '}')) 'Hi Ian' - >>> Template('Hi $[[repr(name)]]', delimeters=('$[[', ']]')).substitute(name='Ian') + >>> Template('Hi $[[repr(name)]]', delimiters=('$[[', ']]')).substitute(name='Ian') "Hi 'Ian'" It also has Django-style piping:: |