duster/js/test_cases/explicit_context_setting
Tom Alexander 4a21ae5af3
Add tests for explicit context setting that check failure conditions and implement a helper function to generate a new breadcrumb stack.
2020-05-25 15:40:42 -04:00
..
README.md Add tests for explicit context setting that check failure conditions and implement a helper function to generate a new breadcrumb stack. 2020-05-25 15:40:42 -04:00
default.dust Greatly expand the explicit_context_setting test. 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
input1.json Add tests for explicit context setting that check failure conditions and implement a helper function to generate a new breadcrumb stack. 2020-05-25 15:40:42 -04:00
main.dust Add tests for explicit context setting that check failure conditions and implement a helper function to generate a new breadcrumb stack. 2020-05-25 15:40:42 -04:00
other.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
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

README.md

$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.

Else Blocks

Else blocks also use an explicit context.

Complete Failure

If the walk destination does not exist, and the explicit context does not exist, then you end up with absolutely no context.

Regular Path Failure

If the regular path fails but the explicit path succeeds then the context is set to the explicit path.

Falsey Explicit Path

Since dust would not walk to a falsey path, theres no difference between a falsey path and a non-existent path.