Skip to content

Commit 99c4f51

Browse files
authored
Merge pull request #231 from /issues/230
renamed self.color= to self.pen_color=, and others too.
2 parents e20f092 + 05ba586 commit 99c4f51

File tree

3 files changed

+181
-17
lines changed

3 files changed

+181
-17
lines changed

src/lib/ruby-generator/pen.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ export default function (Generator) {
2828
Generator.pen_changePenColorParamBy = function (block) {
2929
const colorParam = Generator.valueToCode(block, 'COLOR_PARAM', Generator.ORDER_NONE) || null;
3030
const value = Generator.valueToCode(block, 'VALUE', Generator.ORDER_NONE) || 0;
31-
return `self.${colorParam} += ${value}\n`;
31+
return `self.pen_${colorParam} += ${value}\n`;
3232
};
3333

3434
Generator.pen_setPenColorParamTo = function (block) {
3535
const colorParam = Generator.valueToCode(block, 'COLOR_PARAM', Generator.ORDER_NONE) || null;
3636
const value = Generator.valueToCode(block, 'VALUE', Generator.ORDER_NONE) || 0;
37-
return `self.${colorParam} = ${value}\n`;
37+
return `self.pen_${colorParam} = ${value}\n`;
3838
};
3939

4040
Generator.pen_menu_colorParam = function (block) {

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

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,19 @@ const PenConverter = {
3030
}
3131
break;
3232
case 'pen_color=':
33-
if (args.length === 1 && this._isColorOrBlock(args[0])) {
34-
block = this._createBlock('pen_setPenColorToColor', 'statement');
35-
this._addFieldInput(block, 'COLOR', 'colour_picker', 'COLOUR', args[0], '#43066f');
36-
}
37-
break;
38-
case 'color=':
39-
case 'saturation=':
40-
case 'brightness=':
41-
case 'transparency=':
33+
case 'pen_saturation=':
34+
case 'pen_brightness=':
35+
case 'pen_transparency=':
4236
if (args.length === 1 && this._isNumberOrBlock(args[0])) {
4337
block = this._createBlock('pen_setPenColorParamTo', 'statement');
4438
this._addFieldInput(
4539
block, 'COLOR_PARAM', 'pen_menu_colorParam', 'colorParam',
46-
name.replace('=', ''), 'color'
40+
name.replace('pen_', '').replace('=', ''), 'color'
4741
);
4842
this._addNumberInput(block, 'VALUE', 'math_number', args[0], 50);
43+
} else if (name == 'pen_color=' && args.length === 1 && this._isColorOrBlock(args[0])) {
44+
block = this._createBlock('pen_setPenColorToColor', 'statement');
45+
this._addFieldInput(block, 'COLOR', 'colour_picker', 'COLOUR', args[0], '#43066f');
4946
}
5047
break;
5148
case 'pen_size=':
@@ -67,16 +64,22 @@ const PenConverter = {
6764
switch (code) {
6865
case 'self.pen_size':
6966
block = this._changeBlock(lh, 'pen_changePenSizeBy', 'statement');
67+
delete this._context.blocks[block.inputs.STATEMENT.block];
68+
delete block.inputs.STATEMENT;
69+
7070
this._addNumberInput(block, 'SIZE', 'math_number', rh, 1);
7171
break;
72-
case 'self.color':
73-
case 'self.saturation':
74-
case 'self.brightness':
75-
case 'self.transparency':
72+
case 'self.pen_color':
73+
case 'self.pen_saturation':
74+
case 'self.pen_brightness':
75+
case 'self.pen_transparency':
7676
block = this._changeBlock(lh, 'pen_changePenColorParamBy', 'statement');
77+
delete this._context.blocks[block.inputs.STATEMENT.block];
78+
delete block.inputs.STATEMENT;
79+
7780
this._addFieldInput(
7881
block, 'COLOR_PARAM', 'pen_menu_colorParam', 'colorParam',
79-
code.replace('self.', ''), 'color'
82+
code.replace('self.pen_', ''), 'color'
8083
);
8184
this._addNumberInput(block, 'VALUE', 'math_number', rh, 10);
8285
break;
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
import RubyToBlocksConverter from '../../../../src/lib/ruby-to-blocks-converter';
2+
import {
3+
convertAndExpectToEqualBlocks,
4+
convertAndExpectRubyBlockError,
5+
rubyToExpected,
6+
expectedInfo
7+
} from '../../../helpers/expect-to-equal-blocks';
8+
9+
describe('RubyToBlocksConverter/Pen', () => {
10+
let converter;
11+
let target;
12+
let code;
13+
let expected;
14+
15+
beforeEach(() => {
16+
converter = new RubyToBlocksConverter(null);
17+
target = null;
18+
code = null;
19+
expected = null;
20+
});
21+
22+
test('pen_setPenColorToColor', () => {
23+
code = 'self.pen_color = "#e36e1a"';
24+
expected = [
25+
{
26+
opcode: 'pen_setPenColorToColor',
27+
inputs: [
28+
{
29+
name: 'COLOR',
30+
block: {
31+
opcode: 'colour_picker',
32+
fields: [
33+
{
34+
name: 'COLOUR',
35+
value: '#e36e1a'
36+
}
37+
],
38+
shadow: true
39+
}
40+
}
41+
]
42+
}
43+
];
44+
convertAndExpectToEqualBlocks(converter, target, code, expected);
45+
46+
[
47+
'self.pen_color = "10"',
48+
'self.pen_color = :symbol',
49+
'self.pen_color = abc'
50+
].forEach(s => {
51+
convertAndExpectRubyBlockError(converter, target, s);
52+
});
53+
});
54+
55+
const colorParamNames = [
56+
'color',
57+
'saturation',
58+
'brightness',
59+
'transparency'
60+
];
61+
62+
colorParamNames.forEach(colorParamName => {
63+
const colorParam = {
64+
name: 'COLOR_PARAM',
65+
block: {
66+
opcode: 'pen_menu_colorParam',
67+
fields: [
68+
{
69+
name: 'colorParam',
70+
value: `${colorParamName}`
71+
}
72+
],
73+
shadow: true
74+
}
75+
};
76+
77+
describe(colorParamName, () => {
78+
test('pen_changePenColorParamBy', () => {
79+
code = `self.pen_${colorParamName} += 10`;
80+
expected = [
81+
{
82+
opcode: 'pen_changePenColorParamBy',
83+
inputs: [
84+
colorParam,
85+
{
86+
name: 'VALUE',
87+
block: expectedInfo.makeNumber(10)
88+
}
89+
]
90+
}
91+
];
92+
convertAndExpectToEqualBlocks(converter, target, code, expected);
93+
94+
code = `self.pen_${colorParamName} += y`;
95+
expected = [
96+
{
97+
opcode: 'pen_changePenColorParamBy',
98+
inputs: [
99+
colorParam,
100+
{
101+
name: 'VALUE',
102+
block: rubyToExpected(converter, target, 'y')[0],
103+
shadow: expectedInfo.makeNumber(10)
104+
}
105+
]
106+
}
107+
];
108+
convertAndExpectToEqualBlocks(converter, target, code, expected);
109+
110+
[
111+
`self.pen_${colorParamName} += "10"`,
112+
`self.pen_${colorParamName} += :symbol`,
113+
`self.pen_${colorParamName} += abc`
114+
].forEach(s => {
115+
convertAndExpectRubyBlockError(converter, target, s);
116+
});
117+
});
118+
119+
test('pen_setPenColorParamTo', () => {
120+
code = `self.pen_${colorParamName} = 50`;
121+
expected = [
122+
{
123+
opcode: 'pen_setPenColorParamTo',
124+
inputs: [
125+
colorParam,
126+
{
127+
name: 'VALUE',
128+
block: expectedInfo.makeNumber(50)
129+
}
130+
]
131+
}
132+
];
133+
convertAndExpectToEqualBlocks(converter, target, code, expected);
134+
135+
code = `self.pen_${colorParamName} = y`;
136+
expected = [
137+
{
138+
opcode: 'pen_setPenColorParamTo',
139+
inputs: [
140+
colorParam,
141+
{
142+
name: 'VALUE',
143+
block: rubyToExpected(converter, target, 'y')[0],
144+
shadow: expectedInfo.makeNumber(50)
145+
}
146+
]
147+
}
148+
];
149+
convertAndExpectToEqualBlocks(converter, target, code, expected);
150+
151+
[
152+
`self.pen_${colorParamName} = "10"`,
153+
`self.pen_${colorParamName} = :symbol`,
154+
`self.pen_${colorParamName} = abc`
155+
].forEach(s => {
156+
convertAndExpectRubyBlockError(converter, target, s);
157+
});
158+
});
159+
});
160+
});
161+
});

0 commit comments

Comments
 (0)