public NodeJSSurfaceNamer(String packageName, boolean isGcloud) { super( new JSNameFormatter(), new ModelTypeFormatterImpl(new NodeJSModelTypeNameConverter(packageName)), new JSTypeTable(packageName), new JSCommentReformatter(), packageName, packageName); this.packageName = packageName; this.isGcloud = isGcloud; }
@Override public TypedValue getImplZeroValue(TypeRef type) { return getSnippetZeroValue(type); }
@Override public TypedValue getEnumValue(TypeRef type, EnumValue value) { return TypedValue.create(getTypeName(type), String.format("'%s'", value.getSimpleName())); } }
@Test public void testGetEnumValue() { String packageName = "library.v1"; TypeRef type = ModelTypeNameConverterTestUtil.getTestEnumType(tempDir); EnumValue value = type.getEnumType().getValues().get(0); NodeJSModelTypeNameConverter converter = new NodeJSModelTypeNameConverter(packageName); assertThat( converter .getEnumValue(type, value) .getValueAndSaveTypeNicknameIn(new JSTypeTable(packageName))) .isEqualTo("'GOOD'"); } }
/** * Returns the NodeJS representation of a zero value for that type, to be used in code sample doc. */ @Override public TypedValue getSnippetZeroValue(TypeRef type) { // Don't call getTypeName; we don't need to import these. if (type.isMap()) { return TypedValue.create(new TypeName("Object"), "{}"); } if (type.isRepeated()) { return TypedValue.create(new TypeName("Array"), "[]"); } if (PRIMITIVE_ZERO_VALUE.containsKey(type.getKind())) { return TypedValue.create(getTypeName(type), PRIMITIVE_ZERO_VALUE.get(type.getKind())); } if (type.isMessage()) { return TypedValue.create(getTypeName(type), "{}"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } return TypedValue.create(new TypeName(""), "null"); }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { return new TypeName("Object"); } else if (type.isRepeated()) { TypeName elementTypeName = getTypeNameForElementType(type); return new TypeName("", "", "%i[]", elementTypeName); } else { return getTypeNameForElementType(type); } }
private static ModelTypeTable createTypeTable(GapicProductConfig productConfig) { String packageName = productConfig.getPackageName(); return new ModelTypeTable( new JSTypeTable(packageName), new NodeJSModelTypeNameConverter(packageName)); }
/** * Returns the NodeJS representation of a type, without cardinality. If the type is a primitive, * getTypeNameForElementType returns it in unboxed form. */ @Override public TypeName getTypeNameForElementType(TypeRef type) { String primitiveTypeName = PRIMITIVE_TYPE_MAP.get(type.getKind()); if (primitiveTypeName != null) { return new TypeName(primitiveTypeName); } switch (type.getKind()) { case TYPE_MESSAGE: return getTypeName(type.getMessageType()); case TYPE_ENUM: return getTypeName(type.getEnumType()); default: throw new IllegalArgumentException("unknown type kind: " + type.getKind()); } }
private GapicInterfaceContext createContext( InterfaceModel apiInterface, GapicProductConfig productConfig) { return GapicInterfaceContext.create( apiInterface, productConfig, new ModelTypeTable( new JSTypeTable(productConfig.getPackageName()), new NodeJSModelTypeNameConverter(productConfig.getPackageName())), new NodeJSSurfaceNamer(productConfig.getPackageName(), NodeJSUtils.isGcloud(productConfig)), new NodeJSFeatureConfig()); } }
private GapicInterfaceContext createContext( InterfaceModel apiInterface, GapicProductConfig productConfig) { return GapicInterfaceContext.create( apiInterface, productConfig, new ModelTypeTable( new JSTypeTable(productConfig.getPackageName()), new NodeJSModelTypeNameConverter(productConfig.getPackageName())), new NodeJSSurfaceNamer(productConfig.getPackageName(), NodeJSUtils.isGcloud(productConfig)), new NodeJSFeatureConfig()); } }
private GapicInterfaceContext createContext( InterfaceModel apiInterface, GapicProductConfig productConfig) { return GapicInterfaceContext.create( apiInterface, productConfig, new ModelTypeTable( new JSTypeTable(productConfig.getPackageName()), new NodeJSModelTypeNameConverter(productConfig.getPackageName())), new NodeJSSurfaceNamer(productConfig.getPackageName(), NodeJSUtils.isGcloud(productConfig)), new NodeJSFeatureConfig()); } }
private GapicInterfaceContext createContext( InterfaceModel apiInterface, GapicProductConfig productConfig) { return GapicInterfaceContext.create( apiInterface, productConfig, new ModelTypeTable( new JSTypeTable(productConfig.getPackageName()), new NodeJSModelTypeNameConverter(productConfig.getPackageName())), new NodeJSSurfaceNamer(productConfig.getPackageName(), NodeJSUtils.isGcloud(productConfig)), new NodeJSFeatureConfig()); } }
private ViewModel generateDoc(ProtoFile file, GapicProductConfig productConfig) { ModelTypeTable typeTable = new ModelTypeTable( new JSTypeTable(productConfig.getPackageName()), new NodeJSModelTypeNameConverter(productConfig.getPackageName())); // Use file path for package name to get file-specific package instead of package for the API. SurfaceNamer namer = new NodeJSSurfaceNamer(productConfig.getPackageName(), NodeJSUtils.isGcloud(productConfig)); JSCommentReformatter commentReformatter = new JSCommentReformatter(); GrpcDocView.Builder doc = GrpcDocView.newBuilder(); doc.templateFileName(DOC_TEMPLATE_FILENAME); doc.outputPath(getOutputPath(namer, file)); doc.fileHeader( fileHeaderTransformer.generateFileHeader( productConfig, ImportSectionView.newBuilder().build(), namer)); doc.elementDocs( grpcElementDocTransformer.generateElementDocs(productConfig, typeTable, namer, file)); return doc.build(); }