public class ExtractMsgVariablesVisitor extends AbstractSoyNodeVisitor<Void>
MsgFallbackGroupNodes to separate {let} and print nodes.
We then move the let node to the nearest block ancestor, so that the print node can be emitted as
an expression instead of a statement. After this pass, all MsgFallbackGroupNodes will only appear
inside LetContentNodes.
TODO(slaks): Generalize to extract all nodes that create statements but must appear in expression
context (MsgHtmlTagNode, CallParamNode, LogNode, & idom attribute values)
to variables. This will let us completely remove the many paths in jssrc that conditionally emit
temporary variables.
exec(com.google.template.soy.soytree.SoyNode) must be called on a full parse tree.
| Constructor and Description |
|---|
ExtractMsgVariablesVisitor() |
| Modifier and Type | Method and Description |
|---|---|
Void |
exec(SoyNode node)
Executes the function defined by this visitor.
|
protected void |
visitMsgFallbackGroupNode(MsgFallbackGroupNode node) |
protected void |
visitSoyFileSetNode(SoyFileSetNode node) |
protected void |
visitSoyNode(SoyNode node) |
protected void |
wrapMsgFallbackGroupNodeHelper(MsgFallbackGroupNode msgFbGrpNode,
IdGenerator nodeIdGen) |
visit, visitCallBasicNode, visitCallDelegateNode, visitCallNode, visitCallParamContentNode, visitCallParamNode, visitCallParamValueNode, visitChildren, visitChildrenAllowingConcurrentModification, visitCssNode, visitDebuggerNode, visitForeachIfemptyNode, visitForeachNode, visitForeachNonemptyNode, visitForNode, visitIfCondNode, visitIfElseNode, visitIfNode, visitLetContentNode, visitLetNode, visitLetValueNode, visitLogNode, visitLoopNode, visitMsgHtmlTagNode, visitMsgNode, visitMsgPlaceholderNode, visitMsgPluralCaseNode, visitMsgPluralDefaultNode, visitMsgPluralNode, visitMsgSelectCaseNode, visitMsgSelectDefaultNode, visitMsgSelectNode, visitMsgSubstUnitNode, visitPrintDirectiveNode, visitPrintNode, visitRawTextNode, visitSoyFileNode, visitSwitchCaseNode, visitSwitchDefaultNode, visitSwitchNode, visitTemplateBasicNode, visitTemplateDelegateNode, visitTemplateNode, visitXidNodevisitChildren, visitChildrenAllowingConcurrentModificationpublic Void exec(SoyNode node)
NodeVisitorexec in interface NodeVisitor<SoyNode,Void>exec in class AbstractNodeVisitor<SoyNode,Void>node - The node to execute the function on.protected void visitSoyFileSetNode(SoyFileSetNode node)
visitSoyFileSetNode in class AbstractSoyNodeVisitor<Void>protected void visitMsgFallbackGroupNode(MsgFallbackGroupNode node)
visitMsgFallbackGroupNode in class AbstractSoyNodeVisitor<Void>protected void visitSoyNode(SoyNode node)
visitSoyNode in class AbstractSoyNodeVisitor<Void>node - the visited node.protected void wrapMsgFallbackGroupNodeHelper(MsgFallbackGroupNode msgFbGrpNode, IdGenerator nodeIdGen)