Skip to content

Commit 1857921

Browse files
authored
Merge pull request #50 from kchadha/allow-sprites-named-stage
Allow sprites named stage
2 parents 0f3a10d + 898a38d commit 1857921

File tree

7 files changed

+135
-5
lines changed

7 files changed

+135
-5
lines changed

lib/sb3_definitions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@
348348
"properties": {
349349
"name": {
350350
"type": "string",
351-
"not": {"enum": ["Stage", "stage"]}
351+
"not": {"enum": ["_stage_"]}
352352
},
353353
"isStage": {
354354
"type": "boolean",

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
"gzip-js": "0.3.2"
2727
},
2828
"devDependencies": {
29-
"@commitlint/cli": "6.1.0",
30-
"@commitlint/config-conventional": "6.1.0",
31-
"@commitlint/travis-cli": "6.1.0",
29+
"@commitlint/cli": "7.2.1",
30+
"@commitlint/config-conventional": "7.1.2",
31+
"@commitlint/travis-cli": "7.2.1",
3232
"babel-eslint": "8.2.2",
3333
"benchmark": "^2.1.1",
3434
"cz-conventional-changelog": "^2.1.0",

test/fixtures/data.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,7 @@ module.exports = {
5454
sprite2: sprite2,
5555
layerOrderSB3Json: fs.readFileSync(path.resolve(__dirname, './data/_layer_ordering.json')),
5656
invalidStageLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_stage_layer.json')),
57-
invalidSpriteLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_sprite_layer.json'))
57+
invalidSpriteLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_sprite_layer.json')),
58+
invalidSpriteNameSB3Json: fs.readFileSync(
59+
path.resolve(__dirname, './data/invalid/_invalid_spriteNamed_stage_.json'))
5860
};
41 KB
Binary file not shown.
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
{
2+
"targets": [
3+
{
4+
"isStage": true,
5+
"name": "Stage",
6+
"variables": {
7+
"`jEk@4|i[#Fk?(8x)AV.-my variable": [
8+
"my variable",
9+
0
10+
]
11+
},
12+
"lists": {},
13+
"broadcasts": {},
14+
"blocks": {},
15+
"comments": {},
16+
"currentCostume": 0,
17+
"costumes": [
18+
{
19+
"assetId": "cd21514d0531fdffb22204e0ec5ed84a",
20+
"name": "backdrop1",
21+
"md5ext": "cd21514d0531fdffb22204e0ec5ed84a.svg",
22+
"dataFormat": "svg",
23+
"rotationCenterX": 240,
24+
"rotationCenterY": 180
25+
}
26+
],
27+
"sounds": [
28+
{
29+
"assetId": "83a9787d4cb6f3b7632b4ddfebf74367",
30+
"name": "pop",
31+
"dataFormat": "wav",
32+
"format": "",
33+
"rate": 44100,
34+
"sampleCount": 1032,
35+
"md5ext": "83a9787d4cb6f3b7632b4ddfebf74367.wav"
36+
}
37+
],
38+
"volume": 100,
39+
"layerOrder": 0,
40+
"tempo": 60,
41+
"videoTransparency": 50,
42+
"videoState": "on",
43+
"textToSpeechLanguage": null
44+
},
45+
{
46+
"isStage": false,
47+
"name": "_stage_",
48+
"variables": {},
49+
"lists": {},
50+
"broadcasts": {},
51+
"blocks": {},
52+
"comments": {},
53+
"currentCostume": 0,
54+
"costumes": [
55+
{
56+
"assetId": "b7853f557e4426412e64bb3da6531a99",
57+
"name": "costume1",
58+
"bitmapResolution": 1,
59+
"md5ext": "b7853f557e4426412e64bb3da6531a99.svg",
60+
"dataFormat": "svg",
61+
"rotationCenterX": 48,
62+
"rotationCenterY": 50
63+
},
64+
{
65+
"assetId": "e6ddc55a6ddd9cc9d84fe0b4c21e016f",
66+
"name": "costume2",
67+
"bitmapResolution": 1,
68+
"md5ext": "e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg",
69+
"dataFormat": "svg",
70+
"rotationCenterX": 46,
71+
"rotationCenterY": 53
72+
}
73+
],
74+
"sounds": [
75+
{
76+
"assetId": "83c36d806dc92327b9e7049a565c6bff",
77+
"name": "Meow",
78+
"dataFormat": "wav",
79+
"format": "",
80+
"rate": 44100,
81+
"sampleCount": 37376,
82+
"md5ext": "83c36d806dc92327b9e7049a565c6bff.wav"
83+
}
84+
],
85+
"volume": 100,
86+
"layerOrder": 1,
87+
"visible": true,
88+
"x": 0,
89+
"y": 0,
90+
"size": 100,
91+
"direction": 90,
92+
"draggable": false,
93+
"rotationStyle": "all around"
94+
}
95+
],
96+
"monitors": [],
97+
"extensions": [],
98+
"meta": {
99+
"semver": "3.0.0",
100+
"vm": "0.2.0-prerelease.20181218172555",
101+
"agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
102+
}
103+
}

test/integration/stress.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@ test('sb2', function (t) {
3030
}
3131
});
3232

33+
test('sb3', function (t) {
34+
var set = data.sb3;
35+
t.plan(set.length * 5);
36+
for (var i in data.sb3) {
37+
parser(data.sb3[i], false, function (err, result) {
38+
t.equal(err, null);
39+
t.equal(Array.isArray(result), true);
40+
var res = result[0];
41+
var possibleZip = result[1];
42+
t.type(res, 'object');
43+
t.type(res.targets, 'object');
44+
t.equal(possibleZip instanceof JSZip, true);
45+
});
46+
}
47+
});
48+
3349
test('json', function (t) {
3450
var set = data.json;
3551
t.plan(set.length * 6);

test/unit/validate.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,12 @@ test('sb3 json with invalid layerOrder prop for sprite', function (t) {
9797
t.end();
9898
});
9999
});
100+
101+
// Sprites should not be named _stage_
102+
test('sb3 json with invalid sprite name', function (t) {
103+
validate(false, JSON.parse(data.invalidSpriteNameSB3Json), function (err, res) {
104+
t.type(err, 'object');
105+
t.type(res, 'undefined');
106+
t.end();
107+
});
108+
});

0 commit comments

Comments
 (0)