Skip to content

Commit 07042e2

Browse files
authored
Merge pull request #104 from smalruby/issue/92
isStageがtrueの時はSprite.newの代わりにStage.newを出力する closes #92
2 parents 48cf0e9 + 2239604 commit 07042e2

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

src/lib/ruby-generator/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,12 @@ export default function (Blockly) {
234234

235235
let code = this.hashToCode(attributes, ': ', false);
236236
if (code.length > 0) {
237-
code = `,\n${this.prefixLines(code, ' ')}`;
237+
const indent = renderedTarget.isStage ? ' ' : ' ';
238+
code = `,\n${this.prefixLines(code, indent)}`;
238239
}
240+
const klass = renderedTarget.isStage ? 'Stage' : 'Sprite';
239241
const name = renderedTarget.sprite.name;
240-
return `Sprite.new(${this.quote_(name)}${code})`;
242+
return `${klass}.new(${this.quote_(name)}${code})`;
241243
};
242244

243245
Blockly.Ruby.characterStack = function () {

test/unit/lib/ruby-generator.test.jsx

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,5 +276,66 @@ describe('RubyGenerator', () => {
276276
const expected = `Sprite.new(${Ruby.quote_(spriteName)})`;
277277
expect(Ruby.spriteNew(renderedTarget)).toEqual(expected);
278278
});
279+
280+
test('the Stage.new instead of the Sprite.new if stage', () => {
281+
Object.assign(renderedTarget, {
282+
isStage: true
283+
});
284+
const expected = `Stage.new(${Ruby.quote_(spriteName)},
285+
x: ${renderedTarget.x},
286+
y: ${renderedTarget.y},
287+
direction: ${renderedTarget.direction},
288+
visible: ${!!renderedTarget.visible},
289+
size: ${renderedTarget.size},
290+
current_costume: ${renderedTarget.currentCostume - 1},
291+
costumes: [
292+
{
293+
asset_id: "01ae57fd339529445cb890978ef8a054",
294+
name: "Costume1",
295+
bitmap_resolution: 1,
296+
md5: "01ae57fd339529445cb890978ef8a054.svg",
297+
data_format: "svg",
298+
rotation_center_x: 47,
299+
rotation_center_y: 55
300+
},
301+
{
302+
asset_id: "3b6274510488d5b26447c1c266475801",
303+
name: "Costume2",
304+
bitmap_resolution: 1,
305+
md5: "3b6274510488d5b26447c1c266475801.svg",
306+
data_format: "svg",
307+
rotation_center_x: 65,
308+
rotation_center_y: 61
309+
}
310+
],
311+
rotation_style: :left_right,
312+
variables: [
313+
{
314+
name: "Variable1",
315+
value: 10
316+
},
317+
{
318+
name: "Variable2"
319+
},
320+
{
321+
name: "Variable3",
322+
value: "abc"
323+
}
324+
],
325+
lists: [
326+
{
327+
name: "List1",
328+
value: [1, 2, 3]
329+
},
330+
{
331+
name: "List2"
332+
},
333+
{
334+
name: "List3",
335+
value: ["a", "b", "c"]
336+
}
337+
])`;
338+
expect(Ruby.spriteNew(renderedTarget)).toEqual(expected);
339+
});
279340
});
280341
});

0 commit comments

Comments
 (0)