Skip to content

Commit c0f677e

Browse files
author
t-kazu
committed
looksの命令ブロックをRubyに変換できるようにしました
1 parent b8b9527 commit c0f677e

File tree

3 files changed

+142
-2
lines changed

3 files changed

+142
-2
lines changed

src/lib/ruby-generator/index.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import _ from 'lodash';
22

33
import GeneratedBlocks from './generated.js';
4+
import MathBlocks from './math.js';
5+
import TextBlocks from './text.js';
46
import MotionBlocks from './motion.js';
7+
import LooksBlocks from './looks.js';
58
import EventBlocks from './event.js';
69
import ControlBlocks from './control.js';
7-
import MathBlocks from './math.js';
810

911
/**
1012
* Define Ruby
@@ -358,10 +360,13 @@ export default function (Blockly) {
358360

359361
Blockly = GeneratedBlocks(Blockly);
360362

363+
Blockly = MathBlocks(Blockly);
364+
Blockly = TextBlocks(Blockly);
365+
361366
Blockly = MotionBlocks(Blockly);
367+
Blockly = LooksBlocks(Blockly);
362368
Blockly = EventBlocks(Blockly);
363369
Blockly = ControlBlocks(Blockly);
364-
Blockly = MathBlocks(Blockly);
365370

366371
return Blockly;
367372
}

src/lib/ruby-generator/looks.js

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/**
2+
* Define Ruby with Looks Blocks
3+
* @param {Blockly} Blockly The ScratchBlocks
4+
* @return {Blockly} Blockly defined Ruby generator.
5+
*/
6+
export default function (Blockly) {
7+
Blockly.Ruby.looks_sayforsecs = function (block) {
8+
const message = Blockly.Ruby.valueToCode(block, 'MESSAGE', Blockly.Ruby.ORDER_NONE) || Blockly.Ruby.quote_('');
9+
const secs = Blockly.Ruby.valueToCode(block, 'SECS', Blockly.Ruby.ORDER_NONE) || '0';
10+
return `say(message: ${message}, second: ${secs})\n`;
11+
};
12+
13+
Blockly.Ruby.looks_say = function (block) {
14+
const message = Blockly.Ruby.valueToCode(block, 'MESSAGE', Blockly.Ruby.ORDER_NONE) || Blockly.Ruby.quote_('');
15+
return `say(message: ${message})\n`;
16+
};
17+
18+
Blockly.Ruby.looks_thinkforsecs = function (block) {
19+
const message = Blockly.Ruby.valueToCode(block, 'MESSAGE', Blockly.Ruby.ORDER_NONE) || Blockly.Ruby.quote_('');
20+
const secs = Blockly.Ruby.valueToCode(block, 'SECS', Blockly.Ruby.ORDER_NONE) || '0';
21+
return `think(message: ${message}, second: ${secs})\n`;
22+
};
23+
24+
Blockly.Ruby.looks_think = function (block) {
25+
const message = Blockly.Ruby.valueToCode(block, 'MESSAGE', Blockly.Ruby.ORDER_NONE) || Blockly.Ruby.quote_('');
26+
return `think(message: ${message})\n`;
27+
};
28+
29+
Blockly.Ruby.looks_switchcostumeto = function (block) {
30+
const costume = Blockly.Ruby.valueToCode(block, 'COSTUME', Blockly.Ruby.ORDER_NONE) || null;
31+
return `switch_costume("${costume}")\n`;
32+
};
33+
34+
Blockly.Ruby.looks_costume = function (block) {
35+
const costume = block.getFieldValue('COSTUME') || null;
36+
return [costume, Blockly.Ruby.ORDER_ATOMIC];
37+
};
38+
39+
Blockly.Ruby.looks_nextcostume = function () {
40+
return 'next_costume\n';
41+
};
42+
43+
Blockly.Ruby.looks_switchbackdropto = function (block) {
44+
const backdrop = Blockly.Ruby.valueToCode(block, 'BACKDROP', Blockly.Ruby.ORDER_NONE) || null;
45+
return `switch_backdrop("${backdrop}")\n`;
46+
};
47+
48+
Blockly.Ruby.looks_backdrops = function (block) {
49+
const backdrop = block.getFieldValue('BACKDROP') || null;
50+
return [backdrop, Blockly.Ruby.ORDER_ATOMIC];
51+
};
52+
53+
Blockly.Ruby.looks_nextbackdrop = function () {
54+
return 'next_backdrop\n';
55+
};
56+
57+
Blockly.Ruby.looks_changesizeby = function (block) {
58+
const change = Blockly.Ruby.valueToCode(block, 'CHANGE', Blockly.Ruby.ORDER_NONE) || '0';
59+
return `change_size_by(${change})\n`;
60+
};
61+
62+
Blockly.Ruby.looks_setsizeto = function (block) {
63+
const size = Blockly.Ruby.valueToCode(block, 'SIZE', Blockly.Ruby.ORDER_NONE) || '0';
64+
return `set_size(${size})\n`;
65+
};
66+
67+
Blockly.Ruby.looks_changeeffectby = function (block) {
68+
const effect = block.getFieldValue('EFFECT') || null;
69+
const change = Blockly.Ruby.valueToCode(block, 'CHANGE', Blockly.Ruby.ORDER_NONE) || '0';
70+
return `change_effect_by("${effect}", ${change})\n`;
71+
};
72+
73+
Blockly.Ruby.looks_seteffectto = function (block) {
74+
const effect = block.getFieldValue('EFFECT') || null;
75+
const value = Blockly.Ruby.valueToCode(block, 'VALUE', Blockly.Ruby.ORDER_NONE) || '0';
76+
return `set_effect("${effect}", ${value})\n`;
77+
};
78+
79+
Blockly.Ruby.looks_cleargraphiceffects = function () {
80+
return 'clear_graphic_effects\n';
81+
};
82+
83+
Blockly.Ruby.looks_show = function () {
84+
return 'show\n';
85+
};
86+
87+
Blockly.Ruby.looks_hide = function () {
88+
return 'hide\n';
89+
};
90+
91+
Blockly.Ruby.looks_gotofrontback = function (block) {
92+
const frontBack = block.getFieldValue('FRONT_BACK') || null;
93+
return `go_to_layer("${frontBack}")\n`;
94+
};
95+
96+
Blockly.Ruby.looks_goforwardbackwardlayers = function (block) {
97+
const layer = Blockly.Ruby.valueToCode(block, 'NUM', Blockly.Ruby.ORDER_NONE) || '0';
98+
const forwardBackward = block.getFieldValue('FORWARD_BACKWARD') || null;
99+
return `go_layer(${layer}, "${forwardBackward}")\n`;
100+
};
101+
102+
Blockly.Ruby.looks_costumenumbername = function (block) {
103+
const numberName = block.getFieldValue('NUMBER_NAME') || null;
104+
return [`costume_${numberName}`, Blockly.Ruby.ORDER_ATOMIC];
105+
};
106+
107+
Blockly.Ruby.looks_backdropnumbername = function (block) {
108+
const numberName = block.getFieldValue('NUMBER_NAME') || null;
109+
return [`backdrop_${numberName}`, Blockly.Ruby.ORDER_ATOMIC];
110+
};
111+
112+
Blockly.Ruby.looks_size = function () {
113+
return ['size', Blockly.Ruby.ORDER_ATOMIC];
114+
};
115+
116+
Blockly.Ruby.looks_switchbackdroptoandwait = function (block) {
117+
const backdrop = Blockly.Ruby.valueToCode(block, 'BACKDROP', Blockly.Ruby.ORDER_NONE) || null;
118+
return `switch_backdrop_to_and_wait(${backdrop})\n`;
119+
};
120+
121+
return Blockly;
122+
}

src/lib/ruby-generator/text.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Define Ruby with Text Blocks
3+
* @param {Blockly} Blockly The ScratchBlocks
4+
* @return {Blockly} Blockly defined Ruby generator.
5+
*/
6+
export default function (Blockly) {
7+
Blockly.Ruby.text = function (block) {
8+
const code = Blockly.Ruby.quote_(block.getFieldValue('TEXT'));
9+
return [code, Blockly.Ruby.ORDER_ATOMIC];
10+
};
11+
12+
return Blockly;
13+
}

0 commit comments

Comments
 (0)