Skip to content

Commit 60a7792

Browse files
committed
sensing_askandwait
1 parent 24fafe7 commit 60a7792

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed

src/lib/ruby-generator/sensing.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export default function (Generator) {
4141

4242
Generator.sensing_askandwait = function (block) {
4343
const question = Generator.valueToCode(block, 'QUESTION', Generator.ORDER_NONE) || null;
44-
return `ask_and_wait(${question})\n`;
44+
return `ask(${question})\n`;
4545
};
4646

4747
Generator.sensing_answer = function () {

src/lib/ruby-to-blocks-converter/sensing.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ const SensingConverter = {
4545
);
4646
}
4747
break;
48+
case 'ask':
49+
if (args.length === 1 && this._isStringOrBlock(args[0])) {
50+
block = this._createBlock('sensing_askandwait', 'statement');
51+
this._addTextInput(block, 'QUESTION', args[0], 'What\'s your name?');
52+
}
53+
break;
4854
case 'answer':
4955
case 'loudness':
5056
case 'days_since_2000':

test/unit/lib/ruby-to-blocks-converter/sensing.test.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
convertAndExpectToEqualBlocks,
44
convertAndExpectToEqualRubyStatement,
55
rubyToExpected,
6+
expectedInfo,
67
expectNoArgsMethod
78
} from '../../../helpers/expect-to-equal-blocks';
89

@@ -359,6 +360,63 @@ describe('RubyToBlocksConverter/Sensing', () => {
359360
});
360361
});
361362

363+
describe('sensing_askandwait', () => {
364+
test('normal', () => {
365+
code = 'ask("What\'s your name?")';
366+
expected = [
367+
{
368+
opcode: 'sensing_askandwait',
369+
inputs: [
370+
{
371+
name: 'QUESTION',
372+
block: expectedInfo.makeText('What\'s your name?')
373+
}
374+
]
375+
}
376+
];
377+
convertAndExpectToEqualBlocks(converter, target, code, expected);
378+
379+
code = 'ask(x)';
380+
expected = [
381+
{
382+
opcode: 'sensing_askandwait',
383+
inputs: [
384+
{
385+
name: 'QUESTION',
386+
block: rubyToExpected(converter, target, 'x')[0],
387+
shadow: expectedInfo.makeText('What\'s your name?')
388+
}
389+
]
390+
}
391+
];
392+
convertAndExpectToEqualBlocks(converter, target, code, expected);
393+
});
394+
395+
test('statement', () => {
396+
code = `
397+
bounce_if_on_edge
398+
ask("What's your name?")
399+
bounce_if_on_edge
400+
`;
401+
expected = [
402+
rubyToExpected(converter, target, 'bounce_if_on_edge')[0]
403+
];
404+
expected[0].next = rubyToExpected(converter, target, 'ask("What\'s your name?")')[0];
405+
expected[0].next.next = rubyToExpected(converter, target, 'bounce_if_on_edge')[0];
406+
convertAndExpectToEqualBlocks(converter, target, code, expected);
407+
});
408+
409+
test('invalid', () => {
410+
[
411+
'ask()',
412+
'ask(1)',
413+
'ask("What\'s your name?", 1)'
414+
].forEach(c => {
415+
convertAndExpectToEqualRubyStatement(converter, target, c, c);
416+
});
417+
});
418+
});
419+
362420
expectNoArgsMethod('sensing_answer', 'answer', 'value');
363421
expectNoArgsMethod('sensing_mousedown', 'Mouse.down?', 'value_boolean');
364422
expectNoArgsMethod('sensing_mousex', 'Mouse.x', 'value');

0 commit comments

Comments
 (0)