public class GenJsExprsVisitor extends AbstractSoyNodeVisitor<List<JsExpr>>
Precondition: MsgNode should not exist in the tree.
| Modifier and Type | Class and Description |
|---|---|
static interface |
GenJsExprsVisitor.GenJsExprsVisitorFactory
Injectable factory for creating an instance of this class.
|
| Modifier and Type | Field and Description |
|---|---|
protected IsComputableAsJsExprsVisitor |
isComputableAsJsExprsVisitor |
protected List<JsExpr> |
jsExprs
List to collect the results.
|
| Constructor and Description |
|---|
GenJsExprsVisitor(Map<String,SoyJsSrcPrintDirective> soyJsSrcDirectivesMap,
JsExprTranslator jsExprTranslator,
GenCallCodeUtils genCallCodeUtils,
IsComputableAsJsExprsVisitor isComputableAsJsExprsVisitor,
GenJsExprsVisitor.GenJsExprsVisitorFactory genJsExprsVisitorFactory,
ErrorReporter errorReporter,
Deque<Map<String,JsExpr>> localVarTranslations,
TemplateAliases templateAliases) |
| Modifier and Type | Method and Description |
|---|---|
List<JsExpr> |
exec(SoyNode node)
Executes the function defined by this visitor.
|
List<JsExpr> |
execOnChildren(SoyNode.ParentSoyNode<?> node)
Executes this visitor on the children of the given node, without visiting the given node
itself.
|
protected void |
visitCallNode(CallNode node)
Example:
|
protected void |
visitCallParamContentNode(CallParamContentNode node) |
protected void |
visitCssNode(CssNode node)
Note: We would only see a CssNode if the css-handling scheme is BACKEND_SPECIFIC.
|
protected void |
visitIfCondNode(IfCondNode node) |
protected void |
visitIfElseNode(IfElseNode node) |
protected void |
visitIfNode(IfNode node)
Example:
|
protected void |
visitMsgHtmlTagNode(MsgHtmlTagNode node)
Example:
|
protected void |
visitMsgPlaceholderNode(MsgPlaceholderNode node) |
protected void |
visitPrintNode(PrintNode node)
Example:
|
protected void |
visitRawTextNode(RawTextNode node)
Example:
|
protected void |
visitTemplateNode(TemplateNode node) |
protected void |
visitXidNode(XidNode node)
Example:
|
visit, visitCallBasicNode, visitCallDelegateNode, visitCallParamNode, visitCallParamValueNode, visitChildren, visitChildrenAllowingConcurrentModification, visitDebuggerNode, visitForeachIfemptyNode, visitForeachNode, visitForeachNonemptyNode, visitForNode, visitLetContentNode, visitLetNode, visitLetValueNode, visitLogNode, visitLoopNode, visitMsgFallbackGroupNode, visitMsgNode, visitMsgPluralCaseNode, visitMsgPluralDefaultNode, visitMsgPluralNode, visitMsgSelectCaseNode, visitMsgSelectDefaultNode, visitMsgSelectNode, visitMsgSubstUnitNode, visitPrintDirectiveNode, visitSoyFileNode, visitSoyFileSetNode, visitSoyNode, visitSwitchCaseNode, visitSwitchDefaultNode, visitSwitchNode, visitTemplateBasicNode, visitTemplateDelegateNodevisitChildren, visitChildrenAllowingConcurrentModificationprotected final IsComputableAsJsExprsVisitor isComputableAsJsExprsVisitor
public GenJsExprsVisitor(Map<String,SoyJsSrcPrintDirective> soyJsSrcDirectivesMap, JsExprTranslator jsExprTranslator, GenCallCodeUtils genCallCodeUtils, IsComputableAsJsExprsVisitor isComputableAsJsExprsVisitor, GenJsExprsVisitor.GenJsExprsVisitorFactory genJsExprsVisitorFactory, ErrorReporter errorReporter, Deque<Map<String,JsExpr>> localVarTranslations, TemplateAliases templateAliases)
soyJsSrcDirectivesMap - Map of all SoyJsSrcPrintDirectives (name to directive).jsExprTranslator - Instance of JsExprTranslator to use.genCallCodeUtils - Instance of GenCallCodeUtils to use.isComputableAsJsExprsVisitor - The IsComputableAsJsExprsVisitor used by this instance
(when needed).genJsExprsVisitorFactory - Factory for creating an instance of GenJsExprsVisitor.errorReporter - For reporting errors.localVarTranslations - The current stack of replacement JS expressions for the local
variables (and foreach-loop special functions) current in scope.templateAliases - A mapping for looking up the function name for a given fully
qualified name.public List<JsExpr> exec(SoyNode node)
NodeVisitorexec in interface NodeVisitor<SoyNode,List<JsExpr>>exec in class AbstractNodeVisitor<SoyNode,List<JsExpr>>node - The node to execute the function on.public List<JsExpr> execOnChildren(SoyNode.ParentSoyNode<?> node)
protected void visitTemplateNode(TemplateNode node)
visitTemplateNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitRawTextNode(RawTextNode node)
I'm feeling lucky!generates
'I\'m feeling lucky!'
visitRawTextNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitMsgPlaceholderNode(MsgPlaceholderNode node)
visitMsgPlaceholderNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitMsgHtmlTagNode(MsgHtmlTagNode node)
<a href="{$url}">
might generate
'<a href="' + opt_data.url + '">'
visitMsgHtmlTagNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitPrintNode(PrintNode node)
{$boo.foo}
{$goo.moo + 5}
might generate
opt_data.boo.foo gooData4.moo + 5
visitPrintNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitXidNode(XidNode node)
{xid selected-option}
might generate
xid('selected-option')
visitXidNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitCssNode(CssNode node)
Example:
{css selected-option}
{css $foo, bar}
might generate
goog.getCssName('selected-option')
goog.getCssName(opt_data.foo, 'bar')
visitCssNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitIfNode(IfNode node)
{if $boo}
AAA
{elseif $foo}
BBB
{else}
CCC
{/if}
might generate
(opt_data.boo) ? AAA : (opt_data.foo) ? BBB : CCC
visitIfNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitIfCondNode(IfCondNode node)
visitIfCondNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitIfElseNode(IfElseNode node)
visitIfElseNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitCallNode(CallNode node)
{call some.func data="all" /}
{call some.func data="$boo.foo" /}
{call some.func}
{param key="goo" value="$moo" /}
{/call}
{call some.func data="$boo"}
{param key="goo"}Blah{/param}
{/call}
might generate
some.func(opt_data)
some.func(opt_data.boo.foo)
some.func({goo: opt_data.moo})
some.func(soy.$$assignDefaults({goo: 'Blah'}, opt_data.boo))
visitCallNode in class AbstractSoyNodeVisitor<List<JsExpr>>protected void visitCallParamContentNode(CallParamContentNode node)
visitCallParamContentNode in class AbstractSoyNodeVisitor<List<JsExpr>>