duster/js/test_cases/explicit_context_setting
Tom Alexander 1152ff9974
Greatly expand the explicit_context_setting test.
Turns out explicit context setting works in a lot more places than the official dustjs pages indicate. Also some things don't make much sense (like setting it on a block works but not on an inline partial).
2020-05-24 18:16:16 -04:00
..
default_explicit.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
default.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
input1.json Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
main.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
other.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
override_double_explicit.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
override_explicit.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
override.dust Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00
README.md Greatly expand the explicit_context_setting test. 2020-05-24 18:16:16 -04:00

$idx and $len

$idx and $len do not survive through an explicit context setting, which will work perfectly with my injected-context architecture.

You can use $idx and $len as your explicit context, but as scalar values I do not think there is a way to access them anyway.

Exists and Not-Exists

Looks like you can exlicitly set a context with exists and not-exists tags too. This works out well in the parser because I am using the same code for those blocks.

Partials

Explicitly setting a context in a partial also works. The explicit context takes priority over the parameters in the partial tag.

This works for both regular named partials and quoted partials.

Helpers

Explicitly setting a context in a helper works too.

Blocks and Inline Partials

Explicitly setting a context on an inline partial does not work, but it does not error out either, so I need to add support for this in the parser.

Explicitly setting a context on a block does work.

References

Explicitly setting a context does not work on a reference, but it has revealed that invalid dust is rendered verbatim. I'm going to leave that commented out until I can address that in a later branch.

Paths

Explicit contexts do support deep paths