diff options
author | Andrey Lisin <andrey.lisin@jetbrains.com> | 2020-03-27 13:20:01 +0300 |
---|---|---|
committer | David Lord <davidism@gmail.com> | 2020-03-30 11:11:07 -0700 |
commit | 77a212bf93933237cd3574fb44368eea2659f9c5 (patch) | |
tree | ed598a39b2d9b953803738cfe8bcec99441312ee /src | |
parent | 07b5c01338bbfc06be9afc80a127a327611d9a6d (diff) | |
download | jinja-77a212bf93933237cd3574fb44368eea2659f9c5.tar.gz |
Fix tokens line number calculation when whitespace stripping is used
Diffstat (limited to 'src')
-rw-r--r-- | src/jinja2/lexer.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/jinja2/lexer.py b/src/jinja2/lexer.py index a2b44e92..5fa940d9 100644 --- a/src/jinja2/lexer.py +++ b/src/jinja2/lexer.py @@ -681,6 +681,7 @@ class Lexer(object): source_length = len(source) balancing_stack = [] lstrip_unless_re = self.lstrip_unless_re + newlines_stripped = 0 while 1: # tokenizer loop @@ -717,7 +718,9 @@ class Lexer(object): if strip_sign == "-": # Strip all whitespace between the text and the tag. - groups = (text.rstrip(),) + groups[1:] + stripped = text.rstrip() + newlines_stripped = text[len(stripped) :].count("\n") + groups = (stripped,) + groups[1:] elif ( # Not marked for preserving whitespace. strip_sign != "+" @@ -758,7 +761,8 @@ class Lexer(object): data = groups[idx] if data or token not in ignore_if_empty: yield lineno, token, data - lineno += data.count("\n") + lineno += data.count("\n") + newlines_stripped + newlines_stripped = 0 # strings as token just are yielded as it. else: |