diff --git a/jinja2/nativetypes.py b/jinja2/nativetypes.py index 31309bca7..5b5f9660f 100644 --- a/jinja2/nativetypes.py +++ b/jinja2/nativetypes.py @@ -209,13 +209,26 @@ def render(self, *args, **kwargs): vars = dict(*args, **kwargs) try: - return native_concat(self.root_render_func(self.new_context(vars))) + rendered_result = native_concat(self.root_render_func(self.new_context(vars))) + try: + splitted_rendered_result = rendered_result.split(', ') + if len(splitted_rendered_result) > 1 and\ + all(isinstance(value, str) for value in vars.values()) and\ + all(isinstance(key, str) for key in vars.keys()): + return "\'" + "\', \'".join(splitted_rendered_result) + "\'" + else: + return rendered_result + except: + return rendered_result + except Exception: exc_info = sys.exc_info() return self.environment.handle_exception(exc_info, True) + + class NativeEnvironment(Environment): """An environment that renders templates to native Python types.""" diff --git a/tests/test_nativetypes.py b/tests/test_nativetypes.py index 769bbc0a5..c97e68da7 100644 --- a/tests/test_nativetypes.py +++ b/tests/test_nativetypes.py @@ -114,3 +114,9 @@ def test_string(self, env): result = t.render() assert isinstance(result, text_type) assert result == "[all]" + + def test_parsing(self, env): + t = env.from_string("'{{ foo }}', '{{ bar }}', '{{ baz }}'") + rendered = t.render(foo='foobar', bar='barbaz', baz='bazfoo') + assert(rendered == u"'foobar', 'barbaz', 'bazfoo'") +