Skip to content

Implement proper lexical scoping for templates #62

@shdwcat

Description

@shdwcat

Slot names are currently cascaded down the element tree to enable lazy evaluation of templates, however any inner template element whose slots share names with an outer template element will cause variable shadowing problems. The solution is lexical scoping of slot variables, so that e.g. $name in a template's content only refers to the name slot given by the definition.

Proposed implementation: in YuiTemplateDefinition's constructor, traverse the template content and replace any raw string value that confirms to a YUI script expression with a YuiLexicalExpr with a direct reference to the slots of the template definition. This way we don't actually have to parse the expressions ahead of time to determine if they contain slots, we can simply bind the unparsed expression string to the slot definitions for later evaluation.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions