Generate Kotlin files with enums.py #1845
53
enums.py
53
enums.py
@@ -84,6 +84,12 @@ ENUMS = {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Temporary filter enums to not upgrade all enums at once
|
||||||
|
KOTLIN_ENUM_NAMES = {"Direction"}
|
||||||
|
|
||||||
|
ENUMS_KOTLIN = {name: ENUMS[name] for name in KOTLIN_ENUM_NAMES}
|
||||||
|
ENUMS_JAVA = {name: values for name, values in ENUMS.items() if name not in KOTLIN_ENUM_NAMES}
|
||||||
|
|
||||||
DO_NOT_STRIP = ["LogLevel"]
|
DO_NOT_STRIP = ["LogLevel"]
|
||||||
|
|
||||||
BITSET_ENUMS = ["Errata"]
|
BITSET_ENUMS = ["Errata"]
|
||||||
@@ -120,6 +126,9 @@ def to_java_upper(symbol):
|
|||||||
return _format_name(symbol, "_", "upper")
|
return _format_name(symbol, "_", "upper")
|
||||||
|
|
||||||
|
|
||||||
|
def to_kotlin_upper(symbol):
|
||||||
|
return _format_name(symbol, "_", "upper")
|
||||||
|
|
||||||
def to_hyphenated_lower(symbol):
|
def to_hyphenated_lower(symbol):
|
||||||
return _format_name(symbol, "-", "lower")
|
return _format_name(symbol, "-", "lower")
|
||||||
|
|
||||||
@@ -215,7 +224,7 @@ with open(root + "/yoga/YGEnums.cpp", "w") as f:
|
|||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
# write out java files
|
# write out java files
|
||||||
for name, values in sorted(ENUMS.items()):
|
for name, values in sorted(ENUMS_JAVA.items()):
|
||||||
with open(root + "/java/com/facebook/yoga/Yoga%s.java" % name, "w") as f:
|
with open(root + "/java/com/facebook/yoga/Yoga%s.java" % name, "w") as f:
|
||||||
f.write(get_license("java"))
|
f.write(get_license("java"))
|
||||||
f.write("package com.facebook.yoga;\n\n")
|
f.write("package com.facebook.yoga;\n\n")
|
||||||
@@ -267,6 +276,48 @@ for name, values in sorted(ENUMS.items()):
|
|||||||
f.write(" }\n")
|
f.write(" }\n")
|
||||||
f.write("}\n")
|
f.write("}\n")
|
||||||
|
|
||||||
|
# write out Kotlin files
|
||||||
|
for name, values in sorted(ENUMS_KOTLIN.items()):
|
||||||
|
with open(root + "/java/com/facebook/yoga/Yoga%s.kt" % name, "w") as f:
|
||||||
|
f.write(get_license("kotlin"))
|
||||||
|
f.write("package com.facebook.yoga\n\n")
|
||||||
|
f.write("public enum class Yoga%s(public val intValue: Int) {\n" % name)
|
||||||
|
if len(values) > 0:
|
||||||
|
for value in values:
|
||||||
|
if isinstance(value, tuple):
|
||||||
|
f.write(" %s(%d)" % (to_kotlin_upper(value[0]), value[1]))
|
||||||
|
else:
|
||||||
|
f.write(" %s(%d)" % (to_kotlin_upper(value), values.index(value)))
|
||||||
|
if values.index(value) is len(values) - 1:
|
||||||
|
f.write(";\n")
|
||||||
|
else:
|
||||||
|
f.write(",\n")
|
||||||
|
else:
|
||||||
|
f.write("__EMPTY(-1);")
|
||||||
|
f.write("\n")
|
||||||
|
f.write(" public fun intValue(): Int = intValue\n")
|
||||||
|
f.write("\n")
|
||||||
|
f.write(" public companion object {\n")
|
||||||
|
f.write(" @JvmStatic\n")
|
||||||
|
f.write(" public fun fromInt(value: Int): Yoga%s =\n" % name)
|
||||||
|
f.write(" when (value) {\n")
|
||||||
|
for value in values:
|
||||||
|
if isinstance(value, tuple):
|
||||||
|
f.write(
|
||||||
|
" %d -> %s\n" % (value[1], to_kotlin_upper(value[0]))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
f.write(
|
||||||
|
" %d -> %s\n"
|
||||||
|
% (values.index(value), to_kotlin_upper(value))
|
||||||
|
)
|
||||||
|
f.write(
|
||||||
|
' else -> throw IllegalArgumentException("Unknown enum value: $value")\n'
|
||||||
|
)
|
||||||
|
f.write(" }\n")
|
||||||
|
f.write(" }\n")
|
||||||
|
f.write("}\n")
|
||||||
|
|
||||||
# write out TypeScript file
|
# write out TypeScript file
|
||||||
with open(root + "/javascript/src/generated/YGEnums.ts", "w") as f:
|
with open(root + "/javascript/src/generated/YGEnums.ts", "w") as f:
|
||||||
f.write(get_license("js"))
|
f.write(get_license("js"))
|
||||||
|
@@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// @generated by enums.py
|
|
||||||
|
|
||||||
package com.facebook.yoga;
|
|
||||||
|
|
||||||
public enum YogaDirection {
|
|
||||||
INHERIT(0),
|
|
||||||
LTR(1),
|
|
||||||
RTL(2);
|
|
||||||
|
|
||||||
private final int mIntValue;
|
|
||||||
|
|
||||||
YogaDirection(int intValue) {
|
|
||||||
mIntValue = intValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int intValue() {
|
|
||||||
return mIntValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static YogaDirection fromInt(int value) {
|
|
||||||
switch (value) {
|
|
||||||
case 0: return INHERIT;
|
|
||||||
case 1: return LTR;
|
|
||||||
case 2: return RTL;
|
|
||||||
default: throw new IllegalArgumentException("Unknown enum value: " + value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
29
java/com/facebook/yoga/YogaDirection.kt
Normal file
29
java/com/facebook/yoga/YogaDirection.kt
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// @generated by enums.py
|
||||||
|
|
||||||
|
package com.facebook.yoga
|
||||||
|
|
||||||
|
public enum class YogaDirection(public val intValue: Int) {
|
||||||
|
INHERIT(0),
|
||||||
|
LTR(1),
|
||||||
|
RTL(2);
|
||||||
|
|
||||||
|
public fun intValue(): Int = intValue
|
||||||
|
|
||||||
|
public companion object {
|
||||||
|
@JvmStatic
|
||||||
|
public fun fromInt(value: Int): YogaDirection =
|
||||||
|
when (value) {
|
||||||
|
0 -> INHERIT
|
||||||
|
1 -> LTR
|
||||||
|
2 -> RTL
|
||||||
|
else -> throw IllegalArgumentException("Unknown enum value: $value")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user