Tidy evaluation in a custom environment
We recommend using
eval_tidy() in your DSLs as much as possible
to ensure some consistency across packages (
pronouns, etc). However, some DSLs might need a different
evaluation environment. In this case, you can call
with the bottom and the top of your custom overscope (see
as_overscope() for more information).
eval_tidy_(expr, bottom, top = NULL, env = caller_env())
This is the environment (or the bottom of a set of environments) containing definitions for overscoped symbols. The bottom environment typically contains pronouns (like
.data) while its direct parents contain the overscoping bindings. The last one of these parents is the
The top environment of the overscope. During tidy evaluation, this environment is chained and rechained to lexical enclosures of self-evaluating formulas (or quosures). This is the mechanism that ensures hygienic scoping: the bindings in the overscope have precedence, but the bindings in the dynamic environment where the tidy quotes were created in the first place are in scope as well.
The lexical environment in which to evaluate
eval_tidy_() always installs a
.env pronoun in the
bottom environment of your dynamic scope. This pronoun provides a
shortcut to the original lexical enclosure (typically, the dynamic
environment of a captured argument, see
enquo()). It also
cleans up the overscope after evaluation. See
for evaluating several quosures in the same overscope.