ref[Python]: refactor generate python protocol

This commit is contained in:
godotg
2024-05-29 14:53:31 +08:00
parent 3df484249c
commit 93b34127fc
7 changed files with 11 additions and 56 deletions
@@ -43,48 +43,6 @@ public abstract class GenerateProtocolPath {
protocolPathMap = null;
}
public static String protocolAbsolutePath(short protocolId, CodeLanguage language) {
var path = protocolPathSlash(protocolId);
var name = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId);
if (StringUtils.isBlank(path)) {
path = name;
} else {
path = StringUtils.format("{}/{}", path, name);
}
switch (language) {
case Cpp:
break;
case Go:
break;
case JavaScript:
break;
case EcmaScript:
break;
case TypeScript:
break;
case CSharp:
break;
case Protobuf:
break;
case Lua:
break;
case GdScript:
break;
case Python:
if (StringUtils.isBlank(protocolPathSlash(protocolId))) {
path = StringUtils.PERIOD;
} else {
path = StringUtils.substringBeforeLast(path, StringUtils.SLASH);
path = path.replaceAll(StringUtils.SLASH, StringUtils.PERIOD);
}
break;
case Enhance:
break;
}
return path;
}
/**
* 获取协议生成的路径
*/
@@ -133,7 +133,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_imports.append(StringUtils.format("#include \"{}/{}.h\"", protocolOutputRootPath, GenerateProtocolPath.protocolAbsolutePath(protocol_id, CodeLanguage.Cpp))).append(LS);
protocol_imports.append(StringUtils.format("#include \"{}/{}/{}.h\"", protocolOutputRootPath, GenerateProtocolPath.protocolPathSlash(protocol_id), protocol_name)).append(LS);
protocol_manager_registrations.append(StringUtils.format("protocols[{}] = new {}Registration();", protocol_id, protocol_name)).append(LS);
}
var placeholderMap = Map.of(CodeTemplatePlaceholder.protocol_imports, protocol_imports.toString()
@@ -207,9 +207,8 @@ public class CodeGenerateCsharp implements ICodeGenerate {
for (var protocol : protocolList) {
var protocolId = protocol.protocolId();
var protocolName = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
var path = GenerateProtocolPath.protocolAbsolutePath(protocolId, CodeLanguage.CSharp);
csBuilder.append(StringUtils.format("protocols[{}] = new {}Registration();", protocolId, protocolName, path)).append(LS);
csBuilder.append(StringUtils.format("protocolIdMap[typeof({})] = {};", protocolName, protocolId, path)).append(LS);
csBuilder.append(StringUtils.format("protocols[{}] = new {}Registration();", protocolId, protocolName, protocolName)).append(LS);
csBuilder.append(StringUtils.format("protocolIdMap[typeof({})] = {};", protocolName, protocolId, protocolName)).append(LS);
}
return csBuilder.toString();
}
@@ -109,7 +109,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
var protocolTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolsTemplate.mjs");
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
, CodeTemplatePlaceholder.protocol_registration, protocol_registration.toString()
, CodeTemplatePlaceholder.protocol_registration, protocol_registration.toString()
));
var outputPath = StringUtils.format("{}/Protocols.mjs", protocolOutputPath);
var file = new File(outputPath);
@@ -129,7 +129,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
for (var protocol : registrations) {
var protocol_id = protocol.protocolId();
var protocol_name = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_imports.append(StringUtils.format("import {} from './{}.mjs';", protocol_name, GenerateProtocolPath.protocolAbsolutePath(protocol.protocolId(), CodeLanguage.EcmaScript))).append(LS);
protocol_imports.append(StringUtils.format("import {} from './{}/{}.mjs';", protocol_name, GenerateProtocolPath.protocolPathSlash(protocol.protocolId()), 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()
@@ -163,7 +163,7 @@ public class CodeGenerateEcmaScript implements ICodeGenerate {
for (var protocol : registrations) {
var protocol_id = protocol.protocolId();
var protocol_name = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_imports.append(StringUtils.format("import {} from './{}.mjs';", protocol_name, protocol_name)).append(LS);
protocol_imports.append(StringUtils.format("import {} from './{}.mjs';", 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()
@@ -96,8 +96,7 @@ public abstract class GenerateGdUtils {
for (var protocol : protocolList) {
var protocolId = protocol.protocolId();
var name = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
var path = GenerateProtocolPath.protocolAbsolutePath(protocolId, CodeLanguage.GdScript);
importBuilder.append(StringUtils.format("const {} = preload(\"res://{}/{}.gd\")", name, protocolOutputRootPath, path)).append(LS);
importBuilder.append(StringUtils.format("const {} = preload(\"res://{}/{}/{}.gd\")", name, protocolOutputRootPath, GenerateProtocolPath.protocolPathSlash(protocolId), name)).append(LS);
initList.add(StringUtils.format("{}{}: {}", TAB_ASCII, protocolId, name));
}
var initProtocols = StringUtils.joinWith(StringUtils.COMMA + LS, initList.toArray());
@@ -140,8 +139,7 @@ public abstract class GenerateGdUtils {
var gdBuilder = new StringBuilder();
for (var subProtocolId : subProtocols) {
var name = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(subProtocolId);
var path = GenerateProtocolPath.protocolAbsolutePath(subProtocolId, CodeLanguage.GdScript);
gdBuilder.append(StringUtils.format("const {} = preload(\"res://{}/{}.gd\")", name, protocolOutputRootPath, path)).append(LS);
gdBuilder.append(StringUtils.format("const {} = preload(\"res://{}/{}/{}.gd\")", name, protocolOutputRootPath, GenerateProtocolPath.protocolPathSlash(protocolId), name)).append(LS);
}
return gdBuilder.toString();
}
@@ -159,7 +157,7 @@ public abstract class GenerateGdUtils {
var fieldName = field.getName();
// 生成注释
var fieldNotes = GenerateProtocolNote.fieldNotes(protocolId, fieldName, CodeLanguage.GdScript);
for(var fieldNote : fieldNotes) {
for (var fieldNote : fieldNotes) {
gdBuilder.append(fieldNote).append(LS);
}
var fieldType = gdSerializer(fieldRegistration.serializer()).fieldType(field, fieldRegistration);
@@ -134,7 +134,7 @@ public class CodeGenerateJavaScript implements ICodeGenerate {
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_imports.append(StringUtils.format("import {} from './{}.js';", protocol_name, GenerateProtocolPath.protocolAbsolutePath(registration.protocolId(), CodeLanguage.JavaScript))).append(LS);
protocol_imports.append(StringUtils.format("import {} from './{}/{}.js';", protocol_name, GenerateProtocolPath.protocolPathSlash(registration.protocolId()), 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()
@@ -143,7 +143,7 @@ public class CodeGenerateTypeScript implements ICodeGenerate {
for (var registration : registrations) {
var protocol_id = registration.protocolId();
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
protocol_imports.append(StringUtils.format("import {} from './{}';", protocol_name, GenerateProtocolPath.protocolAbsolutePath(protocol_id, CodeLanguage.TypeScript))).append(LS);
protocol_imports.append(StringUtils.format("import {} from './{}/{}';", protocol_name, GenerateProtocolPath.protocolPathSlash(protocol_id), 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()