diff --git a/src/lib/make-toolbox-xml.js b/src/lib/make-toolbox-xml.js index 94ffc44ab4126b1f1cf42e69a6556f65655104b4..608cf92b3c307efd54e34ae6aa2d26a19e747f6c 100644 --- a/src/lib/make-toolbox-xml.js +++ b/src/lib/make-toolbox-xml.js @@ -2,7 +2,8 @@ const categorySeparator = '<sep gap="36"/>'; const blockSeparator = '<sep gap="36"/>'; // At default scale, about 28px -const motion = ` +const motion = function (targetId) { + return ` <category name="Motion" colour="#4C97FF" secondaryColour="#3373CC"> <block type="motion_movesteps"> <value name="STEPS"> @@ -120,14 +121,16 @@ const motion = ` ${blockSeparator} <block type="motion_setrotationstyle"/> ${blockSeparator} - <block id="<TARGET_ID>_xposition" type="motion_xposition"/> - <block id="<TARGET_ID>_yposition" type="motion_yposition"/> - <block id="<TARGET_ID>_direction" type="motion_direction"/> + <block id="${targetId}_xposition" type="motion_xposition"/> + <block id="${targetId}_yposition" type="motion_yposition"/> + <block id="${targetId}_direction" type="motion_direction"/> ${categorySeparator} </category> -`; + `; +}; -const looks = ` +const looks = function (targetId) { + return ` <category name="Looks" colour="#9966FF" secondaryColour="#774DCB"> <block type="looks_sayforsecs"> <value name="MESSAGE"> @@ -229,15 +232,17 @@ const looks = ` </value> </block> ${blockSeparator} - <block id="<TARGET_ID>_costumeorder" type="looks_costumeorder"/> + <block id="${targetId}_costumeorder" type="looks_costumeorder"/> <block id="backdroporder" type="looks_backdroporder"/> <block id="backdropname" type="looks_backdropname"/> - <block id="<TARGET_ID>_size" type="looks_size"/> + <block id="${targetId}_size" type="looks_size"/> ${categorySeparator} </category> -`; + `; +}; -const sound = ` +const sound = function () { + return ` <category name="Sound" colour="#D65CD6" secondaryColour="#BD42BD"> <block type="sound_play"> <value name="SOUND_MENU"> @@ -284,9 +289,11 @@ const sound = ` <block id="volume" type="sound_volume"/> ${categorySeparator} </category> -`; + `; +}; -const events = ` +const events = function () { + return ` <category name="Events" colour="#FFD500" secondaryColour="#CC9900"> <block type="event_whenflagclicked"/> <block type="event_whenkeypressed"> @@ -317,9 +324,11 @@ const events = ` </block> ${categorySeparator} </category> -`; + `; +}; -const control = ` +const control = function () { + return ` <category name="Control" colour="#FFAB19" secondaryColour="#CF8B17"> <block type="control_wait"> <value name="DURATION"> @@ -354,9 +363,11 @@ const control = ` <block type="control_delete_this_clone"/> ${categorySeparator} </category> -`; + `; +}; -const sensing = ` +const sensing = function () { + return ` <category name="Sensing" colour="#4CBFE6" secondaryColour="#2E8EB8"> <block type="sensing_touchingobject"> <value name="TOUCHINGOBJECTMENU"> @@ -422,9 +433,11 @@ const sensing = ` <block type="sensing_dayssince2000"/> ${categorySeparator} </category> -`; + `; +}; -const operators = ` +const operators = function () { + return ` <category name="Operators" colour="#40BF4A" secondaryColour="#389438"> <block type="operator_add"> <value name="NUM1"> @@ -602,12 +615,15 @@ const operators = ` </block> ${categorySeparator} </category> -`; + `; +}; -const data = ` +const data = function () { + return ` <category name="Data" colour="#FF8C1A" secondaryColour="#DB6E00" custom="VARIABLE"> </category> -`; + `; +}; const xmlOpen = '<xml style="display: none">'; const xmlClose = '</xml>'; @@ -622,14 +638,14 @@ const makeToolboxXML = function (targetId, categoriesXML) { const everything = [ xmlOpen, - motion, gap, - looks, gap, - sound, gap, - events, gap, - control, gap, - sensing, gap, - operators, gap, - data + motion(targetId), gap, + looks(targetId), gap, + sound(targetId), gap, + events(targetId), gap, + control(targetId), gap, + sensing(targetId), gap, + operators(targetId), gap, + data(targetId) ]; if (categoriesXML) { @@ -637,9 +653,7 @@ const makeToolboxXML = function (targetId, categoriesXML) { } everything.push(xmlClose); - return everything.join('\n').split('<TARGET_ID>') - .join(targetId); // targetIds are designed to not break XML. - // @todo consider something less hacky? + return everything.join('\n'); }; export default makeToolboxXML;