Summary: Update package name of java code to refer to yoga instead of csslayout. Still need to change the name of the folder where this code resides but that requires update github sync scripts etc so it is safer and easier to split these diffs apart. Differential Revision: D4271420 fbshipit-source-id: b3cf150569a2331868410339cd19e5c694f2059e
189 lines
5.2 KiB
Python
189 lines
5.2 KiB
Python
# Copyright (c) 2014-present, Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD-style license found in the
|
|
# LICENSE file in the root directory of this source tree. An additional grant
|
|
# of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
import os
|
|
|
|
ENUMS = {
|
|
'Direction': [
|
|
'Inherit',
|
|
'LTR',
|
|
'RTL',
|
|
],
|
|
'FlexDirection': [
|
|
'Column',
|
|
'ColumnReverse',
|
|
'Row',
|
|
'RowReverse',
|
|
],
|
|
'Justify': [
|
|
'FlexStart',
|
|
'Center',
|
|
'FlexEnd',
|
|
'SpaceBetween',
|
|
'SpaceAround',
|
|
],
|
|
'Overflow': [
|
|
'Visible',
|
|
'Hidden',
|
|
'Scroll',
|
|
],
|
|
'Align': [
|
|
'Auto',
|
|
'FlexStart',
|
|
'Center',
|
|
'FlexEnd',
|
|
'Stretch',
|
|
],
|
|
'PositionType': [
|
|
'Relative',
|
|
'Absolute',
|
|
],
|
|
'Wrap': [
|
|
'NoWrap',
|
|
'Wrap',
|
|
],
|
|
'MeasureMode': [
|
|
'Undefined',
|
|
'Exactly',
|
|
'AtMost',
|
|
],
|
|
'Dimension': [
|
|
'Width',
|
|
'Height',
|
|
],
|
|
'Edge': [
|
|
'Left',
|
|
'Top',
|
|
'Right',
|
|
'Bottom',
|
|
'Start',
|
|
'End',
|
|
'Horizontal',
|
|
'Vertical',
|
|
'All',
|
|
],
|
|
'LogLevel': [
|
|
'Error',
|
|
'Warn',
|
|
'Info',
|
|
'Debug',
|
|
'Verbose',
|
|
],
|
|
'ExperimentalFeature': [
|
|
'Rounding',
|
|
# Mimic web flex-basis behavior.
|
|
'WebFlexBasis',
|
|
],
|
|
'PrintOptions': [
|
|
('Layout', 1),
|
|
('Style', 2),
|
|
('Children', 4),
|
|
],
|
|
}
|
|
|
|
LICENSE = """/**
|
|
* Copyright (c) 2014-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
"""
|
|
|
|
def to_java_upper(symbol):
|
|
symbol = str(symbol)
|
|
out = ''
|
|
for i in range(0, len(symbol)):
|
|
c = symbol[i]
|
|
if str.istitle(c) and i is not 0 and not str.istitle(symbol[i - 1]):
|
|
out += '_'
|
|
out += c.upper()
|
|
return out
|
|
|
|
|
|
root = os.path.dirname(__file__)
|
|
|
|
# write out C header
|
|
with open(root + '/CSSLayout/YGEnums.h', 'w') as f:
|
|
f.write(LICENSE)
|
|
remaining = len(ENUMS)
|
|
for name, values in ENUMS.items():
|
|
f.write('typedef enum YG%s {\n' % name)
|
|
for value in values:
|
|
if isinstance(value, tuple):
|
|
f.write(' YG%s%s = %d,\n' % (name, value[0], value[1]))
|
|
else:
|
|
f.write(' YG%s%s,\n' % (name, value))
|
|
f.write(' YG%sCount,\n' % name)
|
|
f.write('} YG%s;\n' % name)
|
|
if remaining > 1:
|
|
f.write('\n')
|
|
remaining = remaining - 1
|
|
|
|
# write out java files
|
|
for name, values in ENUMS.items():
|
|
with open(root + '/java/com/facebook/csslayout/Yoga%s.java' % name, 'w') as f:
|
|
f.write(LICENSE)
|
|
f.write('package com.facebook.yoga;\n\n')
|
|
f.write('import com.facebook.proguard.annotations.DoNotStrip;\n\n')
|
|
f.write('@DoNotStrip\n')
|
|
f.write('public enum Yoga%s {\n' % name)
|
|
if len(values) > 0:
|
|
for value in values:
|
|
if isinstance(value, tuple):
|
|
f.write(' %s(%d)' % (to_java_upper(value[0]), value[1]))
|
|
else:
|
|
f.write(' %s(%d)' % (to_java_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(' private int mIntValue;\n')
|
|
f.write('\n')
|
|
f.write(' Yoga%s(int intValue) {\n' % name)
|
|
f.write(' mIntValue = intValue;\n')
|
|
f.write(' }\n')
|
|
f.write('\n')
|
|
f.write(' public int intValue() {\n')
|
|
f.write(' return mIntValue;\n')
|
|
f.write(' }\n')
|
|
f.write('\n')
|
|
f.write(' public static Yoga%s fromInt(int value) {\n' % name)
|
|
f.write(' switch (value) {\n')
|
|
for value in values:
|
|
if isinstance(value, tuple):
|
|
f.write(' case %d: return %s;\n' % (value[1], to_java_upper(value[0])))
|
|
else:
|
|
f.write(' case %d: return %s;\n' % (values.index(value), to_java_upper(value)))
|
|
f.write(' default: throw new IllegalArgumentException("Unkown enum value: " + value);\n')
|
|
f.write(' }\n')
|
|
f.write(' }\n')
|
|
f.write('}\n')
|
|
|
|
# write out csharp files
|
|
for name, values in 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')
|
|
f.write(' public enum Yoga%s\n {\n' % name)
|
|
for value in values:
|
|
if isinstance(value, tuple):
|
|
f.write(' %s = %d,\n' % (value[0], value[1]))
|
|
else:
|
|
f.write(' %s,\n' % value)
|
|
f.write(' }\n')
|
|
f.write('}\n')
|