Skip to content

Commit

Permalink
all keywords, and fix regex issue
Browse files Browse the repository at this point in the history
  • Loading branch information
msbarry committed Dec 6, 2023
1 parent 878f25b commit 70cab25
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
Expand Down Expand Up @@ -126,15 +127,29 @@ private static boolean hasMethod(Class<?> clazz, Method method) {
}

private static String transformMemberName(String fieldName) {
if (!fieldName.contains("_") && fieldName.matches("^.*[A-Z].*$") && fieldName.matches("^.*[a-z].*$")) {
if (isLowerCamelCase(fieldName)) {
fieldName = CAMEL_TO_SNAKE_CASE.convert(fieldName);
}
if (LuaConversions.LUA_AND_NOT_JAVA_KEYWORDS.contains(fieldName)) {
fieldName = fieldName.toUpperCase(Locale.ROOT);
if (LuaConversions.LUA_KEYWORDS.contains(fieldName)) {
fieldName = Objects.requireNonNull(fieldName).toUpperCase(Locale.ROOT);
}
return fieldName;
}

private static boolean isLowerCamelCase(String fieldName) {
var chars = fieldName.toCharArray();
if (!Character.isLowerCase(chars[0])) {
return false;
}
boolean upper = false, lower = false, underscore = false;
for (char c : chars) {
upper |= Character.isUpperCase(c);
lower |= Character.isLowerCase(c);
underscore |= c == '_';
}
return upper && lower && !underscore;
}

private void write(String line) {
builder.append(line).append("\n");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,11 @@
* Helper methods to convert between lua and java types.
*/
public interface LuaConversions {
Set<String> LUA_AND_NOT_JAVA_KEYWORDS = Set.of(
"and",
"elseif",
"end",
"function",
"in",
"local",
"nil",
"not",
"or",
"repeat",
"then",
"until"
Set<String> LUA_KEYWORDS = Set.of(
"and", "break", "do", "else", "elseif",
"end", "false", "for", "function", "if",
"in", "local", "nil", "not", "or",
"repeat", "return", "then", "true", "until", "while"
);

static LuaValue toLua(Object sourceFeature) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ private <T> void putAliases(Map<LuaValue, T> map) {
for (var entry : List.copyOf(map.entrySet())) {
String key = entry.getKey().tojstring();
String key2;
if (LuaConversions.LUA_AND_NOT_JAVA_KEYWORDS.contains(key)) {
if (LuaConversions.LUA_KEYWORDS.contains(key)) {
key2 = key.toUpperCase();
} else {
key2 = CAMEL_TO_SNAKE_CASE.convert(key);
Expand Down

0 comments on commit 70cab25

Please sign in to comment.