Generate enums in sorted order

Summary:
This PR forces the order of the generated enums in alphabetically order. This is needed to have a predictable order of the enums across different python versions. Which reduces the pain for merging multiple enum additions.
Closes https://github.com/facebook/yoga/pull/370

Reviewed By: gkassabli

Differential Revision: D4501140

Pulled By: emilsjolander

fbshipit-source-id: 66c0ed9e4ea7a5990578b53b0a7e400c13dd53a9
This commit is contained in:
Lukas Wöhrl
2017-02-03 04:21:50 -08:00
committed by Facebook Github Bot
parent d62ca8c518
commit 511a129a7e
3 changed files with 134 additions and 113 deletions

View File

@@ -125,7 +125,7 @@ with open(root + '/yoga/YGEnums.h', 'w') as f:
f.write('#pragma once\n\n')
f.write('#include "YGMacros.h"\n\n')
f.write('YG_EXTERN_C_BEGIN\n\n')
for name, values in ENUMS.items():
for name, values in sorted(ENUMS.items()):
f.write('#define YG%sCount %s\n' % (name, len(values)))
f.write('typedef YG_ENUM_BEGIN(YG%s) {\n' % name)
for value in values:
@@ -138,7 +138,7 @@ with open(root + '/yoga/YGEnums.h', 'w') as f:
f.write('YG_EXTERN_C_END\n')
# write out java files
for name, values in ENUMS.items():
for name, values in sorted(ENUMS.items()):
with open(root + '/java/com/facebook/yoga/Yoga%s.java' % name, 'w') as f:
f.write(LICENSE)
f.write('package com.facebook.yoga;\n\n')
@@ -181,7 +181,7 @@ for name, values in ENUMS.items():
f.write('}\n')
# write out csharp files
for name, values in ENUMS.items():
for name, values in sorted(ENUMS.items()):
with open(root + '/csharp/Facebook.Yoga/Yoga%s.cs' % name, 'w') as f:
f.write(LICENSE)
f.write('namespace Facebook.Yoga\n{\n')
@@ -198,7 +198,7 @@ for name, values in ENUMS.items():
with open(root + '/javascript/sources/YGEnums.js', 'w') as f:
f.write(LICENSE)
f.write('module.exports = {\n\n')
for name, values in ENUMS.items():
for name, values in sorted(ENUMS.items()):
f.write(' %s_COUNT: %s,\n' % (to_java_upper(name), len(values)))
base = 0
for value in values: