Skip to content

Commit 83c5918

Browse files
authored
Merge pull request #304 from kiji-haru/Makeymakey
Makeymakeyのrubyからブロックへの変換完成
2 parents 8cd2d35 + 29dfd39 commit 83c5918

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import MeshConverter from './mesh';
2929
import SmalrubotS1Converter from './smalrubot_s1';
3030
import BoostConverter from './boost';
3131
import TranslateConverter from './translate';
32+
import MakeyMakeyConverter from './makeymakey'
3233

3334
const messages = defineMessages({
3435
couldNotConvertPremitive: {
@@ -100,7 +101,8 @@ class RubyToBlocksConverter {
100101
SensingConverter,
101102
OperatorsConverter,
102103
VariablesConverter,
103-
MyBlocksConverter
104+
MyBlocksConverter,
105+
MakeyMakeyConverter
104106
];
105107
this.reset();
106108
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/* global Opal */
2+
import _ from 'lodash';
3+
4+
/**
5+
* MakeyMakey converter
6+
*/
7+
const MakeyMakeyConverter = {
8+
// eslint-disable-next-line no-unused-vars
9+
onSend: function (receiver, name, args, rubyBlockArgs, rubyBlock, node) {
10+
let block;
11+
if ((this._isSelf(receiver) || receiver === Opal.nil) &&
12+
name === 'when' &&
13+
args.length === 2 && args[0].type === 'sym' &&
14+
rubyBlockArgs && rubyBlockArgs.length === 0 &&
15+
rubyBlock) {
16+
switch (args[0].value) {
17+
case 'makey_key_pressed':
18+
if (this._isStringOrBlock(args[1])) {
19+
block = this._createBlock('makeymakey_whenMakeyKeyPressed', 'hat');
20+
this._addInput(
21+
block,
22+
'KEY',
23+
this._createFieldBlock('makeymakey_menu_KEY', 'KEY', args[1]),
24+
);
25+
this._setParent(rubyBlock, block);
26+
}
27+
break;
28+
case 'makey_pressed_in_oder':
29+
if (this._isStringOrBlock(args[1])) {
30+
block = this._createBlock('makeymakey_whenCodePressed', 'hat');
31+
this._addInput(
32+
block,
33+
'SEQUENCE',
34+
this._createFieldBlock('makeymakey_menu_SEQUENCE', 'SEQUENCE', args[1])
35+
);
36+
this._setParent(rubyBlock, block);
37+
}
38+
break;
39+
}
40+
}
41+
return block;
42+
}
43+
};
44+
45+
export default MakeyMakeyConverter;

0 commit comments

Comments
 (0)