Search in sources :

Example 26 with PyExpr

use of com.google.template.soy.pysrc.restricted.PyExpr in project closure-templates by google.

the class StrSubFunction method computeForPySrc.

@Override
public PyExpr computeForPySrc(List<PyExpr> args) {
    // Coerce SanitizedContent args to strings.
    String base = args.get(0).toPyString().getText();
    PyExpr start = args.get(1);
    PyExpr end = args.size() == 3 ? args.get(2) : null;
    return new PyStringExpr("(" + base + ")[" + start.getText() + ":" + (end != null ? end.getText() : "") + "]");
}
Also used : PyExpr(com.google.template.soy.pysrc.restricted.PyExpr) PyStringExpr(com.google.template.soy.pysrc.restricted.PyStringExpr)

Example 27 with PyExpr

use of com.google.template.soy.pysrc.restricted.PyExpr in project closure-templates by google.

the class BidiDirAttrFunction method computeForPySrc.

@Override
public PyExpr computeForPySrc(List<PyExpr> args) {
    PyExpr value = args.get(0);
    PyExpr isHtml = (args.size() == 2) ? args.get(1) : null;
    String callText = "bidi.dir_attr(" + bidiGlobalDirProvider.get().getCodeSnippet() + ", " + value.getText() + (isHtml != null ? ", " + isHtml.getText() : "") + ")";
    return new PyExpr(callText, Integer.MAX_VALUE);
}
Also used : PyExpr(com.google.template.soy.pysrc.restricted.PyExpr)

Example 28 with PyExpr

use of com.google.template.soy.pysrc.restricted.PyExpr in project closure-templates by google.

the class MinFunction method computeForPySrc.

@Override
public PyExpr computeForPySrc(List<PyExpr> args) {
    PyExpr arg0 = args.get(0);
    PyExpr arg1 = args.get(1);
    PyFunctionExprBuilder fnBuilder = new PyFunctionExprBuilder("min");
    return fnBuilder.addArg(arg0).addArg(arg1).asPyExpr();
}
Also used : PyExpr(com.google.template.soy.pysrc.restricted.PyExpr) PyFunctionExprBuilder(com.google.template.soy.pysrc.restricted.PyFunctionExprBuilder)

Example 29 with PyExpr

use of com.google.template.soy.pysrc.restricted.PyExpr in project closure-templates by google.

the class GenPyExprsVisitorTest method testMsgWithArithmeticExpression.

@Test
public void testMsgWithArithmeticExpression() {
    String soyCode = "{@param username:?}\n" + "{msg desc=\"var placeholder\"}" + "Hello {$username + 1}" + "{/msg}\n";
    String expectedPyCode = "translator_impl.render(" + "translator_impl.prepare(" + "###, " + "'Hello {XXX}', " + "('XXX',)), " + "{'XXX': str(runtime.type_safe_add(data.get('username'), 1))})";
    assertThatSoyExpr(soyCode).compilesTo(new PyExpr(expectedPyCode, Integer.MAX_VALUE));
}
Also used : PyExpr(com.google.template.soy.pysrc.restricted.PyExpr) Test(org.junit.Test)

Example 30 with PyExpr

use of com.google.template.soy.pysrc.restricted.PyExpr in project closure-templates by google.

the class GenPyExprsVisitorTest method testMsgFallbackGroupNodeWithTwoNodes.

@Test
public void testMsgFallbackGroupNodeWithTwoNodes() {
    String soyCode = "{msg meaning=\"verb\" desc=\"Used as a verb.\"}\n" + "  archive\n" + "{fallbackmsg desc=\"\"}\n" + "  ARCHIVE\n" + "{/msg}\n";
    String expectedPyCode = "translator_impl.render_literal(" + "translator_impl.prepare_literal(" + "###, " + "'archive')) " + "if translator_impl.is_msg_available(###) or " + "not translator_impl.is_msg_available(###) " + "else translator_impl.render_literal(" + "translator_impl.prepare_literal(###, 'ARCHIVE'))";
    assertThatSoyExpr(soyCode).compilesTo(new PyExpr(expectedPyCode, PyExprUtils.pyPrecedenceForOperator(Operator.CONDITIONAL)));
}
Also used : PyExpr(com.google.template.soy.pysrc.restricted.PyExpr) Test(org.junit.Test)

Aggregations

PyExpr (com.google.template.soy.pysrc.restricted.PyExpr)82 Test (org.junit.Test)58 PyStringExpr (com.google.template.soy.pysrc.restricted.PyStringExpr)21 PyFunctionExprBuilder (com.google.template.soy.pysrc.restricted.PyFunctionExprBuilder)6 LinkedHashMap (java.util.LinkedHashMap)4 SoyPySrcPrintDirective (com.google.template.soy.pysrc.restricted.SoyPySrcPrintDirective)3 SoyPrintDirective (com.google.template.soy.shared.restricted.SoyPrintDirective)3 SoyNode (com.google.template.soy.soytree.SoyNode)3 ExprNode (com.google.template.soy.exprtree.ExprNode)2 ExprRootNode (com.google.template.soy.exprtree.ExprRootNode)2 PyListExpr (com.google.template.soy.pysrc.restricted.PyListExpr)2 MsgPluralNode (com.google.template.soy.soytree.MsgPluralNode)2 PrintNode (com.google.template.soy.soytree.PrintNode)2 SoyFileSetNode (com.google.template.soy.soytree.SoyFileSetNode)2 ParentSoyNode (com.google.template.soy.soytree.SoyNode.ParentSoyNode)2 Supplier (com.google.common.base.Supplier)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableList.toImmutableList (com.google.common.collect.ImmutableList.toImmutableList)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 Truth.assertThat (com.google.common.truth.Truth.assertThat)1