mozilla / nunjucks

A powerful templating engine with inheritance, asynchronous control, and more (jinja2 inspired)
https://mozilla.github.io/nunjucks/
BSD 2-Clause "Simplified" License
8.48k stars 634 forks source link

fix in operator #1451

Open TheChoconut opened 9 months ago

TheChoconut commented 9 months ago

Summary

When using the in operator inside a template literal, if the object is null, compiler will fail.

For example: {{ 'yes' if myOption in preferences else 'no' }} fails to render if preferences is not in context map.

In Python's Jinja2 render, it is possible to setup the compiler to make this render to no. I would expect this not to fail if throwOnUndefined is set to false. If this is not the expected behavior, would like to hear what would be the option to support this.

Also would like to add a test for this but I am not sure what would be the correct location.

This PR fixes the compiler issue.

Checklist

I've completed the checklist below to ensure I didn't forget anything. This makes reviewing this PR as easy as possible for the maintainers. And it gets this change released as soon as possible.