ref[Python]: refactor generate python protocol

This commit is contained in:
godotg
2024-05-29 14:39:36 +08:00
parent 2682257b4d
commit 3df484249c
6 changed files with 31 additions and 36 deletions
@@ -81,7 +81,8 @@ public class CodeGenerateCpp implements ICodeGenerate {
@Override
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile(registrations);
createTemplateFile();
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolManagerTemplate.h");
var protocol_imports = new StringBuilder();
@@ -104,14 +105,11 @@ public class CodeGenerateCpp implements ICodeGenerate {
var protocol_registration = new StringBuilder();
for (var registration : GenerateProtocolFile.subProtocolFirst(registrations)) {
var protocol_id = registration.protocolId();
// protocol
protocol_class.append(protocol_class(registration)).append(LS);
// registration
protocol_registration.append(protocol_registration(registration)).append(LS);
}
var protocolTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolsTemplate.h");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_root_path, protocolOutputRootPath
@@ -126,7 +124,8 @@ public class CodeGenerateCpp implements ICodeGenerate {
@Override
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile(registrations);
createTemplateFile();
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolManagerTemplate.h");
var protocol_imports = new StringBuilder();
@@ -148,7 +147,6 @@ public class CodeGenerateCpp implements ICodeGenerate {
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var protocolTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolTemplate.h");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_root_path, protocolOutputRootPath
@@ -157,7 +155,6 @@ public class CodeGenerateCpp implements ICodeGenerate {
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
));
var outputPath = StringUtils.format("{}/{}/{}.h", protocolOutputPath, GenerateProtocolPath.protocolPathPeriod(protocol_id), protocol_name);
var file = new File(outputPath);
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
@@ -167,7 +164,8 @@ public class CodeGenerateCpp implements ICodeGenerate {
@Override
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile(registrations);
createTemplateFile();
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolManagerTemplate.h");
var protocol_imports = new StringBuilder();
@@ -185,9 +183,9 @@ public class CodeGenerateCpp implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated C++ protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
for (var registration : registrations) {
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var protocolTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolTemplate.h");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_root_path, protocolOutputRootPath
@@ -196,7 +194,6 @@ public class CodeGenerateCpp implements ICodeGenerate {
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
));
var outputPath = StringUtils.format("{}/{}.h", protocolOutputPath, protocol_name);
var file = new File(outputPath);
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
@@ -205,7 +202,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
}
public void createTemplateFile(List<ProtocolRegistration> registrations) throws IOException {
public void createTemplateFile() throws IOException {
var list = List.of("cpp/ByteBuffer.h");
for (var fileName : list) {
@@ -81,6 +81,8 @@ public class CodeGenerateCsharp implements ICodeGenerate {
@Override
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
createProtocolManagerFile(registrations);
var mergerProtocolPathMap = GenerateProtocolPath.mergerProtocolPathMap();
for (var entry : mergerProtocolPathMap.entrySet()) {
var protocol_merger_name = StringUtils.capitalize(entry.getKey());
@@ -95,7 +97,6 @@ public class CodeGenerateCsharp implements ICodeGenerate {
// registration
protocol_registration.append(protocol_registration(registration)).append(LS);
}
var protocolTemplate = ClassUtils.getFileFromClassPathToString("csharp/ProtocolTemplate.cs");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
@@ -112,6 +113,7 @@ public class CodeGenerateCsharp implements ICodeGenerate {
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
createProtocolManagerFile(registrations);
for (var registration : registrations) {
var protocolId = registration.protocolId();
var protocolClazzName = registration.protocolConstructor().getDeclaringClass().getSimpleName();
@@ -127,6 +129,7 @@ public class CodeGenerateCsharp implements ICodeGenerate {
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
createProtocolManagerFile(registrations);
for (var registration : registrations) {
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var formatProtocolTemplate = formatProtocolTemplate(registration);
@@ -79,6 +79,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolManagerTemplate.mjs");
var protocol_imports = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
@@ -95,17 +96,16 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated ES protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
var protocol_class = new StringBuilder();
var protocol_registration = new StringBuilder();
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
// protocol
protocol_class.append(formatProtocolClassTemplate(registration)).append(LS);
protocol_registration.append(StringUtils.format("Protocols.{} = {}", protocol_name, protocol_name)).append(LS);
}
var protocolTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolsTemplate.mjs");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
@@ -121,6 +121,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.mjs文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolManagerTemplate.mjs");
var protocol_imports = new StringBuilder();
@@ -138,6 +139,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated ES protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
@@ -153,6 +155,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.mjs文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolManagerTemplate.mjs");
var protocol_imports = new StringBuilder();
@@ -170,6 +173,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated ES protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
@@ -78,6 +78,7 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.js文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
var protocol_imports = new StringBuilder();
@@ -95,24 +96,21 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated Javascript protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
var protocol_class = new StringBuilder();
var protocol_registration = new StringBuilder();
for (var registration : registrations) {
var protocol_id = registration.protocolId();
// protocol
protocol_class.append(protocol_class(registration)).append(LS);
// registration
protocol_registration.append(protocol_registration(registration)).append(LS);
}
protocol_registration.append(LS);
for (var registration : registrations) {
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_registration.append(StringUtils.format("Protocols.{} = {}", protocol_name, protocol_name)).append(LS);
}
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolsTemplate.js");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
@@ -128,6 +126,7 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.js文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
var protocol_imports = new StringBuilder();
@@ -149,14 +148,12 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolTemplate.js");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_name, protocol_name
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
));
var outputPath = StringUtils.format("{}/{}/{}.js", protocolOutputPath, GenerateProtocolPath.protocolPathPeriod(protocol_id), protocol_name);
var file = new File(outputPath);
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
@@ -167,6 +164,8 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
@Override
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.js文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
var protocol_imports = new StringBuilder();
@@ -188,14 +187,12 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolTemplate.js");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_name, protocol_name
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
));
var outputPath = StringUtils.format("{}/{}.js", protocolOutputPath, protocol_name);
var file = new File(outputPath);
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
@@ -78,6 +78,7 @@ public class CodeGenerateLua implements ICodeGenerate {
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
var protocol_imports = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
protocol_imports.append(StringUtils.format("local Protocols = require(\"{}.Protocols\")", protocolOutputRootPath)).append(LS);
@@ -101,20 +102,16 @@ public class CodeGenerateLua implements ICodeGenerate {
var protocol_registration = new StringBuilder();
for (var registration : registrations) {
var protocol_id = registration.protocolId();
// protocol
protocol_class.append(protocol_class(registration)).append(LS);
// registration
protocol_registration.append(protocol_registration(registration)).append(LS);
}
protocol_registration.append(LS);
for (var registration : registrations) {
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_registration.append(StringUtils.format("Protocols.{} = {}", protocol_name, protocol_name)).append(LS);
}
var protocolTemplate = ClassUtils.getFileFromClassPathToString("lua/ProtocolsTemplate.lua");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
@@ -131,6 +128,7 @@ public class CodeGenerateLua implements ICodeGenerate {
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
var protocol_imports = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
for (var registration : registrations) {
@@ -140,7 +138,6 @@ public class CodeGenerateLua implements ICodeGenerate {
protocol_imports.append(StringUtils.format("local {} = require(\"{}.{}.{}\")", protocol_name, protocolOutputRootPath, path.replace(StringUtils.SLASH, StringUtils.PERIOD), protocol_name)).append(LS);
protocol_manager_registrations.append(StringUtils.format("protocols[{}] = {}", protocol_id, protocol_name)).append(LS);
}
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("lua/ProtocolManagerTemplate.lua");
var placeholderMap = Map.of(
CodeTemplatePlaceholder.protocol_imports, protocol_imports.toString()
@@ -167,6 +164,7 @@ public class CodeGenerateLua implements ICodeGenerate {
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
var protocol_imports = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
for (var registration : registrations) {
@@ -81,9 +81,9 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.ts文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("typescript/ProtocolManagerTemplate.ts");
var protocol_imports_manager = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
protocol_imports_manager.append("import Protocols from './Protocols';").append(LS);
@@ -119,7 +119,6 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
protocol_class.append(formatProtocolTemplate).append(LS);
protocol_registration.append(StringUtils.format("static {} = {}", protocol_name, protocol_name)).append(LS);
}
var protocolTemplate = ClassUtils.getFileFromClassPathToString("typescript/ProtocolsTemplate.ts");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_imports, protocol_imports_protocols.toString()
@@ -136,9 +135,9 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.ts文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("typescript/ProtocolManagerTemplate.ts");
var protocol_imports = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
for (var registration : registrations) {
@@ -154,11 +153,11 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated TypeScript protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var protocolTemplate = ClassUtils.getFileFromClassPathToString("typescript/ProtocolTemplate.ts");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_id, String.valueOf(protocol_id)
, CodeTemplatePlaceholder.protocol_name, protocol_name
@@ -168,7 +167,6 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
, CodeTemplatePlaceholder.protocol_write_serialization, protocol_write_serialization(registration)
, CodeTemplatePlaceholder.protocol_read_deserialization, protocol_read_deserialization(registration)
));
var outputPath = StringUtils.format("{}/{}/{}.ts", protocolOutputPath, GenerateProtocolPath.protocolPathSlash(protocol_id), protocol_name);
var file = new File(outputPath);
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
@@ -180,9 +178,9 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
createTemplateFile();
// 生成ProtocolManager.ts文件
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("typescript/ProtocolManagerTemplate.ts");
var protocol_imports = new StringBuilder();
var protocol_manager_registrations = new StringBuilder();
for (var registration : registrations) {
@@ -191,7 +189,6 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
protocol_imports.append(StringUtils.format("import {} from './{}';", protocol_name, protocol_name)).append(LS);
protocol_manager_registrations.append(StringUtils.format("protocols.set({}, {});", protocol_id, protocol_name)).append(LS);
}
var placeholderMap = Map.of(CodeTemplatePlaceholder.protocol_imports, protocol_imports.toString()
, CodeTemplatePlaceholder.protocol_manager_registrations, protocol_manager_registrations.toString());
var formatProtocolManagerTemplate = CodeTemplatePlaceholder.formatTemplate(protocolManagerTemplate, placeholderMap);
@@ -199,11 +196,11 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
logger.info("Generated TypeScript protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
var protocolTemplate = ClassUtils.getFileFromClassPathToString("typescript/ProtocolTemplate.ts");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_id, String.valueOf(protocol_id)
, CodeTemplatePlaceholder.protocol_name, protocol_name
@@ -213,7 +210,6 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
, CodeTemplatePlaceholder.protocol_write_serialization, protocol_write_serialization(registration)
, CodeTemplatePlaceholder.protocol_read_deserialization, protocol_read_deserialization(registration)
));
var outputPath = StringUtils.format("{}/{}.ts", protocolOutputPath, protocol_name);
var file = new File(outputPath);
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);