From a324a8958b06b577f1a82a3a3d5f696add2b1fb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 20 Feb 2023 15:07:44 +0100 Subject: meson: adjust whitespace handling in jinja2 rendering In 6abe882bae1bb12827ef395c60f21ab8bb1bc61b the renderer was made to unconditionally append a newline to output. This works, but is ugly. A nicer solution is to tell jinja2 to not strip the newline in the first place, via keep_trailing_newline=True. It seems that the result is unchanged because all our source files have exactly one trailing newline. Also, enable lstrip_blocks=True. This would cause whitespace on the line before an {%if block to be automatically stripped. It seems reasonable to enable that if trim_blocks=True. Overall, no change is expected, though I didn't test combinations of configurations, so there might be a change in some cases. But now the rules of rendering are more logical, e.g. we should be able to indent nested conditional statements without getting unexpected whitespace in the output. --- tools/meson-render-jinja2.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/meson-render-jinja2.py b/tools/meson-render-jinja2.py index fbaae596de..6ccb1fbe0c 100755 --- a/tools/meson-render-jinja2.py +++ b/tools/meson-render-jinja2.py @@ -23,7 +23,11 @@ def parse_config_h(filename): def render(filename, defines): text = open(filename).read() - template = jinja2.Template(text, trim_blocks=True, undefined=jinja2.StrictUndefined) + template = jinja2.Template(text, + trim_blocks=True, + lstrip_blocks=True, + keep_trailing_newline=True, + undefined=jinja2.StrictUndefined) return template.render(defines) if __name__ == '__main__': @@ -32,6 +36,5 @@ if __name__ == '__main__': output = render(sys.argv[3], defines) with open(sys.argv[4], 'w') as f: f.write(output) - f.write('\n') info = os.stat(sys.argv[3]) os.chmod(sys.argv[4], info.st_mode) -- cgit v1.2.1