From 11755fb266b041295db696538562b82ebc3f3c72 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Mon, 23 Jul 2018 23:36:33 +0200 Subject: [PATCH] Fix some name inconsistencies --- .../overgram/generator/Generator.java | 13 ++++---- .../lonamiwebs/overgram/parser/TLArg.java | 24 +++----------- .../lonamiwebs/overgram/parser/TLObject.java | 7 ----- .../lonamiwebs/overgram/utils/Utils.java | 31 +++++++++++++++++++ generator/src/main/resources/mtproto_api.tl | 5 +-- 5 files changed, 45 insertions(+), 35 deletions(-) create mode 100644 generator/src/main/java/io/github/lonamiwebs/overgram/utils/Utils.java diff --git a/generator/src/main/java/io/github/lonamiwebs/overgram/generator/Generator.java b/generator/src/main/java/io/github/lonamiwebs/overgram/generator/Generator.java index 22f35a4..d22a93d 100644 --- a/generator/src/main/java/io/github/lonamiwebs/overgram/generator/Generator.java +++ b/generator/src/main/java/io/github/lonamiwebs/overgram/generator/Generator.java @@ -2,6 +2,7 @@ package io.github.lonamiwebs.overgram.generator; import io.github.lonamiwebs.overgram.parser.TLArg; import io.github.lonamiwebs.overgram.parser.TLObject; +import io.github.lonamiwebs.overgram.utils.Utils; import java.io.*; import java.util.*; @@ -37,7 +38,7 @@ public class Generator { } for (final String name : nsNames.getValue()) { writer.write("public static abstract class "); - writer.write(TLObject.toCamelCase(name)); + writer.write(Utils.toCamelCase(name, true)); writer.write(" extends TLObject {}\n"); } if (!nsNames.getKey().isEmpty()) { @@ -67,11 +68,11 @@ public class Generator { } for (final TLObject object : nsObjects.getValue()) { writer.write("public static class "); - writer.write(TLObject.toCamelCase(object.name)); + writer.write(Utils.toCamelCase(object.name, true)); writer.write(" extends "); if (extendsName == null) { writer.write("Abstract."); - writer.write(TLObject.toCamelCase(object.type)); + writer.write(Utils.toCamelCase(object.type, true)); } else { writer.write(extendsName); } @@ -91,7 +92,7 @@ public class Generator { // Use the builder pattern because Java is stupid and has no optional named arguments. // Objects will be created with nothing set and the arguments set with .argument(value). writer.write("public "); - writer.write(TLObject.toCamelCase(object.name)); + writer.write(Utils.toCamelCase(object.name, true)); writer.write(' '); writer.write(arg.javaName()); writer.write('('); @@ -114,7 +115,7 @@ public class Generator { } writer.write("public "); - writer.write(TLObject.toCamelCase(object.name)); + writer.write(Utils.toCamelCase(object.name, true)); writer.write("() {}\n"); writeSerialize(writer, object); @@ -135,7 +136,7 @@ public class Generator { writer.write("case " + object.code); writer.write(":\n"); writer.write("return new Types."); - writer.write(TLObject.toCamelCase(object.fullname)); + writer.write(Utils.toCamelCase(object.fullname, true)); writer.write("();\n"); } diff --git a/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLArg.java b/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLArg.java index b4a5cb6..d65d6f1 100644 --- a/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLArg.java +++ b/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLArg.java @@ -1,5 +1,7 @@ package io.github.lonamiwebs.overgram.parser; +import io.github.lonamiwebs.overgram.utils.Utils; + import java.util.ArrayList; import java.util.List; @@ -113,7 +115,7 @@ public class TLArg { break; default: builder.append("Abstract."); - builder.append(TLObject.toCamelCase(type)); + builder.append(Utils.toCamelCase(type, true)); break; } builder.append('<'); @@ -132,24 +134,6 @@ public class TLArg { return types.size() == 1 && types.get(0).equals("true") ? "" : " != null"; } - public static String toCamelCase(final String string) { - final StringBuilder result = new StringBuilder(string.length()); - result.append(Character.toLowerCase(string.charAt(0))); - boolean upperNext = false; - for (int i = 1; i < string.length(); ++i) { - final char c = string.charAt(i); - if (c == '_') { - upperNext = true; - } else if (upperNext) { - upperNext = false; - result.append(Character.toUpperCase(c)); - } else { - result.append(Character.toLowerCase(c)); - } - } - return result.toString(); - } - public String javaName() { switch (name) { case "lat": @@ -165,7 +149,7 @@ public class TLArg { case "final": return "last"; default: - return toCamelCase(name); + return Utils.toCamelCase(name, false); } } diff --git a/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLObject.java b/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLObject.java index 137600b..472794e 100644 --- a/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLObject.java +++ b/generator/src/main/java/io/github/lonamiwebs/overgram/parser/TLObject.java @@ -28,13 +28,6 @@ public class TLObject { } } - public static String toCamelCase(final String string) { - final int dot = string.lastIndexOf("."); - return string.substring(0, dot + 1) - + string.substring(dot + 1, dot + 2).toUpperCase() - + string.substring(dot + 2); - } - public static TLObject fromString(String string) { String[] tmp; String name; diff --git a/generator/src/main/java/io/github/lonamiwebs/overgram/utils/Utils.java b/generator/src/main/java/io/github/lonamiwebs/overgram/utils/Utils.java new file mode 100644 index 0000000..367d5bc --- /dev/null +++ b/generator/src/main/java/io/github/lonamiwebs/overgram/utils/Utils.java @@ -0,0 +1,31 @@ +package io.github.lonamiwebs.overgram.utils; + +public class Utils { + public static String toCamelCase(final String string, final boolean firstUpper) { + final StringBuilder result = new StringBuilder(string.length()); + + final int dot = string.lastIndexOf("."); + if (dot != -1) { + result.append(string, 0, dot + 1); + } + + if (firstUpper) { + result.append(Character.toUpperCase(string.charAt(dot + 1))); + } else { + result.append(Character.toLowerCase(string.charAt(dot + 1))); + } + boolean upperNext = false; + for (int i = dot + 2; i < string.length(); ++i) { + final char c = string.charAt(i); + if (c == '_') { + upperNext = true; + } else if (upperNext) { + upperNext = false; + result.append(Character.toUpperCase(c)); + } else { + result.append(c); + } + } + return result.toString(); + } +} diff --git a/generator/src/main/resources/mtproto_api.tl b/generator/src/main/resources/mtproto_api.tl index 79fbb40..b196c7d 100644 --- a/generator/src/main/resources/mtproto_api.tl +++ b/generator/src/main/resources/mtproto_api.tl @@ -3,7 +3,7 @@ //double ? = Double; //string ? = String; -dummyHttpWait = HttpWait; +//dummyHttpWait = HttpWait; //vector {t:Type} # [ t ] = Vector t; @@ -63,7 +63,8 @@ msgs_all_info#8cc0d131 msg_ids:Vector info:string = MsgsAllInfo; msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo; msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo; -rsa_public_key n:string e:bytes = RSAPublicKey; +// TODO infer ID +//rsa_public_key n:string e:bytes = RSAPublicKey; ---functions---