From ff84099902d53efc4c8bc411ea4c72b57ba1259c Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 25 Jan 2020 08:22:27 +0100 Subject: [PATCH 1/4] Add end_line attribute to node build with token tagged "data" --- src/jinja/nodes.py | 2 +- src/jinja/parser.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/jinja/nodes.py b/src/jinja/nodes.py index e0128d38c..dd11690fc 100644 --- a/src/jinja/nodes.py +++ b/src/jinja/nodes.py @@ -108,7 +108,7 @@ class Node(with_metaclass(NodeType, object)): """ fields = () - attributes = ("lineno", "environment") + attributes = ("lineno", "environment","end_line") abstract = True def __init__(self, *fields, **attributes): diff --git a/src/jinja/parser.py b/src/jinja/parser.py index 7bf3a2947..3cbda2818 100644 --- a/src/jinja/parser.py +++ b/src/jinja/parser.py @@ -895,7 +895,8 @@ def subparse(self, end_tokens=None): def flush_data(): if data_buffer: lineno = data_buffer[0].lineno - body.append(nodes.Output(data_buffer[:], lineno=lineno)) + end_line = lineno + data_buffer[0].data.count('\n') + body.append(nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line)) del data_buffer[:] try: From b3e788a7561889ed34c634d3a3a027c19397c33c Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 25 Jan 2020 14:10:11 +0100 Subject: [PATCH 2/4] Fix regression --- src/jinja/parser.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/jinja/parser.py b/src/jinja/parser.py index 3cbda2818..7fd5de06c 100644 --- a/src/jinja/parser.py +++ b/src/jinja/parser.py @@ -895,8 +895,11 @@ def subparse(self, end_tokens=None): def flush_data(): if data_buffer: lineno = data_buffer[0].lineno - end_line = lineno + data_buffer[0].data.count('\n') - body.append(nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line)) + if hasattr(data_buffer[0],'data'): + end_line = lineno + data_buffer[0].data.count('\n') + body.append(nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line)) + else: + body.append(nodes.Output(data_buffer[:], lineno=lineno)) del data_buffer[:] try: From 19e16bbb3a21b724afc4b710be3863712009262f Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 25 Jan 2020 14:28:58 +0100 Subject: [PATCH 3/4] Fix style --- src/jinja/parser.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/jinja/parser.py b/src/jinja/parser.py index 7fd5de06c..e113a569e 100644 --- a/src/jinja/parser.py +++ b/src/jinja/parser.py @@ -897,7 +897,9 @@ def flush_data(): lineno = data_buffer[0].lineno if hasattr(data_buffer[0],'data'): end_line = lineno + data_buffer[0].data.count('\n') - body.append(nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line)) + body.append( + nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line) + ) else: body.append(nodes.Output(data_buffer[:], lineno=lineno)) del data_buffer[:] From 32d0893c70a73bad1eb1060191d1edbbe9da4d61 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 24 Jul 2020 22:45:16 +0200 Subject: [PATCH 4/4] Fix style --- src/jinja2/nodes.py | 2 +- src/jinja2/parser.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jinja2/nodes.py b/src/jinja2/nodes.py index ab80a807b..fc576dc7b 100644 --- a/src/jinja2/nodes.py +++ b/src/jinja2/nodes.py @@ -106,7 +106,7 @@ class Node(metaclass=NodeType): """ fields = () - attributes = ("lineno", "environment","end_line") + attributes = ("lineno", "environment", "end_line") abstract = True def __init__(self, *fields, **attributes): diff --git a/src/jinja2/parser.py b/src/jinja2/parser.py index f6c28d747..bbb7be069 100644 --- a/src/jinja2/parser.py +++ b/src/jinja2/parser.py @@ -890,8 +890,8 @@ def subparse(self, end_tokens=None): def flush_data(): if data_buffer: lineno = data_buffer[0].lineno - if hasattr(data_buffer[0],'data'): - end_line = lineno + data_buffer[0].data.count('\n') + if hasattr(data_buffer[0], "data"): + end_line = lineno + data_buffer[0].data.count("\n") body.append( nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line) )