/** * Appends the text representation of a select part to a StringBuilder. * @param stringBuilder The StringBuilder to append to. * @param soyMsgSelectPart The SoyMsgSelectPart to add. * @param doUseBracedPhs Whether to use braced placeholders. */ private static void appendSelectToStringBuilder( StringBuilder stringBuilder, SoyMsgSelectPart soyMsgSelectPart, boolean doUseBracedPhs) { stringBuilder.append(IcuSyntaxUtils.getSelectOpenString(soyMsgSelectPart.getSelectVarName())); for (Pair<String, List<SoyMsgPart>> oneSelectCase : soyMsgSelectPart.getCases()) { stringBuilder.append(IcuSyntaxUtils.getSelectCaseOpenString(oneSelectCase.first)); appendMsgPartsToTcStringBuilder(stringBuilder, oneSelectCase.second, doUseBracedPhs); stringBuilder.append(IcuSyntaxUtils.getSelectCaseCloseString()); } stringBuilder.append(IcuSyntaxUtils.getSelectCloseString()); }
/** * Private helper for visitGoogMsgNode(). * Generates code for a {@code MsgSelectNode} inside a message. * @param selectNode A node of type {@code MsgSelectNode}. * @param googMsgNode The enclosing {@code GoogMsgNode} object. * @param googMsgCodeGenInfo Data structure holding information on placeholder * names, plural variable names, and select variable names to be used * for message code generation. */ private void genGoogMsgCodeForSelectNode( MsgSelectNode selectNode, GoogMsgNode googMsgNode, GoogMsgCodeGenInfo googMsgCodeGenInfo) { String selectVarName = googMsgNode.getSelectVarName(selectNode); StringBuilder msgTextCodeSb = googMsgCodeGenInfo.msgTextCodeSb; msgTextCodeSb.append(IcuSyntaxUtils.getSelectOpenString(selectVarName)); updatePlrselVarCodeBits( googMsgCodeGenInfo, selectVarName, jsExprTranslator.translateToJsExpr( selectNode.getExpr(), null, localVarTranslations).getText()); for (CaseOrDefaultNode child : selectNode.getChildren()) { genGoogMsgCodeForChildren(child, googMsgNode, googMsgCodeGenInfo); } msgTextCodeSb.append(IcuSyntaxUtils.getSelectCloseString()); }