diff --git a/src/java/com/claro/module_system/clarodocs/BUILD b/src/java/com/claro/module_system/clarodocs/BUILD index e811aa9e..a2bfce0d 100644 --- a/src/java/com/claro/module_system/clarodocs/BUILD +++ b/src/java/com/claro/module_system/clarodocs/BUILD @@ -14,8 +14,10 @@ java_binary( "//src/java/com/claro/module_system/clarodocs/html_rendering/aliases", "//src/java/com/claro/module_system/clarodocs/html_rendering/contracts", "//src/java/com/claro/module_system/clarodocs/html_rendering/homepage:homepage_html", + "//src/java/com/claro/module_system/clarodocs/html_rendering/initializers", "//src/java/com/claro/module_system/clarodocs/html_rendering/procedures:procedure_html", "//src/java/com/claro/module_system/clarodocs/html_rendering/typedefs:type_html", + "//src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers", "//src/java/com/claro/module_system/module_serialization/proto:serialized_claro_module_java_proto", ], visibility = ["//visibility:public"], diff --git a/src/java/com/claro/module_system/clarodocs/ClaroDocsGenerator.java b/src/java/com/claro/module_system/clarodocs/ClaroDocsGenerator.java index 46623663..44de11fa 100644 --- a/src/java/com/claro/module_system/clarodocs/ClaroDocsGenerator.java +++ b/src/java/com/claro/module_system/clarodocs/ClaroDocsGenerator.java @@ -4,8 +4,10 @@ import com.claro.module_system.clarodocs.html_rendering.aliases.AliasHtml; import com.claro.module_system.clarodocs.html_rendering.contracts.ContractHtml; import com.claro.module_system.clarodocs.html_rendering.homepage.HomePageHtml; +import com.claro.module_system.clarodocs.html_rendering.initializers.InitializersHtml; import com.claro.module_system.clarodocs.html_rendering.procedures.ProcedureHtml; import com.claro.module_system.clarodocs.html_rendering.typedefs.TypeHtml; +import com.claro.module_system.clarodocs.html_rendering.unwrappers.UnwrappersHtml; import com.claro.module_system.module_serialization.proto.SerializedClaroModule; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableTable; @@ -56,7 +58,17 @@ public static void main(String[] args) throws IOException { // Render contract impls. serializedClaroModule.getExportedContractImplementationsList().forEach( contractImpl -> ContractHtml.renderContractImplHtml(res, contractImpl)); - // Top-level procedure defs. + // Render initializers. + serializedClaroModule.getExportedTypeDefinitions().getInitializersByTypeNameMap() + .forEach( + (initializedTypeName, procedures) -> + InitializersHtml.renderInitializersBlock(res, initializedTypeName, procedures)); + // Render unwrappers. + serializedClaroModule.getExportedTypeDefinitions().getUnwrappersByTypeNameMap() + .forEach( + (unwrappedTypeName, procedures) -> + UnwrappersHtml.renderUnwrappersBlock(res, unwrappedTypeName, procedures)); + // Render top-level procedure defs. res.append( serializedClaroModule.getExportedProcedureDefinitionsList().stream() .map(ProcedureHtml::generateProcedureHtml) diff --git a/src/java/com/claro/module_system/clarodocs/html_rendering/initializers/BUILD b/src/java/com/claro/module_system/clarodocs/html_rendering/initializers/BUILD new file mode 100644 index 00000000..ca210c4d --- /dev/null +++ b/src/java/com/claro/module_system/clarodocs/html_rendering/initializers/BUILD @@ -0,0 +1,13 @@ + +java_library( + name = "initializers", + srcs = ["InitializersHtml.java"], + deps = [ + "//src/java/com/claro/module_system/clarodocs/html_rendering:util", + "//src/java/com/claro/module_system/clarodocs/html_rendering/procedures:procedure_html", + "//src/java/com/claro/module_system/module_serialization/proto:serialized_claro_module_java_proto", + ], + visibility = [ + "//src/java/com/claro/module_system/clarodocs:__pkg__", + ] +) diff --git a/src/java/com/claro/module_system/clarodocs/html_rendering/initializers/InitializersHtml.java b/src/java/com/claro/module_system/clarodocs/html_rendering/initializers/InitializersHtml.java new file mode 100644 index 00000000..0af234e7 --- /dev/null +++ b/src/java/com/claro/module_system/clarodocs/html_rendering/initializers/InitializersHtml.java @@ -0,0 +1,33 @@ +package com.claro.module_system.clarodocs.html_rendering.initializers; + +import com.claro.module_system.clarodocs.html_rendering.Util; +import com.claro.module_system.clarodocs.html_rendering.procedures.ProcedureHtml; +import com.claro.module_system.module_serialization.proto.SerializedClaroModule; + +import java.util.stream.Collectors; + +import static com.claro.module_system.clarodocs.html_rendering.Util.GrammarPart.INITIALIZERS; + +public class InitializersHtml { + public static final String INITIALIZERS_CLASS = "initializers"; + public static final String INITIALIZERS_BLOCK_TEMPLATE = + INITIALIZERS + " %s {\n%s\n}"; + + public static void renderInitializersBlock( + StringBuilder res, + String initializedTypeName, + SerializedClaroModule.ExportedTypeDefinitions.ProcedureList procedures) { + res.append( + Util.wrapAsDefaultCodeBlock( + INITIALIZERS_CLASS, + initializedTypeName, + String.format( + INITIALIZERS_BLOCK_TEMPLATE, + initializedTypeName, + procedures.getProceduresList().stream() + .map(procedure -> ProcedureHtml.generateProcedureHtmlWithIndentationLevel(procedure, 1)) + .collect(Collectors.joining("\n")) + ) + )); + } +} diff --git a/src/java/com/claro/module_system/clarodocs/html_rendering/procedures/BUILD b/src/java/com/claro/module_system/clarodocs/html_rendering/procedures/BUILD index a7cf3b11..db5f083d 100644 --- a/src/java/com/claro/module_system/clarodocs/html_rendering/procedures/BUILD +++ b/src/java/com/claro/module_system/clarodocs/html_rendering/procedures/BUILD @@ -10,7 +10,9 @@ java_library( "//src/java/com/claro/module_system/module_serialization/proto/claro_types:claro_types_java_proto", ], visibility = [ - "//src/java/com/claro/module_system/clarodocs/html_rendering/contracts:__pkg__", "//src/java/com/claro/module_system/clarodocs:__pkg__", + "//src/java/com/claro/module_system/clarodocs/html_rendering/contracts:__pkg__", + "//src/java/com/claro/module_system/clarodocs/html_rendering/initializers:__pkg__", + "//src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers:__pkg__", ], ) \ No newline at end of file diff --git a/src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers/BUILD b/src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers/BUILD new file mode 100644 index 00000000..761c45aa --- /dev/null +++ b/src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers/BUILD @@ -0,0 +1,13 @@ + +java_library( + name = "unwrappers", + srcs = ["UnwrappersHtml.java"], + deps = [ + "//src/java/com/claro/module_system/clarodocs/html_rendering:util", + "//src/java/com/claro/module_system/clarodocs/html_rendering/procedures:procedure_html", + "//src/java/com/claro/module_system/module_serialization/proto:serialized_claro_module_java_proto", + ], + visibility = [ + "//src/java/com/claro/module_system/clarodocs:__pkg__", + ] +) diff --git a/src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers/UnwrappersHtml.java b/src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers/UnwrappersHtml.java new file mode 100644 index 00000000..c9d2afc2 --- /dev/null +++ b/src/java/com/claro/module_system/clarodocs/html_rendering/unwrappers/UnwrappersHtml.java @@ -0,0 +1,33 @@ +package com.claro.module_system.clarodocs.html_rendering.unwrappers; + +import com.claro.module_system.clarodocs.html_rendering.Util; +import com.claro.module_system.clarodocs.html_rendering.procedures.ProcedureHtml; +import com.claro.module_system.module_serialization.proto.SerializedClaroModule; + +import java.util.stream.Collectors; + +import static com.claro.module_system.clarodocs.html_rendering.Util.GrammarPart.UNWRAPPERS; + +public class UnwrappersHtml { + public static final String UNWRAPPERS_CLASS = "unwrappers"; + public static final String UNWRAPPERS_BLOCK_TEMPLATE = + UNWRAPPERS + " %s {\n%s\n}"; + + public static void renderUnwrappersBlock( + StringBuilder res, + String unwrappedTypeName, + SerializedClaroModule.ExportedTypeDefinitions.ProcedureList procedures) { + res.append( + Util.wrapAsDefaultCodeBlock( + UNWRAPPERS_CLASS, + unwrappedTypeName, + String.format( + UNWRAPPERS_BLOCK_TEMPLATE, + unwrappedTypeName, + procedures.getProceduresList().stream() + .map(procedure -> ProcedureHtml.generateProcedureHtmlWithIndentationLevel(procedure, 1)) + .collect(Collectors.joining("\n")) + ) + )); + } +}