|
91 | 91 | ], |
92 | 92 | } |
93 | 93 |
|
| 94 | +# Temporary filter enums to not upgrade all enums at once |
| 95 | +KOTLIN_ENUM_NAMES = {"Direction"} |
| 96 | + |
| 97 | +ENUMS_KOTLIN = {name: ENUMS[name] for name in KOTLIN_ENUM_NAMES} |
| 98 | +ENUMS_JAVA = { |
| 99 | + name: values for name, values in ENUMS.items() if name not in KOTLIN_ENUM_NAMES |
| 100 | +} |
| 101 | + |
94 | 102 | DO_NOT_STRIP = ["LogLevel"] |
95 | 103 |
|
96 | 104 | BITSET_ENUMS = ["Errata"] |
@@ -127,6 +135,10 @@ def to_java_upper(symbol): |
127 | 135 | return _format_name(symbol, "_", "upper") |
128 | 136 |
|
129 | 137 |
|
| 138 | +def to_kotlin_upper(symbol): |
| 139 | + return _format_name(symbol, "_", "upper") |
| 140 | + |
| 141 | + |
130 | 142 | def to_hyphenated_lower(symbol): |
131 | 143 | return _format_name(symbol, "-", "lower") |
132 | 144 |
|
@@ -222,7 +234,7 @@ def to_hyphenated_lower(symbol): |
222 | 234 | f.write("\n") |
223 | 235 |
|
224 | 236 | # write out java files |
225 | | -for name, values in sorted(ENUMS.items()): |
| 237 | +for name, values in sorted(ENUMS_JAVA.items()): |
226 | 238 | with open(root + "/java/com/facebook/yoga/Yoga%s.java" % name, "w") as f: |
227 | 239 | f.write(get_license("java")) |
228 | 240 | f.write("package com.facebook.yoga;\n\n") |
@@ -274,6 +286,46 @@ def to_hyphenated_lower(symbol): |
274 | 286 | f.write(" }\n") |
275 | 287 | f.write("}\n") |
276 | 288 |
|
| 289 | +# write out Kotlin files |
| 290 | +for name, values in sorted(ENUMS_KOTLIN.items()): |
| 291 | + with open(root + "/java/com/facebook/yoga/Yoga%s.kt" % name, "w") as f: |
| 292 | + f.write(get_license("kotlin")) |
| 293 | + f.write("package com.facebook.yoga\n\n") |
| 294 | + f.write("public enum class Yoga%s(public val intValue: Int) {\n" % name) |
| 295 | + if len(values) > 0: |
| 296 | + for value in values: |
| 297 | + if isinstance(value, tuple): |
| 298 | + f.write(" %s(%d)" % (to_kotlin_upper(value[0]), value[1])) |
| 299 | + else: |
| 300 | + f.write(" %s(%d)" % (to_kotlin_upper(value), values.index(value))) |
| 301 | + if values.index(value) is len(values) - 1: |
| 302 | + f.write(";\n") |
| 303 | + else: |
| 304 | + f.write(",\n") |
| 305 | + else: |
| 306 | + f.write("__EMPTY(-1);") |
| 307 | + f.write("\n") |
| 308 | + f.write(" public fun intValue(): Int = intValue\n") |
| 309 | + f.write("\n") |
| 310 | + f.write(" public companion object {\n") |
| 311 | + f.write(" @JvmStatic\n") |
| 312 | + f.write(" public fun fromInt(value: Int): Yoga%s =\n" % name) |
| 313 | + f.write(" when (value) {\n") |
| 314 | + for value in values: |
| 315 | + if isinstance(value, tuple): |
| 316 | + f.write(" %d -> %s\n" % (value[1], to_kotlin_upper(value[0]))) |
| 317 | + else: |
| 318 | + f.write( |
| 319 | + " %d -> %s\n" |
| 320 | + % (values.index(value), to_kotlin_upper(value)) |
| 321 | + ) |
| 322 | + f.write( |
| 323 | + ' else -> throw IllegalArgumentException("Unknown enum value: $value")\n' |
| 324 | + ) |
| 325 | + f.write(" }\n") |
| 326 | + f.write(" }\n") |
| 327 | + f.write("}\n") |
| 328 | + |
277 | 329 | # write out TypeScript file |
278 | 330 | with open(root + "/javascript/src/generated/YGEnums.ts", "w") as f: |
279 | 331 | f.write(get_license("js")) |
|
0 commit comments