aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrey Lisin <andrey.lisin@jetbrains.com>2020-03-27 13:20:01 +0300
committerDavid Lord <davidism@gmail.com>2020-03-30 11:11:07 -0700
commit77a212bf93933237cd3574fb44368eea2659f9c5 (patch)
treeed598a39b2d9b953803738cfe8bcec99441312ee /src
parent07b5c01338bbfc06be9afc80a127a327611d9a6d (diff)
downloadjinja-77a212bf93933237cd3574fb44368eea2659f9c5.tar.gz
Fix tokens line number calculation when whitespace stripping is used
Diffstat (limited to 'src')
-rw-r--r--src/jinja2/lexer.py8
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: