-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
Scratch variables support special characters like "()".
But Project parsed wrong when Variables contain "()" .
This is my test code:
const { toScratchblocks } = require('parse-sb3-blocks');
const project = {"targets":[{"isStage":true,"name":"Stage","variables":{"`jEk@4|i[#Fk?(8x)AV.-my variable":["my variable",0],"wyhMB{kprZpl6JK?|A}c":["var(test)",0]},"lists":{},"broadcasts":{},"blocks":{},"comments":{},"currentCostume":0,"costumes":[{"name":"backdrop1","dataFormat":"svg","assetId":"cd21514d0531fdffb22204e0ec5ed84a","md5ext":"cd21514d0531fdffb22204e0ec5ed84a.svg","rotationCenterX":240,"rotationCenterY":180}],"sounds":[{"name":"pop","assetId":"83a9787d4cb6f3b7632b4ddfebf74367","dataFormat":"wav","format":"","rate":44100,"sampleCount":1032,"md5ext":"83a9787d4cb6f3b7632b4ddfebf74367.wav"}],"volume":100,"layerOrder":0,"tempo":60,"videoTransparency":50,"videoState":"on","textToSpeechLanguage":null},{"isStage":false,"name":"Sprite1","variables":{},"lists":{},"broadcasts":{},"blocks":{"(sSbmuP@#^jp$JTTMmST":{"opcode":"looks_say","next":null,"parent":"3xN|,lf_qLn;Y].JzKXQ","inputs":{"MESSAGE":[3,[12,"var(test)","wyhMB{kprZpl6JK?|A}c"],[10,"Hello!"]]},"fields":{},"shadow":false,"topLevel":false},"3xN|,lf_qLn;Y].JzKXQ":{"opcode":"event_whenflagclicked","next":"(sSbmuP@#^jp$JTTMmST","parent":null,"inputs":{},"fields":{},"shadow":false,"topLevel":true,"x":160,"y":109}},"comments":{},"currentCostume":0,"costumes":[{"name":"costume1","bitmapResolution":1,"dataFormat":"svg","assetId":"bcf454acf82e4504149f7ffe07081dbc","md5ext":"bcf454acf82e4504149f7ffe07081dbc.svg","rotationCenterX":48,"rotationCenterY":50},{"name":"costume2","bitmapResolution":1,"dataFormat":"svg","assetId":"0fb9be3e8397c983338cb71dc84d0b25","md5ext":"0fb9be3e8397c983338cb71dc84d0b25.svg","rotationCenterX":46,"rotationCenterY":53}],"sounds":[{"name":"Meow","assetId":"83c36d806dc92327b9e7049a565c6bff","dataFormat":"wav","format":"","rate":44100,"sampleCount":37376,"md5ext":"83c36d806dc92327b9e7049a565c6bff.wav"}],"volume":100,"layerOrder":1,"visible":true,"x":0,"y":0,"size":100,"direction":90,"draggable":false,"rotationStyle":"all around"}],"monitors":[{"id":"wyhMB{kprZpl6JK?|A}c","mode":"default","opcode":"data_variable","params":{"VARIABLE":"var(test)"},"spriteName":null,"value":0,"width":0,"height":0,"x":5,"y":5,"visible":true,"sliderMin":0,"sliderMax":100,"isDiscrete":true}],"extensions":[],"meta":{"semver":"3.0.0","vm":"2.3.0","agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"}}
// console.log(project)
project.targets.forEach(el=>{
if (el.blocks) {
Object.keys(el.blocks).forEach(key=>{
if (el.blocks[key].parent === null) {
console.log(toScratchblocks(key, el.blocks, 'en', { tabs: ' '.repeat(4) }))
}
})
}
})
And this is result:
when @greenFlag clicked
say (var(test\))

I think the correct result shoud be:
when @greenFlag clicked
say (var\(test\))
Metadata
Metadata
Assignees
Labels
No labels

