New blocks text_count, text_replace, and text_reverse (#830)

Includes generators for all languages and units tests on those generators.
This commit is contained in:
Tim Dawborn
2017-01-21 11:08:27 +11:00
committed by Andrew n marshall
parent fb0f1b05dd
commit 34750bccd8
12 changed files with 935 additions and 9 deletions

View File

@@ -248,3 +248,32 @@ Blockly.PHP['text_prompt_ext'] = function(block) {
};
Blockly.PHP['text_prompt'] = Blockly.PHP['text_prompt_ext'];
Blockly.PHP['text_count'] = function(block) {
var text = Blockly.PHP.valueToCode(block, 'TEXT',
Blockly.PHP.ORDER_MEMBER) || '\'\'';
var sub = Blockly.PHP.valueToCode(block, 'SUB',
Blockly.PHP.ORDER_NONE) || '\'\'';
var code = 'strlen(' + sub + ') === 0'
+ ' ? strlen(' + text + ') + 1'
+ ' : substr_count(' + text + ', ' + sub + ')';
return [code, Blockly.PHP.ORDER_CONDITIONAL];
};
Blockly.PHP['text_replace'] = function(block) {
var text = Blockly.PHP.valueToCode(block, 'TEXT',
Blockly.PHP.ORDER_MEMBER) || '\'\'';
var from = Blockly.PHP.valueToCode(block, 'FROM',
Blockly.PHP.ORDER_NONE) || '\'\'';
var to = Blockly.PHP.valueToCode(block, 'TO',
Blockly.PHP.ORDER_NONE) || '\'\'';
var code = 'str_replace(' + from + ', ' + to + ', ' + text + ')';
return [code, Blockly.PHP.ORDER_FUNCTION_CALL];
};
Blockly.PHP['text_reverse'] = function(block) {
var text = Blockly.PHP.valueToCode(block, 'TEXT',
Blockly.PHP.ORDER_MEMBER) || '\'\'';
var code = 'strrev(' + text + ')';
return [code, Blockly.PHP.ORDER_FUNCTION_CALL];
};