transpiling all the attributes (rough pass)

This commit is contained in:
Christopher Chedeau
2014-04-19 12:11:45 -07:00
parent f540de9d3a
commit 05b2c5a749
2 changed files with 783 additions and 16 deletions

View File

@@ -60,8 +60,69 @@ function printLayout(test) {
}
return result;
}
function addEnum(node, js_key, c_key, dict) {
if (js_key in node.style) {
add('node->style' + '.' + c_key + ' = ' + dict[node.style[js_key]] + ';');
}
}
function addFloat(node, js_key, c_key) {
if (js_key in node.style) {
add('node->style' + '.' + c_key + ' = ' + node.style[js_key] + ';');
}
}
function addSpacing(node, spacing) {
addFloat(node, spacing, spacing + '[CSS_LEFT]');
addFloat(node, spacing, spacing + '[CSS_TOP]');
addFloat(node, spacing, spacing + '[CSS_RIGHT]');
addFloat(node, spacing, spacing + '[CSS_BOTTOM]');
addFloat(node, spacing + 'Left', spacing + '[CSS_LEFT]');
addFloat(node, spacing + 'Top', spacing + '[CSS_TOP]');
addFloat(node, spacing + 'Right', spacing + '[CSS_RIGHT]');
addFloat(node, spacing + 'Bottom', spacing + '[CSS_BOTTOM]');
}
function rec(node) {
if (node.children) {
addEnum(node, 'flexDirection', 'flex_direction', {
'row': 'CSS_FLEX_DIRECTION_ROW',
'column': 'CSS_FLEX_DIRECTION_COLUMN'
});
addEnum(node, 'justifyContent', 'justify_content', {
'flex-start': 'CSS_JUSTIFY_FLEX_START',
'center': 'CSS_JUSTIFY_CENTER',
'flex-end': 'CSS_JUSTIFY_FLEX_END',
'space-between': 'CSS_JUSTIFY_SPACE_AROUND',
'space-around': 'CSS_JUSTIFY_SPACE_BETWEEN'
});
addEnum(node, 'alignItems', 'align_items', {
'flex-start': 'CSS_ALIGN_FLEX_START',
'center': 'CSS_ALIGN_CENTER',
'flex-end': 'CSS_ALIGN_FLEX_END',
'stretch': 'CSS_ALIGN_STRETCH'
});
addEnum(node, 'alignSelf', 'align_self', {
'flex-start': 'CSS_ALIGN_FLEX_START',
'center': 'CSS_ALIGN_CENTER',
'flex-end': 'CSS_ALIGN_FLEX_END',
'stretch': 'CSS_ALIGN_STRETCH'
});
addEnum(node, 'flex', 'flex', {
'none': 'CSS_FLEX_NONE',
'1': 'CSS_FLEX_ONE'
});
addFloat(node, 'width', 'dimensions[CSS_WIDTH]');
addFloat(node, 'height', 'dimensions[CSS_HEIGHT]');
addSpacing(node, 'margin');
addSpacing(node, 'padding');
addFloat(node, 'left', 'position[CSS_LEFT]');
addFloat(node, 'top', 'position[CSS_TOP]');
addFloat(node, 'right', 'position[CSS_RIGHT]');
addFloat(node, 'bottom', 'position[CSS_BOTTOM]');
add('init_css_node_children(node, ' + node.children.length + ');');
add('css_node_t *outer_node = node;');
add('{');