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() : "") + "]");
}
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);
}
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();
}
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));
}
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)));
}
Aggregations