public class TranslateToJsExprVisitor extends AbstractReturningExprNodeVisitor<JsExpr>
ExprNode) into an
equivalent JS expression.
Important: Do not use outside of Soy code (treat as superpackage-private).
For example, one might normally access field foo on a protocol buffer by calling
my_pb.getFoo()A Soy author can access the same by writing
{$my_pb.foo}
But the relationship between "foo" and "getFoo" is not preserved by JSCompiler's renamer.
To avoid adding many spurious dependencies on all protocol buffers compiled with a Soy template, we make type-unsound (see CAVEAT below) assumptions:
my.Proto
can be passed to the param $my_pb, then $my_pb's static type is a
super-type of my.Proto.SoyTypeRegistries
allow recognizing input coercion, for example between goog.html.type.SafeHtml
and Soy's html string sub-type.
CAVEAT: These assumptions are unsound, but necessary to be able to deploy JavaScript binaries of acceptable size.
Type-failures are correctness issues but do not lead to increased exposure to XSS or
otherwise compromise security or privacy since a failure to unpack a type leads to a
value that coerces to a trivial value like undefined or "[Object]".
| Modifier and Type | Class and Description |
|---|---|
static interface |
TranslateToJsExprVisitor.TranslateToJsExprVisitorFactory
Injectable factory for creating an instance of this class.
|
| Modifier and Type | Method and Description |
|---|---|
static String |
genMaybeProtect(JsExpr expr,
int minSafePrecedence) |
protected JsExpr |
visitAndOpNode(OperatorNodes.AndOpNode node) |
protected JsExpr |
visitDataAccessNode(DataAccessNode node) |
protected JsExpr |
visitExprRootNode(ExprRootNode node) |
protected JsExpr |
visitFunctionNode(FunctionNode node) |
protected JsExpr |
visitGlobalNode(GlobalNode node) |
protected JsExpr |
visitListLiteralNode(ListLiteralNode node) |
protected JsExpr |
visitMapLiteralNode(MapLiteralNode node) |
protected JsExpr |
visitNotOpNode(OperatorNodes.NotOpNode node) |
protected JsExpr |
visitNullCoalescingOpNode(OperatorNodes.NullCoalescingOpNode node) |
protected JsExpr |
visitOperatorNode(ExprNode.OperatorNode node) |
protected JsExpr |
visitOrOpNode(OperatorNodes.OrOpNode node) |
protected JsExpr |
visitPrimitiveNode(ExprNode.PrimitiveNode node) |
protected JsExpr |
visitStringNode(StringNode node) |
protected JsExpr |
visitVarRefNode(VarRefNode node) |
visit, visitBooleanNode, visitChildren, visitConditionalOpNode, visitDivideByOpNode, visitEqualOpNode, visitExprNode, visitFieldAccessNode, visitFloatNode, visitGreaterThanOpNode, visitGreaterThanOrEqualOpNode, visitIntegerNode, visitItemAccessNode, visitLessThanOpNode, visitLessThanOrEqualOpNode, visitMinusOpNode, visitModOpNode, visitNegativeOpNode, visitNotEqualOpNode, visitNullNode, visitPlusOpNode, visitTimesOpNodeexec, visitChildren, visitChildrenAllowingConcurrentModificationprotected JsExpr visitExprRootNode(ExprRootNode node)
visitExprRootNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitStringNode(StringNode node)
visitStringNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitPrimitiveNode(ExprNode.PrimitiveNode node)
visitPrimitiveNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitListLiteralNode(ListLiteralNode node)
visitListLiteralNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitMapLiteralNode(MapLiteralNode node)
visitMapLiteralNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitVarRefNode(VarRefNode node)
visitVarRefNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitDataAccessNode(DataAccessNode node)
visitDataAccessNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitGlobalNode(GlobalNode node)
visitGlobalNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitNotOpNode(OperatorNodes.NotOpNode node)
visitNotOpNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitAndOpNode(OperatorNodes.AndOpNode node)
visitAndOpNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitOrOpNode(OperatorNodes.OrOpNode node)
visitOrOpNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitNullCoalescingOpNode(OperatorNodes.NullCoalescingOpNode node)
visitNullCoalescingOpNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitOperatorNode(ExprNode.OperatorNode node)
visitOperatorNode in class AbstractReturningExprNodeVisitor<JsExpr>protected JsExpr visitFunctionNode(FunctionNode node)
visitFunctionNode in class AbstractReturningExprNodeVisitor<JsExpr>