Add list/text join/split block.

This commit is contained in:
Neil Fraser
2015-01-18 16:54:30 -08:00
parent 8dce3aa271
commit e69f5f4502
71 changed files with 1128 additions and 476 deletions

View File

@@ -309,3 +309,27 @@ Blockly.Dart['lists_getSublist'] = function(block) {
}
return [code, Blockly.Dart.ORDER_UNARY_POSTFIX];
};
Blockly.Dart['lists_split'] = function(block) {
// Block for splitting text into a list, or joining a list into text.
var value_input = Blockly.Dart.valueToCode(block, 'INPUT',
Blockly.Dart.ORDER_UNARY_POSTFIX);
var value_delim = Blockly.Dart.valueToCode(block, 'DELIM',
Blockly.Dart.ORDER_NONE) || '\'\'';
var mode = block.getFieldValue('MODE');
if (mode == 'SPLIT') {
if (!value_input) {
value_input = '\'\'';
}
var functionName = 'split';
} else if (mode == 'JOIN') {
if (!value_input) {
value_input = '[]';
}
var functionName = 'join';
} else {
throw 'Unknown mode: ' + mode;
}
var code = value_input + '.' + functionName + '(' + value_delim + ')';
return [code, Blockly.Dart.ORDER_UNARY_POSTFIX];
};

View File

@@ -298,3 +298,27 @@ Blockly.JavaScript['lists_getSublist'] = function(block) {
}
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
};
Blockly.JavaScript['lists_split'] = function(block) {
// Block for splitting text into a list, or joining a list into text.
var value_input = Blockly.JavaScript.valueToCode(block, 'INPUT',
Blockly.JavaScript.ORDER_MEMBER);
var value_delim = Blockly.JavaScript.valueToCode(block, 'DELIM',
Blockly.JavaScript.ORDER_NONE) || '\'\'';
var mode = block.getFieldValue('MODE');
if (mode == 'SPLIT') {
if (!value_input) {
value_input = '\'\'';
}
var functionName = 'split';
} else if (mode == 'JOIN') {
if (!value_input) {
value_input = '[]';
}
var functionName = 'join';
} else {
throw 'Unknown mode: ' + mode;
}
var code = value_input + '.' + functionName + '(' + value_delim + ')';
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
};

View File

@@ -311,3 +311,24 @@ Blockly.Python['lists_getSublist'] = function(block) {
var code = list + '[' + at1 + ' : ' + at2 + ']';
return [code, Blockly.Python.ORDER_MEMBER];
};
Blockly.Python['lists_split'] = function(block) {
// Block for splitting text into a list, or joining a list into text.
var mode = block.getFieldValue('MODE');
if (mode == 'SPLIT') {
var value_input = Blockly.Python.valueToCode(block, 'INPUT',
Blockly.Python.ORDER_MEMBER) || '\'\'';
var value_delim = Blockly.Python.valueToCode(block, 'DELIM',
Blockly.Python.ORDER_NONE);
var code = value_input + '.split(' + value_delim + ')';
} else if (mode == 'JOIN') {
var value_input = Blockly.Python.valueToCode(block, 'INPUT',
Blockly.Python.ORDER_NONE) || '[]';
var value_delim = Blockly.Python.valueToCode(block, 'DELIM',
Blockly.Python.ORDER_MEMBER) || '\'\'';
var code = value_delim + '.join(' + value_input + ')';
} else {
throw 'Unknown mode: ' + mode;
}
return [code, Blockly.Python.ORDER_FUNCTION_CALL];
};